Кластеризация данных на основе марковской цепи с помощью
алгоритма DBSCAN
Иванов А.А., НИУ Высшая школа экономики, МИЭМ [email protected]
Аннотация
В настоящий момент существует множество алгоритмов кластеризации, но каждый из них имеет существенные недостатки. В данной работе предлагается и исследуется новый алгоритм кластеризации данных под название MCDBSCAN, который работает при помощи марковских цепей и алгоритма DBSCAN. Производится сравнение других алгоритмов кластеризации с предложенным на синтетических данных и рукописных цифр из библиотеки sklearn для языка python.
1 Введение
Большинство из существующих на данный момент алгоритмов кластеризации имеют очень сильные недостатки такие как заранее известное количество кластеров в данных или невозможность отделить кластеры разных плотностей и форм, сильное влияние шума на качество кластеризации. По этим причинам была принята попытка создать новый алгоритм, который бы не имел вышеупомянутых недостатков.
2 Теория марковских цепей
Марковская случайный процесс (цепь Маркова) - случайный процесс, где для каждого момента времени вероятность любого состояния системы в будущем зависит только от ее состояния в настоящем.
Марковская цепь называется дискретным, если количество состояний конечно.
Дискретную марковскую цепь можно определить с помощью матрицы переходных вероятностей (обозначим P) или графа состояний и переходов. Матрица переходных вероятностей является стохастической (сумма вероятностей по столбцам или по строкам равна 1).
Цепь является эргодической если граф является сильно связным. То есть из любого состояния можно перейти в любое другое состояние за конечное число переходов.
Свойством таких цепей является наличие стационарного режима (режим, при котором вероятности состояний системы не зависят от времени и начального распределения вероятностей). Стационарный режим наступает при достаточно долгом времени функционирования системы (^те). Распределение состояний в стационарном режиме для эргодических цепей называется финальным или предельным распределением.
3 Построение матрицы переходных вероятностей
Матрица переходных вероятностей строится на основе расстояния до соседей. Количество соседей задается заранее. При построении данной матрицы нужно учитывать его свойство - стохастичность.
Если дан набор векторов Б размерности п на т, где п количество векторов размерности т, матрица соседей № размерности п на к, где Биы будет набор к соседей векторов для >ого вектора, то алгоритм построения одной строки матрицы Р (иными словами вероятности перехода от вектора Di к к соседям, то есть Р^ будет следующим:
1. Высчитываются расстояния до к соседей (получается массив dists из к элементов);
ШзГз = -DjeNb.il
2. Считается сумма расстояний до к соседей;
з = ^ dists
3. 8 делится на расстояния до к соседей (получается массив dists_inv из к элементов);
з
= --
4. Считается сумма с^в^пу;
з_и1У = > dists_inv
5. dists_inv делится на s_inv (получается массив из k элементов, сумма которых равна 1).
Вышеописанный алгоритм следует повторить для каждого входного вектора, чтобы полностью определить матрицу P размерности п на п. Здесь нужно понимать, что вероятность перехода от вектора к не соседнему вектору равна 0, то есть ?. _ ■.■ у = С. В итоге, если количество соседей значительно меньше всего набора векторов (к « п). то мы получим разреженную матрицу переходных вероятностей.
4 Шум в данных
Для того, чтобы алгоритм был менее чувствителен к шуму используется стационарный режим эргодических цепей или по-другому финальное распределение. Финальным распределением матрицы переходных вероятностей P является левый собственный вектор матрицы P. Для того, чтобы очистить данные от шумных, удаляются все состояния, вероятность которых меньше некоторого порога treshold (суммы среднего значения по вектору и его среднеквадратичного отклонения).
treshold = а + I— у (д, —
В данном случае состояниями являются сами входные векторы. Интуиция здесь такова, что финальное распределение показывает вероятность нахождения системы в состоянии i и если вероятность состояние i меньше установленного порога, то данное состояние является шумным. Алгоритм нахождения собственных векторов матриц реализован в открытой библиотеке LAPACK (Linear algebra package) и обертки под данную библиотеку существуют на многих языках программирования. Так как матрицы имеют больше одного собственного вектора нужно понимать, что нас интересует только тот вектор, который удовлетворяет следующим условиям:
1. Все значения собственного вектора (а) больше 0 и меньше 1 (V 1 О < щ < 1);
2. Собственное значение (X) при левом собственном вектора равняется 1 (аP = а);
3. Сумма значений вектора а = 1.
щ = 1
1=0
Такой вектор будет одним единственным для матрицы P эргодической марковской цепи.
4.1 Кластеры с меньшей плотностью
При удалении так называемого шума могут удалиться и кластеры с меньшей плотностью. Это исходит из того, что вероятности переходов создаются на основе расстояния между векторами, а в кластерах с низкой плотностью расстояния между векторами больше чем обычно. Поэтому если в данных существуют два кластера с сильно различными плотностями распределений, то наименее плотный кластер удалится как шум. Для решения данной проблемы состояния, которые были удалены как шум, проходят этап очистки от шума повторно, чтобы быть уверенными, что в оставшихся состояниях нет топологической близости.
5 Алгоритм DBSCAN
После удаления шума для кластеризации оставшихся векторов используется алгоритм DBSCAN предложенный авторами Martin Ester, Hans-Peter Kriegel, Jiirg Sander, Xiaowei Xu в 1996 году. Входными данными являются сами вектора и два параметра m и е. Смысл двух параметров состоит в том, что если в окрестности е вектора Di находятся m векторов, то вектор Di является корневым (является новым кластером или принадлежит к существующему). Данный алгоритм был выбран по двум причинам:
1. Работает при неопределенном числе кластеров;
2. Может найти кластеры произвольных форм.
Вместо алгоритма DBSCAN возможно использование любого другого алгоритма, имеющего вышеописанные черты. Параметр е для DBSCAN вычисляется адаптивно по ходу работы общего предложенного ал-
горитма (см. пункт 6) и вычисляется как среднее расстояние по к соседям для всех векторов:
1 _ _
0,11
I ^ " 1 1=0
В данном случае под п понимается количество векторов в некотором наборе (Такая интерпретация поможет в понимании общего алгоритма МСБВ8САИ). Параметр т задается вручную.
6 MCDBSCAN
Для полного определения алгоритма МСБВ8САИ нужно понимать, что левый собственный вектор матрицы Р будет единственным только в случае, если матрица является эргодической. Если же матрица не будет эргодической, то свойство однозначности левого собственного вектора, чьи значения будут положительны и будут в сумме давать единицу, теряет силу. Для того, чтобы избежать таких ситуаций в начале алгоритма делается проверка на эргодичность. Проверка со стоит в том, что если существует более одного левого собственного вектора с необходимыми свойствами, то матрица не является эргодической. В этом случае на начальном этапе данные разбиваются на начальные кластеры с помощью БВ8САИ, где уже при помощи МСБВ8САИ ищутся подкластеры. Параметр е считается точно также, как было описано в пункте 5. При достаточно большом выборе к не эргодичность матрицы говорит о том, что некоторые данные сильно уплотнены и отстоят далеко друг от друга и также между ними очень малое количество шума.
Объединение вышеперечисленных
свойств, методов и алгоритмов создает предложенный алгоритм под названием МСБВ8САИ.
Обобщенный алгоритм:
1. Если матрица не эргодическая, то разбить на кластеры с помощью алгоритма DBSCAN, подбор параметров такой же, как описанный в пункте 5 (будем называть эти кластеры первичными);
2. Для каждого первичного кластера построить новые матрицы переходов (см. пункт 3);
3. Для каждой матрицы переходов найти левый собственный вектор (см. пункт
4);
4. Удалить шум в данных (см. пункт 4);
5. Откластеризовать очищенные данные с помощью DBSCAN (см. пункт 5)
6. Для векторов, удаленных в качестве шума проделать шаги 4-6.
Условием остановки алгоритма будет то, что DBSCAN на 5 шаге не даст никаких кластеров.
7 Эксперименты и исследования
Первый этап экспериментов проходил на игрушечных тестовых данных (toy datastets) из библиотеки sklearn. Рис. 1 показывает результаты кластеризации некоторых алгоритмов на игрушечном наборе данных. На Рис. 2 можно увидеть результаты кластеризации алгоритма MCDBSCAN с параметрами k и m. Как можно увидеть из Рис. 2 предложенный алгоритм неплохо справляется с игрушечными данными, но также имеются не совсем удачные результаты кластеризации при неправильном подборе параметров.
Рис. 1. Результаты кластеризации некоторых алгоритмов
Рис. 2. Результаты кластеризации МСБВ8САИ
К примеру, возможны такие случаи как показаны на Рис. 3.
Рис. 3. Не совсем удачный пример кластеризации
Интересная особенность данного алгоритма выявляется при удалении шумов. Даже сильно зашумленные данные могут быть неплохо откластеризованы как показано на рис. 4.
Рис. 4. Слева исходные данные, справа результат кластеризации
Следующий этап экспериментов проводился по набору рукописных цифр, также взятых из библиотеки skleam. В данном эксперименте кластеризаторы будут выступать в роли классификатора цифр. В основу метрики качества будет лежать отношение неправильных цифр в кластере к общему числу цифр в кластере. Кластер будет классифицировать цифру 1, если наибольшее количество цифр в кластере будет цифра 1. Метрика качества выбрана не типичная для классификаторов, так как кластеризаторы не предназначены для классификации данных и метрики, используемые для классификаторов, могут не подойти в данном эксперименте.
Рис. 5 Среднее значение кластеров, обнаруженных алгоритмом MCDBSCAN. Надписи над цифрами обозначают какие цифры учувствуют в кластере. Например, {г ]} означает, что цифра 1 встретилась в кластере) раз.
Рис. 6. Среднее значение кластеров, обнаруженных алгоритмом ктеаш++. Надписи над цифрами обозначают то же, что и на рис. 5.
Тесты проводились следующим образом. Сначала запускался алгоритм MCDBSCAN с параметрами к = 30, т =50, затем запускался ктеаш++ с заранее заданным количеством кластеров равным количеству кластеров найденным алгоритмом MCDBSCAN. Результаты показаны на Рис. 5 и Рис. 6. Исходя из рисунков можно сказать, что MCDBSCAN дает более «чистые» кластеры, чем ктеаш++, то есть кластерам принадлежит только одна цифра. Качество алгоритма MCDBSCAN по вышеуказанной метрике составляет около 0.437, для ктеаш++ составляет 1.6117. Исходя из результатов можно сделать вывод, что качество кластеризации алгоритма MCDBSCAN при использовании вышеуказанной метри-
ки значительно выше, чем у алгоритма kmeans++.
8 Заключение
Предложенный алгоритм, несмотря на свои существенные плюсы, имеет ряд проблем. Одна из проблем это подбор параметров. Хотя при некоторых условиях от варьирования параметров качество кластеризации не претерпевает значительных изменений, в некоторых случаях, когда формы кластеров имеют нетривиальный вид, неудачный подбор параметров может значительно ухудшить качество кластеризации. Также при подборе параметров немаловажно знать хотя-бы примерное количество кластеров. Еще одна проблема состоит в вычислительной сложности. Операция нахождения собственного вектора матрицы не самая простая задача в численных методах. Несмотря на вышеизложенные проблемы, данный алгоритм имеет место быть как один из рабочих инструментов для кластерного анализа данных.
9 Список литературы
Ester M. et al. A density-based algorithm for discovering clusters in large spatial databases with noise //Kdd. - 1996. - Vol. 96. - No. 34. - С. 226-231.
Кельберт М., Сухов Ю. Вероятность и статистика в примерах и задачах. Том 2. Марковские цепи как отправная точка теории случайных процессов и их приложения. - Litres, 2017.
Arthur D., Vassilvitskii S. k-means++: The advantages of careful seeding //Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms. - Society for Industrial and Applied Mathematics, 2007. - С. 1027-1035.
Comparing different clustering algorithms on toy datasets. URL: http://scikit-
learn.org/stable/auto_examples/cluster/plot_clust er_comparison.html (дата обращения 01.12.2017).