Введение 3
1 Описание предметной области 5
1.1 Понятие кластерного анализа 5
1.2 Известные методы применения кластерного анализа 16
1.3 Постановка задачи на проектирование 21
2 Выбор средств разработки и проектирование программного средства .... 24
2.1 Выбор языка и среды программирования 24
2.2 Описание основных алгоритмов 31
Процедура вычисления статистики (вызывается из GetClusters) 35
2.3 Разработка структуры программы 35
3 Анализ полученного решения 42
3.1 Описание работы программы 42
3.2 Сравнительный анализ рассмотренных методов 43
Заключение 54
Список использованной литературы 58
Приложение
В настоящее время кластерный анализ, позволяющий выделять однородные группы объектов, находит все более широкое применение в анализе данных экологического мониторинга. Применение методов кластеризации позволяет понять структуру данных; упростить дальнейшую обработку, используя различные методы анализа для каждого кластера; сократить исходную выборку, оставив по одному наиболее типичному представителю каждой группы; выявить новизну, нетипичные объекты, которые не удаётся присоединить ни к одному из классов, сформулировать или проверить гипотезы на основании полученных результатов.
Результаты, полученные различными методами кластерного анализа, могут значительно отличаться друг от друга. В большинстве задач возникает проблема выбора оптимального числа кластеров, соответствующего природе изучаемых объектов. Поэтому одним из актуальных вопросов кластерного анализа является оценка качества полученных результатов и поиск разбиения, что наиболее соответствует структуре исследуемых данных.
Целью данной работы является разработка информационной технологии кластерного анализа, которая позволит автоматизировать процесс принятия решений в условиях невозможности привлечения экспертов предметной области либо отсутствия информации об ожидаемых результатах.
В настоящий момент в литературе существует множество функционалов и индексов качества, позволяющие в количественном виде оценивать соответствие исходного разбиения естественной структуре данных, а также сравнивать результаты, полученные разными методами или при различных значениях параметров [1, 3]. Определение функционалов качества главным образом основывается на таких критериях как компактность и обособленность кластеров. Однако в силу того, что различные понятия кластера и однородности заложены в каждый из функционалов, они довольно часто демонстрируют совершенно разные несогласованные результаты.
В данной работе предлагается информационная технология, которая позволяет учитывать результаты различных функционалов качества одновременно с помощью методов теории принятия решений, что обеспечивает более точную оценку результатов. Технология состоит из следующих этапов:
1. Проводим предварительную обработку данных: отбор
информативных признаков и стандартизацию.
2. Получаем разбиение объектов на кластеры разными методами или при различных значениях параметров, и рассматриваем их в качестве альтернатив.
3. Для каждой альтернативы вычисляем значение функционалов качества, которые считаем экспертами: сумма внутрикластерных дисперсий, сумма квадратов расстояний до центров кластеров, отношение среднего внутрикластерного и среднего межкластерного расстояний, сумма внутрикластерных расстояний
Теория клеточных автоматов имеет сравнительно небольшую, но достаточно продуктивную историю, основные этапы которой детально изложены в работе [11], в которой особое внимание уделено фундаментальным свойствам клеточных автоматов: параллельности и локальности.
Клеточный автомат состоит из конечной совокупности объектов (ячеек), как правило, образующих регулярную решетку. Другими словами, если не использовать строгие математические термины, это — совокупность ячеек, определенным образом соединенных между собой и образующих равномерную сетку (решетку). При этом состояние каждой i-й ячейки (клетки) в момент времени t характеризуется некоторым числом a(i, t) или набором чисел. Совокупность состояний всех клеток решетки называется состоянием решетки. В модели клеточного автомата каждое состояние решетки соответствует некоторому моменту времени, которое изменяется дискретно по шагам (итерациям).
Состояние решетки меняется в соответствии с некоторым законом, который называется правилом клеточного автомата. Правила определяют, какое состояние должно быть у клетки в следующий момент времени, в зависимости от состояний ее и некоторых других клеток в текущий момент времени.
Теоретически клеточные автоматы могут иметь любую размерность, однако чаще всего рассматривают одномерные и двумерные клеточные автоматы. В случае двумерного клеточного автомата решетка реализуется двумерным массивом и каждая клетка нумеруется упорядоченной парой чисел (a, b). В этом случае у каждой клетки ближайшими соседями
считаются либо клетки, имеющие с исходной общую сторону (окрестность фон Неймана), таких клеток будет 4, либо имеющие с исходной общую вершину (окрестность Мура), таких клеток будет 8.
Классическая модель клеточного автомата имеет следующие свойства:
• сеть клеточного автомата является однородной, т. е. правила изменения состояний для всех клеток одинаковы;
• множество состояний каждой клетки конечно;
• на клетку могут повлиять лишь клетки из ее окрестности, ближайшие соседи;
• состояния всех клеток меняются единовременно, в конце итерации.
В модели клеточного автомата каждая клетка изменяет свое состояние, взаимодействуя с ограниченным числом клеток, как правило, ближайшего окружения. Однако имеется возможность одновременного (параллельного) изменения состояния всех клеток, всей решетки на основе общего правила клеточного автомата. Это свойство позволяет при моделировании связывать процессы, происходящие на микроуровне, с изменениями процессов, про¬текающими на макроуровне. Это важнейшее свойство клеточных автоматов, которое позволяет их успешно использовать для моделирования систем, в которых значительную роль играют пространственные взаимодействия между элементами. Они хорошо зарекомендовали себя при моделировании динамики жидкости и газа в различных средах, в пограничных зонах, при моделировании систем, состоящих из большого числа частиц, взаимодействующих друг с другом нелинейно, при описании возникновения коллективныхявлений — турбулентности, упорядочения, хаоса, нарушения симметрии, фрактальности и других.
В последние годы клеточные автоматы находят свое применение при мо-делировании социальных явлений как чисто теоретические модели для ка-чественного анализа процессов, так и для численного прогнозирования. Не-которые примеры клеточных автоматов, применяемых в задачах социологии, приведены в работе [9].
Результаты фундаментальных исследований в области клеточных автоматов представлены в работе [23], в которой сделан акцент на
возможности использования клеточных автоматов при моделировании физических, био-логических и вычислительных систем, в силу простоты реализации моделей, точности математических вычислений и способности моделей к моделированию сложных систем.
В целом у моделей клеточных автоматов достаточно много положительных качеств, которые, несомненно, влияют на активность их использования в различных областях науки. Однако есть и определенные негативные моменты, сдерживающие развитие этого направления математического моделирования, среди которых следует отметить слабую общую теоретическую базу клеточных автоматов, недостаточную разработку вопросов сходимости вычислительных экспериментов, вопросов устойчивости полученных численных решений.
В настоящее время существует достаточно много различных классификаций клеточных автоматов, из которых наиболее известна классификация Вольфрама, основанная на анализе возможной сложности поведения клеточного автомата. Классифицировать клеточные автоматы можно по разным признакам, в частности, по правилам изменения состояния клеток можно разделить автоматы на детерминированные и вероятностные. В детерминированных клеточных автоматах состояние каждой клетки в момент времени t + 1 определяется однозначно состоянием этой клетки и ее ближайших соседей в момент времени t.
Вероятностный клеточный автомат, описывающий диффузию инноваций, представлен в работе [6]. Каждой клетке соответствует агент, который может принять инновацию. Клетка может находиться в двух состояниях: S: — новинка принята, S0 — новинка не принята, состояние S: не может быть изменено. Автомат принимает или не принимает новинку, ориентируясь на мнение восьми или четырех ближайших соседей в окрестности данной клетки (окрестность Мура или Неймана). В зависимости от количества n приверженцев новинки существует пороговая функция P(n) — вероятность ее принятия. Для каждой клетки автомата на каждом шаге
(такте) генерируется случайное число х, определяется количество соседей п, принявших инновацию, проверяется неравенство х < P(n), если оно
выполняется, клетка принимает инновацию, то есть переходит в состояние Sr
Подобный автомат может быть использован для моделирования диффузии локальных инноваций в рамках одного города или района. Вероятностный клеточный автомат хорошо моделирует диффузию инноваций для сетевого маркетинга.
1. Krylov V.N. Contour images segmentation in space of wavelet transform with the use of lifting / V.N. Krylov, M. V. Polyakova // Optical- electronic informatively-power technologies. - 2007. - № 2 (12). - Р. 48 - 58.
2. Shcherbakova G. Electronic Apparatus Automation Inspection with Adaptive Clustering in Wavelet Domain. / G. Shcherbakova, V. Krylov, S. Antoshchuk // Досвщ розроб- ки та застосування приладо-технолоычних САПР в мт- роелектронщ: мiжнар. наук.-техн. конф., 24—28 лют. 2009р., тези доп. - Ллв, 2009. - С. 153 - 154.
3. А. Васильев: Самоучитель C++ с примерами и задачами, Москва, Издательство: Наука и Техника, 2015 г., 480 стр.
4. Алексей Архангельский: Программирование в Delphi для Windows: Версии 2006, 2007, Turbo Delphi, Издательство: Бином, Москва, 2013 г., 1248 стр.
5. Алексей Архангельский: Программирование в Delphi. Учебник по классическим версиям Delphi, Издательство: Бином, Москва, 2013 г., 816 стр.
6. Алексей Сурядный: Microsoft Access 2010. Лучший самоучитель, Издательство: Астрель, Москва,, 2012 г., 448 стр.
7. Андрей Сеннов: C31 Access 2010. Учебный курс, Издательство: Питер, Москва, 2010 г., 288 стр.
8. Аникеев, Маркин: Разработка приложений баз данных в Delphi. Самоучитель, Издательство: Диалог-МИФИ, Москва, 2013 г., 160 стр.
9. Арнольд Виллемер: Программирование на С++, Москва, Издательство: Эксмо, 2013 г., 528 стр.
10. Бекаревич, Пушкина: Самоучитель Access 2010, Издательство: BHV, Москва, 2011 г., 432 стр.
11. Болтян А.В. Прогнозирование и оценка параметров продукции / А.В. Болтян, И.А. Горобец - Донецк: Норд-Пресс, 2004. - 192 с.
12. В. Тимофеев: Самоучитель C++ как он есть, Москва,
Издательство: Бином, 2009 г., 336 стр.
13. Геннадий Гурвиц: Microsoft Access 2010. Разработка приложений на реальном примере, Издательство: BHV, Москва, 2010 г., 496 стр.
14. Герберт Шилдт: С++ для начинающих, Москва, Издательство: Эком, 2010 г., 640 стр.
15. Дмитрий Осипов: Delphi. Программирование для Windows, OS X, iOS, Издательство: BHV, Москва, 2014 г., 464 стр.
16. Дмитрий Осипов: Базы данных и Delphi. Теория и практика, Издательство: BHV, 2011 г., Издательство: BHV, Москва, 2010 г., 752 стр.
17. Дуда Р. Распознавание образов и анализ сцен / Р. Дуда, П. Харт. - М.: Мир, 1976. - 509 с.
18. Е. Санников: Курс практического программирования в Delphi. Объектно - ориентированное программирование. Практикум, Издательство: Солон-пресс, 2013 г., Москва, 188 стр.
19. Жулинский С.Ф. Статистические методы в со-временном менеджменте качества / С.Ф. Жулинский, Е.С. Новиков, В.Я. Поспелов - М.: Фонд «Новое тысячелетие», 2001.- 208 с.
20. Контроль качества с помощью персональных компьютеров / Т. Макино, М. Охаси, Х. Докэ, К. Макино; Пер. с яп. А.Б.Орфенова. Под ред. Ю.П.Адлера. - М.: Ма-шиностроение, 1991. - 224 с.
21. Крилов В.Н. Cубградieнтний теративний метод оптимiзацil в просторi вейвлет-перетворення./ В.Н. Крилов, Г.Ю. Щербакова // Збiрн. наук. праць Втськового тституту Киьвського нац. ун-ту iм. Т. Шевченка. - К., 2008. - Вип. 12. - С. 56 - 60.
22. Крисилов В.А. Решение задачи таксономии на основе гипотезы компактности при анализе данных / В.А. Крисилов, Н.О. Блудян, С.А. Юдин // Искусственный интеллект. - 2005. - № 4. - С. 699 - 707.
23. М. Полубенцева: С/С++ Процедурное программирование,
Москва, Издательство: BHV, 2014 г., 432 стр.
24. Никита Культин: Delphi в задачах и примерах, Издательство: BHV, Москва, 2012 г., 288 стр.
25. Никита Культин: Основы программирования в Delphi XE, Издательство: BHV, Москва, 2011 г., 416 стр.
26. Николай Мартынов: Программирование для Windows на СС++. В 2-х томах, Москва, Издательство: Бином, 2013 г., 480 стр.
27. Полак Э. Численные методы оптимизации /Э. Полак.. - М.: Мир, 1976. — 509 с.
28. Роберт Лафоре: Объектно-ориентированное программирование в С++, Москва, Издательство: Питер, 2013 г., 928 стр.
29. Скотт Мейерс: Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ, Москва, Издательство: ДМК-Пресс, 2014 г., 294 стр.
30. Скотт Мэйерс: Эффективное использование С++. 55 верных
способов улучшить структуру и код ваших программ, Москва, Издательство: ДМК-Пресс, 2014 г., 300 стр.
31. Статистические методы повышения качества: Пер. с англ. и доп. Ю.П.Адлера, Л.А.Конаревой / Под ред. Х. Кумэ. - М.: Финансы и статистика, 1990.- 304 с.
32. Статистические методы. Индексы возможностей процессов.
ГОСТ Р50779.44-2001.- [Начало действия 2002-07-01]. М.: Госстандарт
России 2001.
33. Статистические методы. Контрольные карты Шухарта. (ISO
8258-91) ГОСТ Р50779.42-99. - [Начало действия 1999-04-13]. М.:
Госстандарт России 1999. - 36 с.
34. Статистические методы. Контрольные карты. Общее руководство и введение. (ISO 7870-93) ГОСТ Р50779.40-96. - [Начало действия 1996-07¬01]. М.: Гос-стандарт России 1997.
35. Статистические методы. Статистическое управление качеством. Термины и определения (ISO 3534.2-93):ГОСТ Р50779.11 - 2000. - [Начало действия 2001-07-01]. М.: Госстандарт России 2000.
36. Стефан Дьюхэрст: Скользкие места С++. Как избежать проблем при проектировании и компиляции ваших программ, Москва, Издательство: ДМК-Пресс, 2014 г., 264 стр.
37. Ховард, Лебланк, Виега: Как написать безопасный код на С++, Java, Perl, PHP, ASP.NET, - Москва, Москва, Издательство: ДМК-Пресс, 2014 г., 288 стр.
38. Цыпкин Я.З. Адаптация и обучение в автомати-ческих системах. / Я.З. Цыпкин - М.: Наука, 1968. - 400 с.
39. Энтони Уильямс: Параллельное программирование на С++ в действии. Практика разработки многопоточных программ, Москва, Издательство: ДМК-Пресс, 2014 г., 672 стр.
40. Юрий Ревич: Нестандартные приемы программирования на Delphi, Издательство: BHV, Москва, 2008 г., 560 стр.