Санкт-Петербургский государственный университет Математико-Механический Факультет Кафедра Информатики Любимов Дмитрий Александрович Разработка системы анализа алгоритмов кластеризации Дипломная Работа Допущен к защите Зав. Кафедрой: Профессор, доктор физ-мат наук Косовский Н.К. Научный руководитель Аспирант Шалымов Д.С. Рецензент: Профессор, доктор физ-мат наук Граничин О.Н. Санкт–Петербург 2009 Оглавление ОГЛАВЛЕНИЕ ..................................................................................................... 2 ВВЕДЕНИЕ.......................................................................................................... 3 ГЛАВА 1: АЛГОРИТМЫ КЛАСТЕРИЗАЦИИ ......................................................... 4 1.1 Задача кластеризации ................................................................................. 4 1.2 Средства анализа алгоритмов кластеризации данных ............................. 9 1.3 Постановка задачи..................................................................................... 12 ГЛАВА 2: ТЕОРЕТИЧЕСКИЕ ОСНОВАНИЯ РАБОТЫ .......................................... 15 2.1 Индексные методы оценки кластеризации ............................................. 15 2.2 Анализ главных компонент ....................................................................... 18 ГЛАВА 3: ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ........................................................ 21 3.1 CAMA .......................................................................................................... 21 3.2 Примеры .................................................................................................... 26 ЗАКЛЮЧЕНИЕ .................................................................................................. 29 СПИСОК ЛИТЕРАТУРЫ..................................................................................... 30 2 Введение Кластеризация – задача разбиения заданного множества объектов (данных) на различные подмножества, называемые кластерами, таким образом, чтобы кластеры были непересекающимися и состояли из схожих по свойствам объектов, при этом объекты разных классов отличались. Различные определения кластера могут быть сформулированы в зависимости от цели анализа. В общем представлении, кластер – группа объектов схожих между собой по определенным признакам. В качестве признаков рассматриваются некоторые количественные характеристики объектов. В метрических пространствах “схожесть” векторов, как правило, определяется через норму расстояния. Может рассматриваться как непосредственно взаимное расстояние между векторами, так и расстояние между векторами и некоторым формирующим кластер объектом. Кластеризация применяется в очень широком спектре научных областей: статистика, финансовая математика, оптимизация, в информатике для "интеллектуального" анализа данных, сегментации изображений, распознавания образов, сжатия данных и др. В зависимости от особенностей конкретной задачи кластеризация может иметь различные цели: – определение структуры множества данных, путем разбиения его на группы схожих объектов; – выделение объектов, не подходящих ни к одному из кластеров; – упрощение работы с данными, когда рассматриваются не целые классы данных, а лишь типичных представителей классов. 3 При таком широком использовании кластеризации возникает необходимость в программных средствах, предоставляющих гибкие возможности для анализа как данных, так и работы алгоритмов, а также для удобного представления результатов. Существующие на данный момент подобные программные комплексы в большинстве случаев являются либо частными исследовательскими работами (в основном написанными на Matlab), обычно обладающими фиксированными наборами алгоритмов, либо коммерческими приложениями, рассчитанными на корпоративных клиентов, зачастую недоступными для индивидуальных, в том числе студенческих, исследований. Особенно важным фактором является недоступность реализации своих алгоритмов на подобных системах. Целью данной работы была разработка системы, предоставляющей свободно распространяемые программные средства с открытым кодом для анализа алгоритмов кластеризации с поддержкой загрузки пользовательских алгоритмов и данных, а также визуализацией работы алгоритмов. В главе 1 рассматриваются теоретические аспекты задачи кластеризации, а также существующие средства анализа алгоритмов и их недостатки, формулируется решаемая в данной работе задача. В главе 2 описаны используемые методы анализа алгоритмов кластеризации, а так же алгоритм выделения главных компонент, применяемый для визуального представления в случае многомерных пространств. В главе 3 описаны особенности программной реализации и архитектуры, приведены примеры использования разработанной системы, а в заключении намечены перспективы ее развития. 4 Глава 1. Алгоритмы кластеризации 1.1 Задача кластеризации Кластеризация – это разбиение множества объектов на некоторые однородные подмножества (кластеры), параметры которых изначально неизвестны. Для конкретной задачи количество кластеров может быть произвольным или фиксированным. Для кластера характерны внутренняя однородность (объекты одного класса схожи между собой по определенным признакам) и внешняя изолированность(объекты разных классов существенно отличаются). Пусть имеется набор данных Xn = {x1,...,xn} X (n>0) и функция, определяющая степень сходства объектов, в большинстве случаев это функция расстояния между объектами ρ(xi , xj). Требуется разбить последовательность Xn на непересекающиеся подмножества (кластеры) так, чтобы каждый кластер состоял из объектов, близких по метрике ρ, а объекты разных кластеров существенно отличались. Алгоритм кластеризации – это функция A: X → Y которая любому объекту x X ставит в соответствие метку кластера 𝑦𝑖 Y. Чаще всего множество Y заранее не известно и дополнительной задачей является определение оптимального числа кластеров с точки зрения того или иного показателя качества кластеризации. Конечной целью процесса кластеризации является получение содержательных сведений о структуре исследуемых данных, что, как правило, является начальным этапом их более детального анализа. В результате применения различных методов кластеризации могут быть получены неодинаковые результаты, это является следствием особенности 5 работы того или иного алгоритма, которые следует учитывать при выборе метода кластеризации для конкретной задачи. Следует учитывать, что кластерный анализ сопряжен с рядом сложностей: – выбор метода кластеризации достаточно эффективного для решения определенной задачи, требует достаточного знания алгоритмов и условий их применения; – выбор характеристик, на основании которых проводится кластеризация: метрики, изначальных значений центров, условий остановки алгоритма. Изначально некорректный выбор приводит к неадекватному разбиению множества на классы; – выбор изначального числа кластеров. Если нет никаких сведений относительно возможного числа кластеров, необходимо осуществить ряд экспериментов и проанализировать полученные результаты. – интерпретация результатов кластеризации. Конкретные методы стремятся создавать кластеры определенных форм и свойств, при этом в исследуемом наборе подобных данных их может и не быть. Основные используемые алгоритмы кластеризации обычно делятся на два вида: иерархические и неиерархические. Иерархические алгоритмы Принцип работы данных методов заключается в последовательном объединении маленьких кластеров в большие или наоборот разделении больших кластеров на маленькие. 6 Соответственно, либо в начале работы алгоритма все объекты являются отдельными кластерами и на последующих шагах наиболее похожие объекты объединяются в кластеры до тех пор, пока все объекты не объединятся в один. Либо изначально все объекты принадлежат одному кластеру, который на последующих шагах разделяется на меньшие кластеры, в результате чего образуется последовательность разделяющихся подмножеств. Преимущество этой группы методов – их наглядность и возможность получить детальное представление о структуре данных. Недостатки: негибкость полученных классификаций, ограничение объема анализируемых данных. Большая сложность данных алгоритмов делает их непригодными при значительном количестве изучаемых. Неиерархические алгоритмы Неиерархические методы основаны на разделении набора данных на определенное количество кластеров и выполнении итеративного процесса оптимизации некоторой целевой функции, определяющей оптимальность (обусловленную особенностями алгоритма) данного разбиения множества объектов на кластеры. На итеративный процесс накладывается условие остановки, в большинстве случаев являющееся параметром алгоритма. Достоинства этого типа методов в более высокой устойчивости по отношению к шумам, выбору метрики, добавлению групп незначимых объектов в исходные данные, участвующие в кластеризации. Ценой, которую приходится платить за достоинства подобных методов, являются сведения, которыми изначально должен обладать исследователь. Необходимо заранее определить параметры кластеризации, в том числе количество кластеров, а также количество итераций или правило остановки и некоторые другие. 7 Рассмотрим один из самых популярных и широко используемых подобных методов – k–means (k–средних). Этот алгоритм минимизирует среднеквадратичное отклонение на точках каждого кластера: 𝑘 ∑ ∑ ‖𝑥𝑖 − 𝑐𝑖 ‖2 , 𝑖=1 𝑘∈𝐷𝑖 где 𝐷𝑖 – набор векторов принадлежащих 𝑖–му кластеру, а 𝑐𝑖 – среднее значение этих векторов 𝑖 ∑𝑁 𝑘=1 𝑥𝑘 𝑐𝑖 = , 𝑥𝑘 𝜖𝐷𝑖 . 𝑁𝑖 Основная идея заключается в том, что на каждой итерации заново вычисляется центр масс, для каждого кластера, затем векторы разбиваются на новые классы, в соответствии с тем какой из полученных центров оказался ближе по метрике. Другой популярный алгоритм The Fuzzy C–means основан на минимизации C–means функционала. Определенного как: с 𝑁 2 𝐽(𝑋, 𝑈, 𝑉) ∑ ∑ µ𝑖𝑗 𝑚 ‖𝑥𝑗 − 𝑣𝑖 ‖𝐴 , 𝑖=1 𝑗=1 где 𝑉 = [𝑣1 , 𝑣2 … . 𝑣𝑘 ], 𝑣𝑖 ∈ 𝑅𝑛 , V – вектор кластерных центров, который должен быть определен, и 8 2 𝑇 2 𝐷𝑖𝑗𝐴 = ‖𝑥𝑗 − 𝑣𝑖 ‖𝐴 = (𝑥𝑗 − 𝑣𝑖 ) 𝐴(𝑥𝑗 − 𝑣𝑖 ). В дальнейшем в работе будут рассматриваться, только неиерархические алгоритмы кластеризации. 1.2 Средства для анализа алгоритмов кластеризации данных Существующие приложения разделяются на две основных категории: частные исследовательские работы, реализованные с помощью популярных программных математических пакетов, и дорогостоящие коммерческие решения ориентированными на корпоративные статистические исследования. The Fuzzy Clustering and Data Analysis Toolbox Программный комплекс для Matlab предоставляющие три категории функций: – алгоритмы кластеризации, разбивающие данные на кластеры различными подходами: K-means и K-medoid – алгоритмы устойчивой кластеризации. FCMclust, GKclust и GGclust алгоритмы неустойчивой кластеризации; – функции анализа, оценивающие, каждое фиксированное разбиение, выполненное алгоритмом, основанные на индексах(Dunn, Alternative Dunn, Xie and Beni’s, Partition index); 9 – функции визуализации реализующие модифицированный метод Sammon’а отображения данных в пространство меньшей размерности. Так же включает в себя демонстрационные примеры, реализующие алгоритмы на реально используемых в промышленности данных. Это приложения устанавливается в качестве дополнительного модуля, не предоставляет готового интерфейса для анализа, но позволяя в дальнейшем, использовать, описанные выше функции при разработке приложений на Matlab. Cluster Validity Analysis Platform (CVAP) Приложение также как и предыдущее реализовано на Matlab, но является не пакетом встраиваемых функций, а непосредственно программным инструментом. Основанное на удобном графическом интерфейсе, включает в себя несколько алгоритмов кластерного анализа (PAM,K-means, hierarchical,SOM), а также наиболее широко используемые индексы оценки их работы. Работая с этим приложением, пользователь получает возможность загружать свои данные, а так же сохранить результаты работы. Несомненным достоинством является то, что графическая часть позволяет анализировать для одного индекса сразу несколько алгоритмов. помимо этого реализовано графическое представление данных, в том числе и многомерных с помощью анализа главных компонент SPSS Statistics Коммерческий модульный, полностью интегрированный программный комплекс, охватывающий все этапы аналитического процесса, ориентиро10 ванный на решение бизнес–проблем и сопутствующих исследовательских задач. Интуитивно понятный интерфейс обладает множеством функций управления данными и статистическими. Включает в себя алгоритмы кластеризации как часть пакета статистические методов. Недостатки Недостаток существующих программных средств прежде всего заключается в их недоступности и невозможности анализа собственных алгоритмов. Например, некоммерческие приложения реализованы в основном на Matlab, который автоматически накладывает ряд ограничений: – приложения зависят от версии и поставленных дополнительных библиотек; – необходимо знать его внутреннюю структуру и правила работы; – графическая и вычислительная реализации фиксированы; – анализ собственных алгоритмов, если и возможен, то необходимо создание дополнительных систем взаимодействия. Например, упомянутая ранее система Cluster Validity Analysis Platform (CVAP), хотя и имеет удобный графический интерфейс, но поддерживается он только средствами запущенного приложения Matlab. Для использования средств The Fuzzy Clustering and Data Analysis Toolbox, необходимо написание дополнительных функций, связывающих алгоритм и функции анализа. Так как подобные приложения в большинстве своем являются персональными исследованиями, то они, как правило, не развиваются. К тому 11 же зачастую они были созданы для демонстрации конкретных методов, поэтому ограничены по своим функциям и вряд ли могут быть объективными. Помимо этого Matlab является коммерческим продуктом, который необходимо приобретать и устанавливать, что само по себе является длительным, трудоемким процессом. Таким образом доступных для удобного свободного использования средств анализа алгоритмов кластеризации, практически, нет. Коммерческие проекты в свою очередь успешно развиваются, но так как ориентированы в основном на статистические исследования в бизнесе, то включают в себя алгоритмы кластеризации как часть статистических методов, поэтому специализированных средств для анализа работы самих алгоритмов, как правило, не имеют. При этом стоимость подобных разработок достаточно значительна. Например, лицензионная программа SPSS Statistics для одного частного пользователя на данный момент стоит порядка сорока тысяч рублей. Помимо этого реализация и анализ своих алгоритмов в подобных приложениях так же не предусмотрен. 1.3 Постановка задачи Рассмотрим анализ алгоритмов кластеризации с точки зрения существующих программных продуктов. Как уже отмечалось, существует ряд исследовательских, некоммерческих приложений, в основном написанных для Matlab, который накладывает множество дополнительных условий на их использование, таких как лицензия, установка, фиксированность основных функций. При этом они, как правило, позволяют использовать и анализировать фиксированный набор алгоритмов. А так же существует несколько ком12 мерческих продуктов рассчитанных на корпоративных клиентов (фирмы, занимающиеся экономическим прогнозированием, статистическими исследованиями и т. д.), которые в свою очередь обладают значительной стоимостью и так же в большинстве случаев предоставляют фиксированный набор алгоритмов. Рассматривается задача реализации системы, находящейся в свободном доступе, позволяющей анализировать результаты работы алгоритмов кластеризации на различных данных, в том числе поддерживающей графическое представление. Также система должна поддерживать загрузку пользовательских алгоритмов и данных. Пусть у нас есть набор анализируемых данных {𝐷𝑗 }, к ним применяется набор алгоритмов кластеризации {𝐴𝑖 (𝑘,∙)} , где k либо фиксированное число кластеров, либо последовательность индексов 2,…k, характеризующих количество кластеров, для которого применяются алгоритмы, где k – максимальное количество кластеров, до которого проводится исследование. Будем считать, что каждый фиксированный алгоритм, примененный к фикси𝑖𝑗 рованным данным, дает результат 𝑅𝑘 = 𝐴𝑖 (𝑘, 𝐷𝑗 ), который необходимо 𝑖𝑗 проанализировать. Следует отметить, что результат 𝑅𝑘 является разбиением исходных данных 𝐷𝑗 алгоритмом 𝐴𝑖 на k кластеров. В ходе выполнения дипломной работы должны были быть решены следующие задачи: 1. Реализовать несколько вариантов сравнительного анализа алгоритмов, обеспечивающих: – выполнение фиксированного алгоритма на фиксированных данных при различном количестве кластеров; 13 – выполнения фиксированного алгоритма на различных данных; – выполнения различных алгоритмов на фиксированных данных. 2. Предоставить пользователю возможность визуального анализа с по- мощью графического вывода данных. 14 Глава2. Теоретические основания работы 2.1 Индексные методы оценки кластеризации Один из самых распространенных классов задач в рамках кластеризации – определение количества кластеров, при отсутствии предположений относительно их числа, и объеме данных не позволяющем воспользоваться иерархическими методами. Возможный путь решения – проведение ряда экспериментов с итеративными алгоритмами для различного количества кластеров. Пусть определены некоторые методы анализа разбиения выполненного алгоритмом, ограничим итеративный процесс максимально возможным числом классов kmax . Далее алгоритм выполняется для k ∈ {2,3,…,kmax } . Для каждого разбиения применяются методы анализа, результаты которых могут быть сравнены в дальнейшем. За счет подобного изучения результатов достигается достаточно большая гибкость кластеризации. В рамках этой задачи в дипломной работе были рассмотрены алгоритмы устойчивой кластеризации. Устойчивость кластеризации – характеристика, показывающая, насколько различными получаются разбиения на классы после многократного применения алгоритма для одних и тех же данных. Незначительное расхождение результатов является показателем высокой устойчивости. Количество групп, которое максимизирует кластерную устойчивость, служит хорошей оценкой для реального количества кластеров. Существует несколько основных подходов к исследованию устойчивых алгоритмов и определению количества кластеров в множестве данных[1] : – статистики, определяющие наиболее вероятное решение; – оценка плотностей распределений; 15 – расчет значений эвристических характеристик (функций устойчивости), показывающих соответствие назначенных кластеров для выборочных элементов множества; – индексах, сравнивающих степени «разброса» данных внутри кластеров и между кластерами. В работе в качестве средств анализа работы алгоритмов устойчивой кластеризации рассматриваются следующие индексные методы. Krzanowski and Lai index Подход Krzanowski and Lai [6] анализирует функцию 𝐾𝐿(𝑘) = | 𝐷𝐼𝐹𝐹(𝑘) |, 𝐷𝐼𝐹𝐹(𝑘 − 1) где 𝐷𝐼𝐹𝐹(𝑘) = (𝑘 − k – количество кластеров, 2 𝑝 1) 𝑊(𝑘 − 1) − 2 𝑝 𝑘 𝑊(𝑘), p – размерность исследуемого пространства, W(k) – матрица внутренней дисперсии 𝑊(𝑘) = ∑ ∑ (𝑥𝑖𝑗 − 𝑥𝑖 ′ )(𝑥𝑖𝑗 − 𝑥𝑖 ′ ) 𝑖 𝑇 𝑗∈𝐾𝑖 x’i – центр кластера Kj . Основная идея индекса заключается в измерении порядка изменчивости W(k). Значение k, которое максимизирует индекс KL, рассматривается в качестве истинного количества кластеров [6]. 16 Caliński–Harabasz index Индекс Caliński–Harabasz [5], характеризует следующая функция: 𝐶𝐻(𝑘) = 𝐵(𝑘)/(𝑘 − 1) 𝑊(𝑘)/(𝑛 − 𝑘) где k – количество кластеров, i=1,…,k, n – количество объектов в изучаемых данных, W(k) – матрица внутренней дисперсии, а B(k) – матрица внешней дисперсии 𝐵(𝑘) = ∑ 𝑛𝑖 (𝑥 ′ 𝑖 − 𝑥 ′ )(𝑥 ′ 𝑖 − 𝑥 ′ )𝑇 . 𝑖 Наиболее вероятным количеством кластеров является значение k, на котором индекс CH достигает максимальное значение [5]. Dunn index Индекс Dunn [4] первоначально был предложен чтобы определять насколько "компактно и хорошо отделенны группы". 𝑑(𝐾𝑖 , 𝐾𝑗 ) 𝐷𝐼(𝑘) = min { min { }} , 𝑖∈𝑘 𝑗∈𝑘,𝑖≠𝑗 max 𝑑𝑖𝑎𝑚(𝐾𝑚 ) 𝑚∈𝑘 где 𝑑(𝐾𝑖 , 𝐾𝑗 ) = min {𝑑(𝑥, 𝑦)}, 𝑥∈𝐾𝑖 ,𝑦∈𝐾𝑗 𝑑𝑖𝑎𝑚(𝐾𝑚 ) = max {𝑑(𝑥, 𝑦)}. 𝑥,𝑦∈𝐾𝑚 17 Аналитическая основа индекса понятна из определения: большие расстояния между кластерами и маленькие диаметры самих кластеров гарантируют оптимальность распределение в смысле данного индекса и максимизируют его числовую величину. Главный недостаток данных методов в том, что их вычисление становится все более сложным, как с увеличением числа кластеров k так и с увеличением числа объектов входящих в данные. 2.2 Анализ главных компонент Для решения второй задачи дипломной работы по предоставлению пользователю возможности визуального анализа данных и результатов работы алгоритмов с данными содержащими вектора размерности n>2 возникает проблема проектирования подобных данных на плоскость. Для решения этой задачи использовался анализ главных компонент алгоритмом Хебба[2]. Предположим у нас есть вектор X размерности n, который мы хотим передать с помощью m чисел, где m<n. Просто откидывая часть элементов вектора X, получаем, что среднеквадратическая ошибка будет равна сумме дисперсий отброшенных элементов. Поэтому возникает потребность в линейном преобразовании Т, для которого сокращение элементов вектора TX будет оптимальным в смысле среднеквадратической ошибки. Очевидно, что при этом преобразование T должно иметь свойство маленькой дисперсии своих отдельных компонентов. Пусть X – n–мерный вектор, а w – единичный вектор так же размерности n, на который проектируется X. Эта проекция определяется как скалярное произведение векторов X и w: 18 𝐴 = 𝑋𝑇 𝑤 = 𝑤𝑇 𝑋 при ограничении ‖𝑤‖ = (𝑤 𝑇 𝑤)1/2 =1. Необходимо найти такие значения w при которых дисперсия проекции A будет минимальна. Алгоритм Хебба (матричная формулировка) Пусть данные представляют собой n проецируемых векторов, 𝑥(𝑛) = [𝑥1 (𝑛) , … , 𝑥𝑚 (𝑛)]𝑇 , и w(n) – приближение искомого вектора, на n–ом шаге итерации 𝑤(𝑛) = [𝑤1 (𝑛) , … , 𝑤𝑚 (𝑛)]𝑇 . Проекция вектора x(n) на w(n) равна 𝑦(𝑛) = 𝑥 𝑇 (𝑛)𝑤(𝑛) = 𝑤 𝑇 (𝑛)𝑥(𝑛). Алгоритм нахождения w(n), предложенный Xеббом [2] 𝑤(𝑛 + 1) = 𝑤(𝑛) + 𝜂[𝑥(𝑛) − 𝑦(𝑛)𝑤(𝑛)] где w(0) – случайный единичный вектор без нулевых компонент, а 𝜂 – достаточно малый параметр интенсивности обучения [2]. После выполнения описаной процедуры определяется вектор 𝑤1 , проекции на который являются первыми координатами искомого представления, далее вектора x(n) проецируются на подпространство, ортогональное 𝑤1 , 19 𝑥 ′ (𝑛) = 𝑥(𝑛) − 𝑤(𝑛)𝑦(𝑛) и алгоритм применяется повторно для 𝑥 ′ (𝑛) , определяя вектор 𝑤2 и вторые координаты. На Рис. 1 изображен результат использования этого алгоритма для 4х мерных данных с двумя четко выделенными кластерами. Рис. 1 Графическое представления 4х мерных данных реализованное разработанной системой с помощью алгоритма Хебба. 20 Глава 3. Программная реализация 3.1 CAMA Разработанная в рамках дипломного проекта система получила рабочее название CAMA (Clustering Algorithms Meta Applier) и была реализована на языке Java с использованием технологий JSP, JDBC, JavaServlets, XML–RPC, JavaScript, сервлет–контейнера Tomcat и сервера базы данных MySQL, а так же с использованием вычислительного ядра, написанного на С#. База данных системы имеет приведенную на Рис. 2 структуру Рис. 2 Структура разработанной базы данных. Помимо этого в данной реализации отдельно хранятся файлы скомпилированных алгоритмов. При запуске контейнера инициализируется класс, 21 запускающий вычислительный сервер и прописывающий пути к серверным директориям. Инфраструктура сайта основана на пользовательских аккаунтах, аутентификация которых реализована путем регистрации HTTP–сессий. После того как пользователь прошел аутентификацию, регистрируется HTTP–сессия, и он получает персональный доступ к системе. Основные разделы сайта: – раздел выполнения алгоритмов (Рис. 3); – раздел добавления, просмотра и редактирования алгоритмов; – раздел добавления, просмотра и редактирования данных; – раздел просмотра сохраненных результатов. Рис. 3 Web интерфейс системы. Раздел выполнения алгоритмов. 22 Как данные, так и алгоритмы разделяются на две части: общие – изначально предоставленные системой, доступные всем пользователям и персональные – доступные только пользователю, который их загрузил. Выполнение алгоритмов Пользователь определяет алгоритмы, данные и настройки, и запускает процесс кластеризации и анализа. Происходит вызов JavaScript функции, которая посылает HTTP–запрос сервлету, генерирующему результаты и возвращающему их пользователю. Сервлет, реализующий анализ кластеризации, получает идентификаторы данных и алгоритма, и опции кластеризации. После чего он преобразовывает информацию с полученным идентификатором данных из соответ- ствующей таблицы, происходит обращение к таблицам алгоритмов, откуда класс получает идентификатор алгоритма для вычислительного сервера. Далее по протоколу XML–RPC с помощью пакета org.apache.xmlrpc происходит обращение непосредственно к вычислительному ядру, получение и форматирование результатов. Затем по полученным данным и центрам высчитываются индексы (Dunn, Caliński–Harabasz, Krzanowski Lai) [4-6]. Далее следует обращение к классам, генерирующим визуальное представление. Если размерность данных больше двух, то они проецируются на двухмерное пространство с помощью решения задачи анализа главных компонент филь- тром Хебба [2]. В конце работы сервлета генерируется HTML код, содержащий значения индексов и ссылки на изображения визуальных представлений данных. Поддерживается возможность сохранить полученные результаты. Выполняется обращение к классу, который записывает содержимое страницы с результатами в таблицу results с идентификатором сохранившего данные 23 пользователя. Далее результат доступен в соответствующем разделе на сайте. Также пользователь может запустить сразу несколько алгоритмов на нескольких наборах данных, что делает удобным анализ и сравнение результатов. Помимо этого поддерживается анализ как кластеризации для фиксированного числа кластеров, так и для промежутка значений, начиная с двух до заданного максимального значения. Добавление, просмотр и редактирование данных В этом разделе пользователь может добавлять и редактировать загруженные им ранее данные. Отметим, что общие данные не доступны для редактирования, а загрузка информации о конкретных данных происходит по средствам JavaScript функции, обращающейся к определенному сервлету, без перезагрузки страницы. Загрузка файлов реализована с помощью пакета org.apache.commons.fileupload. Файлы хранятся в базе данных, для них хранится идентификатор пользователя, который их загрузил и они доступны только ему. Так же в этом разделе поддерживается просмотр данных. Можно просмотреть как непосредственно текстовый файл со значениями, так и визуальное представление данных, сгенерированное системой. Добавление, просмотр и редактирование алгоритмов Работа с файлами, содержащими код алгоритмов, организована аналогично работе с файлами данных. Существенным отличием, является то, что при добавлении алгоритма вызывается метод, который его компилирует и гене24 рирует соответствующую динамическую библиотеку. С этого момента этот алгоритм можно использовать. Он доступен через интерфейс сайта, который обращается к вычислительному серверу с идентификатором алгоритма, а тот в свою очередь по идентификатору обращается к сгенерированной динамической библиотеке. Взаимодействие с вычислительным ядром Рис. 4 Программная архитектура системы. В работе используется вычислительное ядро(сервер), реализованное на С# , частично поддерживающий синтаксис Matlab [3]. Пользовательские алгоритмы компилируются на стороне сервера и хранятся в качестве динамических библиотек. Достоинство разработанной системы в том, что потенциально она может поддерживать параллельно сразу несколько вычислительных серверов. В рамках написания дипломной работы автором было дополнительно апробировано использование в качестве вычислительного сервера программы Matlab , и проведено сравнение результатов выполнения на нем некоторых алгоритмов кластеризации с разработанными в рамках [3]. 25 Возможность модульного использования этой части системы означает, что у пользователей в дальнейшем может появиться возможность реализовывать свои алгоритмы, используя различный синтаксис в зависимости от спецификации доступных серверов. 3.2 Примеры Рассмотрим работу индексных методов в разработанной системе. В анализируемых данных, четко выделены три кластера, применим к ним стандартный алгоритм k-Means, поддержанный вычислительным ядром [3]. Ограничив максимальное количество кластеров числом 10 (Рис. 5). Рис. 5 Пример анализа алгоритма k–means. 26 Как видно из примера, при выполнении алгоритма для трех кластеров индексы достигают экстремальных значений, тем самым, указывая это число классов, как наиболее вероятное. Пользователь также может добавить свой алгоритм (Рис. 6) Рис. 6 Раздел добавления алгоритмов. и в дальнейшем использовать его, в том числе сравнивая с другими алгоритмами (Рис. 7). 27 Рис. 7 Сравнительный анализ двух алгоритмов на одних данных. 28 Заключение В ходе написания дипломной работы были рассмотрены итеративные методы кластеризации и индексные методы их оценки, а также использован алгоритм Хебба для выделения главных компонент. Была разработана система, поддерживающая эти методы. Существенным отличием от других подобных систем является то, что разработка находится в свободном доступе и не требует от пользователя установки дополнительного программного обеспечения, делает доступным анализ собственных алгоритмов. Были разработаны как внутренняя структура системы, так и пользовательский интерфейс. По результатам работы подготовлена статья на конференцию. В ближайшее время планируется разместить систему на одном из серверов университета, также предполагается разработка и усовершенствование систем анализа, поддержка автоматического обновления анализируемых данных с наиболее известных научных порталов, реализация свободно распространяемого клиентского приложения. 29 Список литературы 1. Граничин О.Н., Шалымов Д.С. Исследование и рандомизация алгоритмов устойчивой кластеризации на основе индексов// Нейрокомпьютеры: разработка, применение, № 3 , с. 58–64, 2009. 2. Саймон Хайкин Нейронные сети: полный курс — 2–е. — М.: «Вильямс», 2006. 3. Cкрыган К. А. Веб–сервис для имплементации алгоритмов на языке «Matlab». Дипломная работа, Математико–механический факультет СПбГУ, 2009. 4. Bezdek J.C. and Dunn J.C. Optimal fuzzy partitions: A heuristic for estimating the parameters in a mixture of normal dustrubutions // IEEE Transactions on Computers, 835–838,1975. 5. Calinski R. B. and Harabasz, J. A dendrite method for cluster analysis // Communications in Statistics, vol. 3, 1–27, 1974 6. Krzanowski, W. J. and Lai, Y. T. A criterion for determining the number of clusters in a data set using sum of squares clustering // Вiometrics 44, 23–34. 1985. 30