Разработка кроссплатформенного средства кластерного

advertisement
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Математико-механический факультет
Кафедра системного программирования
Разработка кроссплатформенного средства
кластерного анализа данных с использованием
рандомизированных алгоритмов
Дипломная работа студента 544 группы
Морозкова Михаила Андреевича
Научный руководитель
………………
/ подпись /
к.ф.-м.н. Шалымов Д. С.
Рецензент
………………
/ подпись /
д.ф.-м.н., проф. Граничин О. Н.
………………
/ подпись /
д.ф.-м.н., проф. Терехов А. Н.
“Допустить к защите”
заведующий кафедрой
Санкт-Петербург
2016
SAINT PETERSBURG STATE UNIVERSITY
Mathematics & Mechanics Faculty
Software Engineering Chair
Cross-platform software tool development for clustering
data analysis based on randomized algorithms
by
Mikhail Morozkov
Master’s thesis
Supervisor
………………
/ signature /
Ph.D. D.S. Shalymov
Reviewer
………………
/ signature /
Ph.D., Professor O. N. Granichin
………………
/ signature /
Ph.D., Professor A. N. Terekhov
“Approved by”
Head of Department
Saint Petersburg
2010
Введение ................................................................................................................................................... 4
1. Постановка задачи ............................................................................................................................ 7
2. Основная часть. ................................................................................................................................. 8
2.1. Обзор существующих решений .......................................................................................... 8
2.2. Подход, основанный на сценариях ...................................................................................10
2.3. Алгоритм Сьюгер-Джеймса ................................................................................................12
2.4. Рандомизированный алгоритм .........................................................................................15
3. Реализация и исследование ........................................................................................................21
3.1. Создание исполняемого файла ..........................................................................................26
3.2. Сравнительный анализ ........................................................................................................27
3.3. Зависимость от параметров ............................................................................................29
4. Результаты работы.........................................................................................................................30
Список использованной литературы ...........................................................................................31
Введение
Кластеризация – довольно общее понятие, означающее разделение
множества объектов на относительно однородные, содержательные группы,
называемые кластерами. Эта задача является одной из фундаментальных в
области интеллектуального анализа данных. Список областей, в которых
применяется кластеризация, очень широк: сегментация изображений,
прогнозирование, анализ текстов, сжатие данных и многие др. Задача
кластеризации используется в таких научных направлениях, как статистика,
распознавание образов, оптимизация, машинное обучение, финансовая
математика, автоматическая классификация и др.
Цель клстеризации – получить разбиение на содержательные классы,
значит, полученные кластеры должны отображать естественную структуру
исходных данных. Однородность же подразумевает классификацию объектов
по группам таким образом, чтобы степень сходства двух представителей
одной группы максимизировалась и была минимальной в противном случае.
Однако, здесь мы сталкиваемся с проблемой определения качества
кластеризации. Иллюстрацией служит рис. 1, на котором изображено
множество из 20 точек, которое может быть разбито на группы двумя
разными способами:
Рис. 1а. Начальное множество
Рис. 1б. Шесть кластеров
Рис. 1в. Два кластера
Поэтому
решение
задачи
кластеризации
принципиально
допускает
различные интерпретации, поскольку не существует однозначно наилучшего
критерия качества кластеризации. Число кластеров, как правило, неизвестно
заранее и устанавливается в соответствии с некоторым субъективным
критерием. Результат кластеризации во многих алгоритмах существенно
зависит от метрики, выбор которой обычно определяется экспертом и также
чаще всего субъективен. То есть при использовании любого существующего
алгоритма важно понимать его достоинства и недостатки, учитывать природу
данных, с которыми он лучше работает, и способность к масштабируемости.
Задача нахождения количества групп в множестве данных является
одной из основополагающих и трудоёмких в кластерном анализе данных.
Несмотря на то, что в последние годы были предложены многочисленные
методы
и
подходы,
задача
по-прежнему
не
имеет
теоретически
обоснованного решения полиномиальной сложности, дающего адекватные
оценки на множествах данных различной природы.
Методы определения количества кластеров называются методами
устойчивой
кластеризации.
Устойчивость
кластеризации
показывает,
насколько различными получаются результирующие разбиения на группы
после многократного применения алгоритмов кластеризации для одних и тех
же
данных. Небольшое расхождение следует интерпретировать как
показатель устойчивости кластеризации. Количество кластеров, которое
максимизирует кластерную устойчивость, может служить хорошей оценкой
для реального количества кластеров.
Большинство известных подходов в этой области разработаны для
решения конкретных прикладных задач. Те же методы, которые применимы
в общих случаях, как правило, требуют определенных предположений о
своих параметрах и математически слабо обоснованны. Общим недостатком
традиционно
используемых
алгоритмов
кластеризации
является
значительный рост вычислительной сложности при росте мощности
исследуемого множества.
Снять
эти
трудности
предлагается
за
счет
использования
рандомизированных алгоритмов в подходе, основанном на сценариях [4]. Это
передовая технология, которая была предложена для решения выпуклых
задач оптимизации с бесконечным набором ограничений. Основополагающей
идеей подхода является рассмотрение только конечного набора выборок
(сценариев) и решение соответствующих им конечных задач. Доказано [4],
что при небольшом априорно вычисленном количестве выборок полученное
решение с высокой вероятностью удовлетворяет также и остальным
сценариям.
Структура дальнейшего текста следующая: в разделе 1 будет дана
формализованная постановка задачи; далее в главе 1 раздела 2 будет
произведен обзор существующих в рассматриваемой области решений, затем
в главах 2-4 будут приведены и доказаны теоретические обоснования
работоспособности нового рандомизированного алгоритма; в разделе 3 будут
рассмотрены
особенности
реализации
и
в
главе
2
будет
сделан
сравнительный анализ работоспособности нового алгоритма против трех
других существующих методов. В заключительном разделе 4 будут озвучены
результаты дипломной работы.
1. Постановка задачи
Цель
дипломной
работы
–
разработка
кроссплатформенного
программного решения с открытым кодом для кластерного анализа данных
на основе рандомизированных алгоритмов, базирующихся на применении
сценарного подхода.
Для достижения цели были выделены следующие задачи:
1. Реализация
нового
рандомизированного
алгоритма
нахождения
количества кластеров
При этом общая функциональность должна быть вынесена в библиотеки
языка Python, которые будут использоваться приложением во время
выполнения. Кроме того, архитектура графического интерфейса должна
предусматривать
возможность
полной
параметризации
применяемого
алгоритма.
2. Апробация
алгоритма
как
на
специально
сгенерированных
(синтетических), так и на реальных множествах данных.
3. Проведение сравнительного анализа работоспособности алгоритма по
отношению к реализациям других существующих методов по таким
основным
характеристикам,
как
время
работы,
корректность
выполнения.
4. Исследование зависимости работы алгоритма от настраиваемых
параметров.
В рамках этой задачи предполагается рассмотреть различные варианты
выбора максимальной степени равномерной аппроксимации, параметров
уровня и надежности, сделать описание соответствующих субоптимальных
настроек алгоритма.
2. Основная часть.
2.1. Обзор существующих решений
В последние годы были разработаны несколько базовых подходов для
определения количества кластеров в множестве данных. Они основываются
на:
 индексных функционалах качества, сравнивающих степень близости
данных внутри классов и удаленности кластеров друг от друга: индекс
Калински-Харабаза [2], правило Хартигана [5], тест Кржановсого-Лая
[8], силуэтную статистику, введенную Кауфманом и Руссо [7], которая
является мерой того, насколько плотно данные располагаются внутри
кластера;
 эвристических
функционалах
устойчивости,
показывающих
соответствие назначенных кластеров для выборочных элементов
множества (например, Джейн и Моро [6] используют дисперсии
эмпирических распределений в качестве измерения устойчивости).
 статистиках, определяющих наиболее вероятное решение: Т. Ланге, В.
Рот, Л. Браун, Дж. Бухман [9] предлагают метод, в котором
сравниваются
пары
кластеризованных
данных
(устойчивость
определяется как соотношения количества раз, когда элемент попал в
один и тот же кластер); Е. Левине и И. Домани [10] измеряют
устойчивость кластеризации с помощью соотношения количества раз,
когда пара элементов множества, принадлежащая одному кластеру до
применения алгоритма кластеризации, оставалась в том же кластере
после завершения работы алгоритма;
 оценивании плотностей распределения (Вишарт [13] вводит понятие
кластеров
высокой
плотности,
при
этом
количество
классов
определяется как общее число непересекающихся областей, чьи
плотности превышают заданное значение);
 теории информации: предложенный Сьюгер и Джеймсом [11] метод
использует
понятие
искажений,
определяемых
средними
внутрикластерными расстояниями, при этом строится специальный
функционал зависимости искажения от количества кластеров;
 вероятностных моделях: в [1] Шалымов и Граничин предлагают
рандомизированный алгоритм устойчивой кластеризации основанный
на
равномерной
аппроксимации
функции
трансформированных
искажений, введенных Сьюгер и Джеймсом.
Большинство этих подходов разработаны для решения конкретных
прикладных задач. Методы же, применимые к данным широкого характера,
требуют
определенных
предположений
о
своих
параметрах
и\или
математически необоснованны. Общим недостатком описанных алгоритмов
кластеризации является значительный рост вычислительной сложности при
росте
мощности
исследуемого
множества
осуществляют полный перебор вариантов.
–
практически
все
они
2.2. Подход, основанный на сценариях
В
2006
году
Кампи
и
Галафьори
[4]
предложили
новый
рандомизированный метод для решения выпуклых задач оптимизации с
бесконечным набором ограничений, получивший название сценарного
подхода или подхода, основанного на сценариях. Суть метода заключается в
том, что решение можно получить посредством конечного числа случайных
выборок ограничений. Представим формализованную формулировку:
Рассмотрим
семейство
выпуклых
задач
оптимизации,
параметризованных     R M :
UCP : {min vT при f ( ,  )  0,   },
 
где оптимизация проводится по    , множество  выпукло и замкнуто, а
функция f :     R выпукла по  для всех    .
Пусть на  задана  - алгебра с вероятностной мерой P . Для всякого
   вероятностью нарушения назовем величину
V ( )  P{   : f ( ,  )  0}.
(Здесь предполагается, что событие {   : f ( ,  )  0} является элементом
заданной  - алгебры ).
Будем говорить, что решение    является устойчиво вероятным
уровня  , если V ( )   .
Пусть  (1) ,,  ( N ) – N
независимых реализаций, полученных по
одинаковой вероятностной мере P . Рассмотрим задачу, которая является
дискретизацией задачи UCP:
SCPN : {min vT при f ( ,  (i ) )  0, i  1,, N},
 
Теорема 1[4]. Зафиксируем вещественные параметр уровня   (0,1) и
параметр надежности   (0,1) и положим
2
2
2M
2
N   ln
 2M 
ln .




Тогда с вероятностью не меньшей 1   решение рандомизированной задачи
SCPN будет устойчиво вероятным уровня  .
Рис. 2. Интерпретация теоремы
С вероятностью не меньше 1   мы выбираем сценарий  (1) ,,  ( N ) , не лежащий в
ˆ
множестве нарушения. Получающееся оптимальное решение  N , таким образом
подходит для всех неопределенностей, кроме множеста меры не больше  .
2.3. Алгоритм Сьюгер-Джеймса
Известен эффективный метод, базирующийся на теории информации,
который был предложен К. Сьюгер и Г. Джеймсом [11]. Он основан на
использовании
"искажениями".
средних
внутрикластерных
Строится
специальный
расстояний,
называемых
функционал
зависимости
"искажения" от количества кластеров. Этот функционал очевидно убывает с
ростом количества кластеров. Минимальное "искажение" определяется
следующим образом: на множестве данных с учетом текущего количества
кластеров запускается итеративный алгоритм типа k-средних. Множество
разбивается на отдельные кластеры, для каждого из которых подсчитывается
дисперсия (среднее внутрикластерное расстояние). Из множества значений
дисперсий выбирается наименьшее, которое принимается за минимальное
"искажение" и становится значением функционала при данном количестве
кластеров.
Теоретически
и
эмпирически
доказывается,
что,
при
определенном выборе параметра  (степень трансформации), построенная
для функционала кривая будет иметь резкий скачок в том месте, которое
соответствует действительному количеству кластеров, при этом оставаясь
почти линейной до и после точки, в которой образуется скачок.
Справедливость данного факта показывает теорема 2, доказанная в [11]:
Теорема 2. Предположим, что распределение множества X – это смесь
из l* кластеров в N-мерном фазовом пространстве. Предположим, что
кластеры одинаково распределены с ковариацией
N
и в каждой
размерности имеют конечные четвертые моменты. Пусть c N
– это
минимальное евклидово расстояние между двумя центрами кластеров после
нормирования пространства. Пусть H * ( X ) – это минимальная энтропия по
всем направлениям после нормировки. Пусть
64Vx
T  1 2
, где
2 2
(c  6 )
Vx  Var (
1
x  j
N
2
 N1
, x  X j ( )).
Предположим, что вычислено d k для всех 1  k  lmax . Если c  6 и
существует   0 :
 Nc T 


9
l
* 

2

  2 2 H *( X )  c  2


 T 2
   (1  T ) 
  lmax 2e  6 
 
 

 Nc 2T 

 2 и 
9
l
* 


1
 .
2


Тогда при k  l* скачок [d k  d k 1 ] будет максимальным.
Процедура определения количества кластеров состоит из следующих
шагов:
1. Запускается алгоритм k-средних для k кластеров и определяется
соответствующее "искажение" d k . Для различных значений k
строится набор d k .
2. Выбирается степень трансформации   0 (обычно принимается

m
, где m – размерность пространства).
2
3. Вычисляются скачки по формуле J k  d k   d k1 .
4. За итоговое количество кластеров принимается тот индекс,
который соответствует наибольшему скачку: k *  arg max k J k .
На рис. 3 изображены зависимости "искажений" вышеописанного
метода от количества кластеров. В данном примере для входных данных
было использовано гауссово распределение. Кластеры были получены путем
моделирования как двухмерные окрестности с различными математическими
ожиданиями и одинаковыми матрицами ковариаций. Метод успешно
зарекомендовал себя также на негауссовых данных.
Рис. 3. Алгоритм Сьюгер-Джеймса
На правой диаграмме изображены зеленым цветом кривая трансформированных
искажений и красным – кривая скачков. Видно, что у характеристической
функции есть единственный ярковыраженный скачок в точке k *  14 , что равно
действительному количеству кластеров в начальном множестве. На левой
диаграмме изображено начальное множество данных, разбитое на k *  14
кластеров.
2.4. Рандомизированный алгоритм
Далее при значительной неопределенности в оценке действительного
количества кластеров в множестве данных и возможности априорного
задания некоторых свойств кривой "искажений" на основе достаточно
нового
сценарного подхода предлагается новый рандомизированный
алгоритм определения количества кластеров с заданной вероятностью, при
котором
существенно
сокращается
количество
запусков
алгоритма
рассмотрим
функцию
кластеризации для задаваемого количества кластеров.
В
качестве
индексной
функции
I (l )
трансформированных "искажений". В [11] доказано, что эта функция ведет
себя линейно до и после точки скачка. Отталкиваясь от этого факта, с
помощью рандомизированного метода на основе сценарного подхода будем
искать эту точку.
Предположим априори известными два положительных числа B и C:
B  I (l* )  I (l*  1) ,
C  max j  2,,l* 1,l* 1,,lmax I (l j )  I (l j  1) ,
где
l*
–
действительное количество кластеров. Первое число B характеризует
возможный скачок индексной функции в точке l* , соответствующей
действительному количеству кластеров. Второе число C – своеобразный
показатель гладкости индексной функции на остальной области определения.
Особый интерес представляет случай, когда B  C , то есть поведение
индексной
функции
возле
точек,
действительно
характеризующих
количество кластеров в множестве, существенно отличается от поведения на
других участках.
Сценарный рандомизированный подход к решению задач выпуклой
оптимизации при существенном объеме неопределенностей, задаваемых
семейством целевых неравенств, заключается в возможности для заданных
достаточно малых вещественных положительных чисел  ,   (0,1) априорно
определить конечное количество случайных испытаний N, при котором
решение выпуклой оптимизационной задачи только с N неравенствами с
вероятностью 1   удовлетворяет и всем остальным за исключением, быть
может, набора неопределенностей меры, непревосходящей  .
Воспользовавшись идеями сценарного подхода, вместо вычисления
значений индексной функции во всех точках 1,2,, lmax будем генерировать
случайные наборы точек (так называемые сценарии), существенно меньшего
размера. Было доказано, что при соответствующей задаваемым параметрам
 ,   (0,1) мощности выборок решение соответствующей оптимизационной
задачи будет с заданной вероятностью удовлетворять почти всем остальным.
Для аппроксимации остальных значений воспользуемся равномерными
приближениями индексной функции I(l) по системе ортогональных
многочленов Чебышева ограниченной степени. Индексную функцию I(l) и ее
равномерные приближения будет удобнее рассматривать заданными на всем
отрезке (0; lmax ) вещественной оси, доопределив I(l) отрезками ломаной,
соединяющих соседние точки.
Рассмотрим следующий рандомизированный алгоритм:
1. Выберем достаточно малые параметры уровня и надежности:
0   ,   1.
2. Выберем натуральное число M и семейство многочленов Чебышева для
аппроксимации I(z):
pm ( z )  cos( m arccos
z
lmax
), m  0,1, , M .
3. Вычислим N  N ( ,  ) по формуле из теоремы о сценарном подходе:
2
2
2M
2
N ( ,  )   ln  2M 
ln .




4. Будем последовательно выбирать по N точек из интервала (0; lmax )
случайным образом с равномерным распределением и собирать их в
некоторое множество Z столько раз (не меньше двух), чтобы
максимальное расстояние между соседними элементами множества Z
не превосходило  . Обозначим K – количество случайно выбранных
групп по N точек. При этом K больше единицы.
5. Для каждой точки, выбранной на предыдущем шаге, вычисляем
соответствующее значение индексной функции I(z).
6. По каждой из K групп выбранных точек {z k1 , z k 2 , , z k N } строим
рамномерные аппроксимации для индексной функции I(z)
M
g k ( z )    km pm ( z ), k  1,2, , K , такие, что
m 1
min I ( z )  g k ( z )  при условии
 km
 km 
D
, m  1,  , M . 
max
g k ( z km )  I ( z km ) .
k[1.. K ],m[1.. M ]
K2
7. Определим на всем интервале (0; lmax ) характеристическую функцию
 ( z )  max g k ( z )  min g k ( z ).
k
k
8. Построим график функции  (z ) и проведем линию уровня
L  B  2 (C  D)  2
9. Построим множество уровня   {z :  ( z )  L} , включающее точки
превышения характеристической функцией  (z ) линии уровня L с
окрестностями размеров  . Искомое значение l* принадлежит
2
множеству уровня  с вероятностью не меньшей (1   ) .
Теорема 3. Если при выборе достаточно малых параметров уровня и
достоверности 0   ,   1 в результате выполнения вышесформулированного
алгоритма получается непустое множество уровня  , тогда с вероятностью
p  (1   ) 2 множество  содержит точку l* .
Доказательство:
В силу условия, наложенного в четвертом пункте алгоритма, во
множестве Z обязательно найдутся 2 точки
z il и z jm из некоторых выборок
Z i и Z j соответственно, которые находятся слева и справа от искомой
неизвестной точки l* и расстояние между ними не больше  . Не умаляя
общности, будем считать, что
zil  z jm . Пусть
g i (z ) и g j (z )
соответсвующие выборками равномерные аппроксимации индексной
функции. По теореме 2 верно, что для этих аппроксимаций с вероятностью
не меньше 1   вне множества вероятностной меры не больше  невязка с
соответствующим значением индексной функции I(z) не может превышать
уровень
B
.
K2
Рассмотрим интервал   [ z i , zˆ], такой что [ zi , z j ]   и    . Тогда на
l
l
m
z , z  , для
2
интервале  с вероятностью не меньше (1   ) найдется точки
которых I ( z)  gi ( z)   и I ( z )  g j ( z )   . В силу выбора интервала 
попарные расстояния между
z , z  и l* не превосходят  и l* находится
внутри  . Следовательно, верны неравенства: I ( z )  I ( z )  B  C и
g j ( z )  g j ( z )  D .
Тогда в силу
g i ( z )  g j ( z )  g i ( z )  I ( z )  I ( z )  I ( z )  I ( z )  g j ( z )  B  C  2 и
g i ( z )  g j ( z )  g i ( z )  g j ( z )  g j ( z )  g j ( z ) верна оценка:
g i ( z )  g j ( z )  B  C  2  D  B  (C  D)  2 , D  max g i ( z ) (*).
i
Оценим максимум производной, используя рекурсивное соотношение для
многочленов Чебышева:
gi( z ) 
K
ik pk ( z) 
k 1
K
ik k
k 1
pk 1 ( z )lmax  zpk ( z )
.
2
lmax
 z2
Справедлива оценка:
Dl
g i ( z )  2 max 2
lmax  z
K
1
k p
k 1
k 1
( z) 
zpk ( z )
.
lmax
Положим   arccos z . Поскольку
pk 1 ( z)  zpk ( z)  cos  (k 1)  cos  cos k  sin k sin  , то выполнено неравенство
D
g i ( z ) 
sin 
K
1
 k sin k
k 1

D
lmax
.
Тогда имеем такую оценку:
g i ( z )  g j ( z )  B  (C 
D
l max
)  2 (**).
Так как мы рассматриваем случай, когда индексная функция имеет
единственный ярковыраженный скачок в точке
l* , то имеет место
неравенство B  C . Заметим также, что на практике l max  B . В таком
случае можем пренебречь слагаемым (C 
B
l max
) в (**). Отсюда получаем
конечную оценку:
L  B  2 (C  D)  2
3. Реализация и исследование
Для решения математических задач, поставленных в дипломной
работе, необходим мощный прикладной инструментарий, поддерживающий
реализации решений таких распространенных задач, как решение систем
линейных уравнений и неравенств, приведение матрицы к SVD-разложению
[20], а также алгоритмов кластеризации методом k-средних, иерархическим
методом и др. Учитывая предъявленные к реализации требования
кроссплатформенности
и
открытости
кода,
в
качестве
языка
программирования выбран Python.
Для проектирования GUI использовались библиотеки PyQt [18] и
Matplotlib [15]. Matplotlib является кроссплатформенной библиотекой языка
программирования Python и его расширения NumPy, предназначенная для
визуализации
данных.
Она
предоставляет
«pylab»
API
cпециально
разработанный так, чтобы походить на API пакета Matlab. PyQt – своего рода
набор «привязок» графичесекого фреймворка Qt для Python, выполненный в
виде расширения языка. PyQt работает на всех платформах, поддерживаемых
Qt: GNU/Linux и другие UNIX-подобные ОС, MAC ОС X и Windows. PyQt
практически полностью реализует возможности Qt.
На базе этих двух библиотек была осуществлена реализация
специального элемента графического интерфейса, предназначенного для
отображения графической интерпретации полученных математических
результатов: построение графиков характеристической функции, огибающих
аппроксимаций и линии уровня, а также кластеризованного множества точек.
Алгоритмические составляющие используют модули NumPy [16] и
SciPy
[20].
Это
открытые
кроссплатформенные
библиотеки
высококачественных научных инструментов для языка Python. NumPy
включает в себя поддержку больших многомерных массивов и матриц,
вместе с большой библиотекой высокоуровневых математических функций
для операций с этими массивами. SciPy содержит модули для оптимизации,
интегрирования, решения дифференциальных уравнений, кластеризации,
генетических алгоритмов, обработки изображений и других задач обычно
решаемых в науке и при инженерной разработке.
Рис. 4. Блок-схема архитектуры приложения
Среди вычислительных модулей кластеризации следует выделить два
самых больших: ClusteringAlgorithm и ClusteringMethods. Первый из них
содержит класс Clustering, который реализует все методы кластеризации (kсредних и иерархический) и проводит необходимые дополнительные
вычисления, такие как, например, вычисление искажений. Данный класс
инициализируется сразу же после того, как были загружены данные для
кластеризации, при этом сразу вычисляются данные, которые будут
неоднократно использоваться, что позволяет в случае использования
иерархического метода существенно сократить объем вычислений:
class Clustering():
def __init__(self, data, method = ‘average’):
self.data = data
self.dimension = len(self.data[0])
self.dist = distance.pdist(data)
self.link = linkage(self.dist, method)
Модуль
ClusteringMethods
содержит
реализации
алгоритмов
нахождения числа кластеров во множестве данных: рандомизированный,
Сьюгер-Джеймса, Хартигана и Кржановского-Лая, а также вычисление
минимальной и максимальной огибающих аппроксимаций многочленами
Чебышева.
Оба этих модуля пользуются преимуществами языка Python:
 возможностью передавать методу в качества параметра другой
метод. Тем самым отпадает необходимость писать большие
ветвления условного оператора при определении метода и
алгоритма кластеризации
 возможностью передавать методу переменное число параметров
с помощью ключевых слов *args и **kwargs
Так что различные методы кластеризации:
def runRandomized(marray, K, L, N = 1, void = Clustering.hierarchy, method =
None, length = None, maxJump = None):
def runH(marray, void = Clustering.hierarchy, length = None, **kwargs):
могут вызываются одним и тем же выражением:
Centers, Clusters, trDist, jumps, level = method(marray, K = K, L = L, N = N, void
= void, length = maxClusters, maxJump = B)
Также математические модули включают в себя реализации генерации
множества
данных
с
заданным
распределением
(DistributionSample),
аппроксимации многочленами Чебышева (Chebyshev) и метода анализа
главных компонент (PCA). Эти модули используют встроенные в NumPy и
SciPy мощные математические аппараты линейной алгебры (Chebyshev и
PCA) и поддержку работы со случайными числами.
Рис. 5. Графический интерфейс приложения
Разработанное приложение поддерживает возможность генерации и
сохранения данных с такими задаваемыми параметрами, как: размерность
пространства,
количество
кластеров,
количество
надкластеров,
тип
распределения кластеров и тип распределения точек внутри кластера.
Посредством метода анализа главных компонент реализована визуализация
данных в двумерном пространстве. Она осуществляется проектированием на
специально выбираемые оси таким образом, чтобы максимально сохранялась
естественная структура начальных данных.
Решением
поддерживается
несколько
различных
алгоритмов
кластеризации на основе индексных функций: Хартигана, Кржановского-Лая,
Сьюгер-Джеймса. Реализована возможность выбора базового алгоритма
кластеризации. Представленная реализация алгоритма кластеризации с
помощью нового рандомизированного алгоритма на основе сценарного
подхода
позволяет
выполнять
настройку
релевантных
параметров
инициализации алгоритма: параметров уровня и надежности, степени
плотности выборки.
Для
визуализации
данных
используется
два
режима
–
для
сгенерированных данных и для кластеризованных данных. В первом случае в
диалоговом окне воспроизводится только двумерная проекция полученного
множества данных. Во втором же случае вывод состоит из двух частей –
кластеризованного множества данных и графиков функций, на основе
которых принималось решение о конечном количестве групп в разбиении.
Таким
образом,
полученная
информация
далее
может
быть
проинтерпретирована самим пользователем. Им могут быть сделаны
дополнительные выводы о структурных особенностях множества или о
других возможных вариантах разбиения на группы.
Рис. 6. Результат работы алгоритма
Множество данных состоит из 1056 точек, объединенных в 21 кластер. Слева
изображено кластеризованное множество с помощью рандомизированного
алгоритма. В правой части синим и зеленым обозначены максимальная и
минимальная огибающие равномерной аппроксимации индексной функции
соответственно. Характеристическая функция имеет один ярко выраженный скачок.
Мощность множества, состоящего из точек, для которых значения
характеристической функции больше определенного множества уровня (черная
горизонтальная линия), не превосходит 20 – что есть не более чем
числа точек.
1
от общего
50
3.1. Создание исполняемого файла
При разработке подавляющего большинства python-приложений рано
или поздно встает вопрос о разворачивании приложений на конечной
машине пользователя под управлением различных операционных систем.
Требовать от пользователя наличия установленного Python со всеми
необходимыми библиотеками нелогично. Поэтому встает необходимость
создания исполняемых файлов. Для платформы Windows существует
несколько решений. Но прежде всего нужно понимать, что никакого
полноценного exe-файла из python-приложения получить невозможно в
принципе в силу динамичности языка. Все на что способны подобные
утилиты,
это
запаковать
python-интерпретатор
и
все
используемые
библиотеки в виде pyd и pyc файлов в архив и сгенерировать простой stub в
виде exe-файла который умеет вызвать из архива интерпретатор языка и
передать ему управление. В рамках данной работы эта задача была решена с
помощью утилиты py2exe [19].
Так как кроме исполняемого файла мы получаем еще и множество
файлов поддержки, то разумным решением стало создание инсталляционного
пакета с помощью утилиты Inno Setup [14]. Эта программа представляет
собой многофункциональный инструмент для создания исполняемых (ЕХЕ)
файлов, имеющий в своем арсенале множество полезных функций, таких как:
изменение текста инсталлятора, замена исполняемых файлов, установка
общих
библиотек,
полнофункциональное
копированием
файлов,
возможность чтения и записи в реестр, ini файлов и командной строки,
создание типов установки (полный, минимальный, другой), выполнение
внешних программ и т. д.
3.2. Сравнительный анализ
Состоятельность оценок работы нового рандомизированного алгоритма
была подтверждена моделированием на практике. По сравнению с
алгоритмом Сьюгер-Джеймса существенно удалось снизить вычислительную
сложность алгоритма, за счет перебора меньшего числа вариантов. В случае
кластеров с гауссовским распределением характеристическая функция имеет
один ярко выраженный скачок. Алгоритм так же продемонстрировал
хорошую работоспособность и на реально существующих базах данных,
взятых из [21].
Рис. 7. Результат работы алгоритма на реальном множестве Iris Data Sete [3].
Множество данных состоит из 3 кластеров по 50 элементов. Слева изображено
кластеризованное множество с помощью рандомизированного алгоритма. В правой
части синим и зеленым обозначены максимальная и минимальная огибающие
равномерной
аппроксимации
индексной
функции
соответственно.
Характеристическая функция имеет два скачка, но они оба не превосходят единицы.
Это связано с маленькой мощностью множества, его размерностью и его
плотностью.
Был проведён сравнительный тест для четырех реализованных
алгоритмов кластеризации: рандомизированного, Хартигана, КржановскогоЛая и Сьюгер-Джеймса на три различных смоделированных данных. Первое
сгенерированное множество данных являлось четырехмерной смесью
шестнадцати гауссовских кластеров. Второе состояло из шестнадцати
гауссовских кластеров, но в десятимерном пространстве. Третье – из
двадцати двух четырехмерных гауссовских кластеров, объединённых в три
надкластера. Каждый кластер содержал от 100 до 200 точек. Каждый
алгоритм запускался 100 раз для каждого теста. Результаты приведены в
табл. 1:
Таблица 1: Рандомизированный алгоритм запускался с параметрами
Тест
Тест №1 (16
четырехмерных
кластеров)
Тест №2 (16
десятимерных
кластеров)
Тест №3 (22
четырехмерных
кластера, 3
надкластера)
  0.1   0.1 M  17 B  800 .
Алгоритм
Среднее
время, сек
Рандомизированный
Сьюгер-Джеймс
Хартиган
Кржановский-Лай
Рандомизированный
Сьюгер-Джеймс
Хартиган
Кржановский-Лай
Рандомизированный
Сьюгер-Джеймс
Хартиган
Кржановский-Лай
66
156
161
153
56
144
140
144
90
211
214
211
Процент
правильных
ответов
81
91
65
35
83
96
100
80
81
93
76
71
3.3. Зависимость от параметров
Как видно из доказательства состоятельности алгоритма, число N –
количество точек в каждой выборке не зависит от общего количества точек
во множестве lmax . Учитывая желаемую плотность точек в окончательном
множестве, можно сделать вывод, что будет выбрано cN , где 0  c  1 . При
соответствующей настройке параметра  мощность индексного множества
 также не будет превосходить cN . Таким образом, общее количество
1
раз.
c
вычислений сокращается в
При
этом
заметим,
что
максимальную
степень
равномерной
аппроксимации не стоит выбирать равной 1, а также четной, так как в общем
случае
это
функции
с
точкой
глобального
минимума,
а
вид
аппроксимируемой функции – монотонно возрастающая функция. Также
стоит отметить, что неразумно выбирать большую максимальную степень
равномерной аппроксимации в силу того, что от нее линейно зависит N –
количество точек в каждой выборке. Из этих же соображений параметры
 ,  меньше 0.05 значительно увеличивают вычислительные объемы, не
давая при этом существенного выигрыша в вероятности правильного ответа.
4. Результаты работы
Результатом
проделанной
работы
является
кроссплатформенное
приложение для кластерного анализа данных. Созданы исполняемый файл и
инсталляционный пакет для него и его окружения под операционной
системой Windows. Реализован новый рандомизированный алгоритм на
основе сценарного подхода. Помимо этого приложением поддерживаются
стандартные алгоритмы кластеризации на основе индексных функций:
Хартигана, Кржановского-Лая, Сьюгер-Джеймса. Возможность визуализации
данных осуществлена с помощью реализации метода анализа главных
компонент.
Моделирование
теоретические оценки
на
работы
алгоритма
точность и
время
подтверждает
работы.
данные
Исследование
зависимости работоспособности алгоритма в зависимости от параметров
говорит о том, что нецелесообразно требовать точность выше 0.9 и выбирать
степень аппроксимации чётной или выше 17. Полем для дальнейшего
исследования является выбор параметра нижней границы скачка. Было
установлено, что это значение коррелирует с размерностью фазового
пространства и мощностью множества, но характер зависимости остается
неизвестным.
Список использованной литературы
[1] Шалымов Д. С., Граничин О. Н., “Рандомизированный алгоритм
нахождения количества кластеров”, СПбГУ, 2010
[2] Calinski, R. B. and Harabasz, J., “A denrite method for cluster analysis”.
Communications in Statistics 3, 1-27 (1974).
[3] Fisher,R.A. “The use of multiple measurements in taxonomic problems”, Annual
Eugenics, 7, Part II, 179-188 (1936)
[4] Galafiore G., Campi M. C., “The scenario approach to robust control design”,
IEEE Trans. Automat. Control. Vol. 51. No. 5. P. 742-753 (2006).
[5] Hartigan, J. A., “Clustering Algorithms”. Wiley. (1975).
[6] Jain A. K. and Moreau J. V., “Bootstrap technique in cluster analysis”. Pattern
Recognition 20, 547-568. (1987).
[7] Kaufman, L. and Rousseeuw, P., “Finding Groups in Data: An Introduction to
Cluster Analysis”. New York: Wiley (1990).
[8] Krzanowski, W. J. and Lai, Y. T., “A criterion for determining the number of
clusters in a data set”. Biometrics 44, 23–34 (1985).
[9] Lange T., Roth V., Braun L M., Buhmann J. M., “Stability-based validation of
clustering solutions”. Neural Computation 16, 1299-1323. (2004).
[10] Levine E., Domany E. “Resampling method for unsupervised estimation of
cluster validity”. Neural Computation 13, 2573-2593. (2001).
[11] Sugar С., James G., “Finding the number of clusters in a data set : An
information theoretic approach”, Journal of the American Statistical
Association. No. 98. P. 750-763 (2003).
[12] William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery,
“2.6 Singular Value Decomposition”, Numerical Recipes in C, 2nd edition.
Cambridge: Cambridge University Press (1988-1992).
[13] Wishart D. “Mode analysis: A generalization of nearest neighbour which
reduces chaining effects”. Numerical Taxonomy, 282-311. (1969)
[14] Inno Setup: http://www.jrsoftware.org/isinfo.php
[15] Matplotlib project: http://matplotlib.sourceforge.net/.
[16] NumPy reference guide: http://docs.scipy.org/doc/numpy-1.3.x/reference/
[17] Python documentation: http://www.python.org/doc/.
[18] PyQt reference guide:
http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt4ref.html
[19] py2exe tool reference: http://www.py2exe.org/
[20] SciPy reference guide: http://docs.scipy.org/doc/scipy-0.7.x/reference/
[21] UCI Machine Learning Repository: http://archive.ics.uci.edu/ml/
Download