Кластеризация данных на основе нейронного газа и марковских

advertisement
УДК 004.67
Кластеризация данных на основе нейронного газа и марковских
алгоритмов
Федоренко Ю. С., студент
Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана,
кафедра «Системы обработки информации и управления»
Научный руководитель: Гапанюк Ю. Е., к.т.н, доцент
Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана
gapyu@bmstu.ru
1. Введение
На сегодняшний день значительно возросла потребность в кластеризации различных
массивов данных. Это связано с ростом количества данных, вследствие чего
проанализировать их вручную не представляется возможным. К примеру, с каждым годом
растет число пользователей Интернета, которые пополняют всемирную паутину
различными данными. Анализируя их, можно находить группы пользователей с
похожими предпочтениями, что в свою очередь помогает определить, какая информация
будет этим людям наиболее интересна. Последнее оказывается полезным для различных
маркетинговых исследований. Также кластеризация успешно применяется во многих
других областях науки — биологии, медицине, экономике и т. д.
Несмотря на актуальность задачи кластеризации, на сегодняшний день она
окончательно не решена. Существующие алгоритмы кластеризации имеют ряд
недостатков. Одни плохо масштабируются на большие объемы данных, другие требуют
априорных знаний о входных данных (например, число кластеров), для работы третьих
необходимо делать предположения о распределении входных данных, которые нередко
основываются лишь на эвристике и интуиции исследователя. Универсального алгоритма,
позволяющего решать произвольные задачи кластеризации, не существует.
В данной статье предложена новая техника кластеризации, в основе которой лежат
два метода: нейронный газ, применяемый для анализа топологии входных данных, и
марковский алгоритм кластеризации. Комбинация двух данных методов позволяет решить
http://sntbul.bmstu.ru/doc/730611.html
некоторые из вышеперечисленных проблем и показывает достаточно высокий результат
на практике.
2. Постановка задачи кластеризации
Математическая постановка задачи кластеризации выглядит следующим образом:
имеется множество X — пространство объектов и Y – множество кластеров (изначально
об Y ничего не известно, может быть неизвестно даже число кластеров). Обычно X
представляет собой n-мерный вектор:
"x Î X : x = ( x1 ,..., x n ) , где x i Î R n , "i = 1, n
(1)
Также задана функция расстояния на множестве X:
r : X ´ X ® [0, ¥)
(2)
Следует отметить, что сама функция r должна быть метрикой, т.е. обладать
следующими тремя условиями [1]:
1). Симметрия: r ( x, y) = r ( y, x)
2). Тождественность: r ( x, y) = 0 Û x = y
3). Неравенство треугольника: r ( x, y) + r ( y, z) £ r ( x, z)
Требуется построить алгоритм α : X ® Y такой, чтобы каждый кластер состоял из
близких объектов, и объекты разных кластеров были существенно различны.
Уже в самой постановке задачи кластеризации просматривается ряд трудностей [1]:
1). Точной постановки задачи кластеризации не существует.
2). Существует множество критериев качества кластеризации, однако нет
универсального критерия.
3). Число кластеров Y очень часто неизвестно заранее.
4). Результат кластеризации существенно зависит от метрики r , задаваемой
субъективно.
3. Обзор существующих методов кластеризации
Существующие алгоритмы решения задачи кластеризации можно разделить на 4
большие группы:
1. Иерархические алгоритмы кластеризации
2. Статистические и вероятностные методы кластеризации
2.1. Четкие методы (каждый образец к 1-му классу)
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
2.2. Нечеткие методы (каждый образец к нескольким классам)
3. Графовые методы
4. Подходы на основе искусственного интеллекта (нейронные сети, эволюционные
методы)
Коротко рассмотрим каждую из этих групп:
3.1. Иерархические алгоритмы кластеризации
Данные алгоритмы строят не одно разбиение выборки на непересекающиеся классы,
а систему вложенных разбиений. Результат разбиения обычно представляется в виде
таксономического дерева – дендрограммы. Алгоритм иерархической кластеризации
строит иерархию групп, объединяя на каждом шаге две самые похожие группы. В начале
каждая группа состоит из одного элемента. На каждой итерации вычисляются попарные
расстояния между группами и группы, оказавшиеся самыми близкими, объединяются в
новую группу. Так повторяется, пока не останется одна группа[2].
Данные алгоритмы позволяют находить кластеры любой формы. Однако они
являются вычислительно затратными (сложность O(n 3 ) , в отдельных случаях удается
достичь сложности O(n 2 ) для определенных данных). Поэтому для кластеризации
больших объемов данных данная группа применима с трудом.
3.2. Статистические и вероятностные алгоритмы кластеризации
Данные типы алгоритмов основаны на предположении, что кластеры неплохо
описываются некоторым семейством вероятностных распределений. Задача сводится к
разделению смеси распределений по конечной выборке. Алгоритмы из этой группы
можно разделить на две группы: четкие алгоритмы (такие, для которых каждый образец
соответствует только одному классу, например, k-means, EM-алгоритм или DBSCAN) и
нечеткие алгоритмы (такие, для которых каждый образец может соответствовать
нескольким классам, например, c-means).
Данная группа алгоритмов достаточно эффективно работает в определенных
задачах, однако они обладают рядом недостатков, что значительно ограничивает область
их применения. В частности, k-means хорошо находит только кластеры сферической
формы, EM-алгоритм и DBSCAN имеют достаточно высокую сложность O(n 2 ) (она
может быть сокращена до O(n log n) при использовании специальных структур данных,
но они, как правило, не работают для данных высокой размерности). Также данные
http://sntbul.bmstu.ru/doc/730611.html
алгоритмы часто требуют в качестве входного параметра количество кластеров, которое
на практике редко бывает известным.
3.3. Графовые алгоритмы кластеризации
Данная группа алгоритмов основана на теории графов. Суть данной группы
заключается в том, что выборка объектов представляется в виде графа G =(V, E),
вершинам которого соответствуют объекты, а ребра имеют вес, равный расстоянию
между объектами. Здесь можно выделить несколько наиболее известных алгоритмов,
таких
как
алгоритм
выделения
связных
компонент,
алгоритм
минимального
покрывающего дерева, послойная кластеризация. Многие из этих алгоритмов также
имеют достаточно высокую сложность, делающую их неприменимыми для решения задач
с большими объемами данных. Однако в данной группе алгоритмов существуют и более
эффективные алгоритмы, один из них будет более подробно рассмотрен в п. 4.2.
3.4. Подходы на основе искусственного интеллекта
Данные подходы основаны на использовании нейронных сетей или генетических
алгоритмов при кластеризации данных. Существует множество различных методов,
относящихся к данной группе. Многие из этих алгоритмов эффективно отображают
топологию входных данных, однако использовать их непосредственно для кластеризации
не получается, поэтому необходимо разрабатывать модификации данных алгоритмов для
решения задач кластеризации.
4. Создание нового алгоритма кластеризации
Предложенный алгоритм строится на базе нейронного газа и марковского алгоритма
кластеризации. Чтобы понять преимущества такого подхода, вначале рассмотрим
нейронный газ и марковский алгоритм кластеризации в отдельности.
4.1. Нейронный газ
Нейронный газ — это самоорганизующаяся нейронная сеть (реализующая обучение
без учителя), которая по мере поступления входных данных позволяет выявить их
топологическую структуру. Принципиальное отличие данного алгоритма от множества
других алгоритмов обучения без учителя заключается в том, что нейронный газ
изначально не требует никаких данных о предметной области (например, количества
кластеров) [3]. На вход данному алгоритму подаются параметры, влияющие на способ
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
построения нейронной сети, которая формируется на основании входных данных.
Нейронная сеть, полученная в результате работы алгоритма, отображает топологию
входных данных и может использоваться, например, для их классификации или
кластеризации.
Алгоритм нейронного газа выглядит следующим образом[4]:
1. Инициализировать 2 узла нейронной сети (из исходных данных) и соединить их
связью с возрастом, равным 0. В качестве весовых коэффициентов этих узлов берутся
координаты соответствующих точек.
2. Подать на вход алгоритма произвольный вектор x .
3. Найти 2 нейрона s и t, ближайшие к x . Обычно в качестве меры расстояния
выбирается Евклидова метрика, однако, в качестве меры расстояния может быть также
использована мера Жаккара, косинусный коэффициент и т. д. Дальнейшее описание
алгоритма будет приведено для Евклидовой меры.
4. Обновить ошибку нейрона-победителя (нейрон, для которого расстояние до
входного вектора x минимально) (3):
ES = ES + wS - x
2
(3),
где E S — ошибка нейрона s, w S — вектор весов нейрона s.
5. Сместить нейрон s и всех его соседей (4):
w S = w S + e w (w S - x)
w n = w n + e n (w n - x)
(4),
Где e w , e n — коэффициенты обучения нейрона-победителя и его соседей
соответственно. В классическом алгоритме нейронного газа они остаются постоянными на
протяжении всего процесса обучения. Эти параметры являются входными параметрами
алгоритма, при этом обычно выбирают e w = 100...1000e n .
6. Увеличить на 1 возраст дуг, исходящих от s.
7. Если нейроны s и t соединены, то обнулить возраст их связи; если связи нет, то
создать новую.
8. Удалить все дуги с возрастом, превышающим agemax (параметр алгоритма).
9. Если номер итерации кратен lmax , то осуществить вставку нового узла:
— найти нейрон u с максимальной локальной ошибкой;
— среди соседей u найти нейрон v с максимальной ошибкой;
http://sntbul.bmstu.ru/doc/730611.html
— создать узел r с вектором весов равным w r =
wu + wv
2
— заменить связь (u, v) на (u, r) и (v, r)
— уменьшить ошибки нейронов u и v, установить значение ошибки нейрона r
следующим образом:
Eu = Eu × a
Ev = Ev × a
E r = Eu
10. Уменьшить ошибки всех нейронов j на долю b : E j = E j × b
11. Если критерий останова не выполнен, то перейти на шаг 2.
Стоит заметить, что четкого критерия останова классический алгоритм нейронного
газа не дает, поэтому выбор критерия останова остается на усмотрение исследователя.
Завершить работу алгоритма можно, когда закончатся входные данные, когда сеть
достигнет заданного размера или когда средняя локальная ошибка всех нейронов начнет
на каждой итерации изменяться меньше, чем на заданное число e .
Преимущества данного алгоритма заключаются в том, что он позволяет определить
топологию входных данных без какой-либо априорной информации об этих данных.
Кроме того, задавая ограничение на размер строящейся нейронной сети, можно
эффективно управлять ресурсами, которые потребляет алгоритм, и временем его работы.
К недостаткам данного алгоритма относится то, что на его настройку влияют 6
параметров ( e w , e n , l , agemax , a , b ), подобрать которые оптимальным образом для
конкретной задачи может оказаться непросто (процедура cross-validation для 6 параметров
получается слишком затратной в плане вычислений). Второй недостаток заключается в
том, что классический алгоритм нейронного газа выдает нейронную сеть, отображающую
топологию входных данных. Чтобы решать задачу классификации или кластеризации,
требуется
научиться
использовать
полученную
сеть
для
нужных
целей,
либо
модифицировать алгоритм нейронного газа.
4.2. Марковский алгоритм кластеризации
MCL (Markov Clustering Algorithm) — быстрый и масштабируемый алгоритм
кластеризации, основанный на моделировании потока в графе. Он был создан в 2000 году
в Центре математических и компьютерных наук в Нидерландах. На сегодняшний день
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
данный алгоритм имеет широкий спектр применений, например, для данных в
молекулярной биологии[5].
В основе алгоритма лежит идея моделирования потока в графе с использованием
двух простых алгебраических операций на матрицах: распространение (expansion) и
накачивание (inflation). Распространение
соответствует
стандартному умножению
стохастических матриц (матрица называется стохастической, если каждый ее столбец в
сумме дает 1). В основе накачивания лежит умножению Адамара, которое выполняется
следующим образом (5):
æ A11 K A1m ö æ B11 K B1m ö æ A11B11 K A1m B1m ö
÷÷
÷÷ = çç
÷÷ o çç
A o B = çç
è An1 K Anm ø è Bn1 K Bnm ø è An1 Bn1 K Anm Bnm ø
(5)
Сама операция накачивания записывается следующим образом (6):
Г r ( M ij ) =
M ijr
åM
r
ij
(6),
j
где M ijr — матрица, полученная возведением в степень исходной матрицы по правилу
Адамара (5);
åM
r
ij
— сумма всех элементов j-го столбца матрицы M, каждый из которых
j
возведен в степень r.
На вход алгоритма подается граф, представленный в виде попарного набора вершин
с весами связывающих их дуг (предполагается, что граф неориентированный). Сам
алгоритм базируется на следующих предположениях:
1. Между вершинами, относящимися к одному кластеру, будет много дуг, и вес этих
дуг будет высокий по сравнению с межкластерными дугами.
2. Из первого предположения следует, что случайный обход графа (такой, что
вероятность попасть в соседнюю вершину прямо пропорциональна весу соответствующей
дуги) будет как правило проходить по вершинам одного кластера и редко выходить за его
пределы.
Исходя из этих предположений, алгоритм упрощенная схема алгоритма выглядит
следующим образом (рис. 1) [6]:
http://sntbul.bmstu.ru/doc/730611.html
Начало
Составить матрицу M1, которая
случайным образом обходит
исходный граф G
Difference – Нулевая
матрица?
Да
Нет
M2=M1*M1
(Распространение)
M1=Г(M2)
(Накачивание)
Конец
Difference = M1 - M2
Рис. 1. Упрощенная блок-схема алгоритма MCL
Таким образом, алгоритм моделирует прохождение по случайному пути в графе.
Распространение соответствует длинному пути в графе, а длинный путь с большой
вероятностью проходит в пределах одного кластера. В свою очередь операция
накачивания будет уменьшать маленькие вероятности, соответствующие межкластерным
переходам,
делая
их
практически
невозможными.
Получается,
что
операция
распространения рассеивает поток внутрь кластера, а операция накачивания устраняет ту
небольшую
часть
потока,
которая
стремится
наружу
кластера.
Эта
идея
проиллюстрирована на рис. 2.
Рис. 2. Идея работы MCL, представленная в графическом виде (адаптировано из [6])
В результате матрица будет изменяться до тех пор, пока не наступит равновесие.
Состояние равновесия соответствует матрице, у которой нет путей между кластерами, а
присутствуют только внутрикластерные связи.
Данный алгоритм имеет несколько важных преимуществ[7]:
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
1. Он не требует задания количества кластеров. Число кластеров определяется
автоматически, а их размер регулируется одним параметром (по сути это степень r, в
которую мы возводим матрицу при операции накачивания).
2. Данный алгоритм является быстрым и хорошо масштабируемым для больших
данных. Его сложность составляет O(n*k*k), где n — количество узлов в графе, а k количество ресурсов, выделенных под каждый узел. Таким образом, данный алгоритм
позволяет контроливировать число потребляемых ресурсов, что полезно при работе с
большими объемами данных.
Однако у MCL есть и недостатки:
1. Он плохо находит кластеры с большим диаметром.
2. Часто кластеры получаются разного размера (первый кластер может включать на
порядок больше точек, чем последующие кластеры; а несколько последних кластеров
имеют размер всего в несколько элементов).
3. На вход алгоритма требуется подать матрицу с расстояниями между вершинами,
которая не всегда известна изначально. А вычисление всех попарных расстояний имеет
сложность O(n*n/2), где n — количество точек. При работе с десятками миллионов точек
такая сложность уже неприемлема.
4.3. Предложенный алгоритм
Несмотря на множество преимуществ, недостатки алгоритма MCL делают его плохо
применимым для решения значительного класса задач (например, в силу недостатка 3 (см.
п. 4.2) MCL невозможно применять для кластеризации больших объемов данных,
заданных в виде точек в пространстве). Кроме того, не всегда бывает понятно, как
выбирать веса дуг графа на основе расстояний между вершинами. В результате MCL не
всегда правильно определяет топологию входных данных, из-за чего число кластеров и их
размер могут не соответствовать действительности.
С другой стороны, эти проблемы достаточно хорошо решает нейронный газ. Он
быстро справляется с задачей выявления топологии входных данных. Ограничив
допустимый размер нейронной сети, можно удобным образом регулировать сложность
алгоритма в плане вычислений. Однако на выходе у него получается лишь нейронная сеть,
отображающая топологию входных данных. Использовать ее непосредственно для
кластеризации невозможно. Зато эта сеть может быть подана на вход алгоритма MCL для
осуществления кластеризации данных.
http://sntbul.bmstu.ru/doc/730611.html
Предложенный алгоритм объединяет преимущества MCL и нейронного газа. Он
состоит из следующих действий:
1. Для исходных данных запустить алгоритм нейронного газа. На выходе получится
нейронная сеть со связями.
2. Подать полученную нейронную сеть на вход MCL. Стоит отметить, что для этого
не придется решать задачу формирования графа на основе исходных данных, т.к. граф уже
сформирован на первом шаге. Всем связям можно установить одинаковый вес и подать их
на вход MCL.
3. В результате 2-го шага получается разбиение узлов нейросети на кластеры. Далее
необходимо для каждого образца исходных данных найти ближайший узел. Кластер, к
которому относится этот узел, и будет присвоен данному образцу исходных данных.
Построенный алгоритм позволяет осуществлять кластеризацию больших объемов
данных, т. к. сложность нейронного газа составляет O(nk), где n — количество образцов
исходных данных, k — число нейронов будущей нейросети, k << n, при этом k может
быть ограничено исследователем. На выходе нейронного газа получается нейронная сеть
сравнительно небольшого размера, с которой MCL справляется без каких-либо
сложностей в плане вычислений. Кроме того, предложенный алгоритм строит кластеры с
несколькими центрами (несколько узлов нейросети соответствуют одному кластеру), что
позволяет находить не только сферические кластеры, но и кластеры любой формы.
Результаты экспериментов представлены в следующем пункте.
5. Эксперименты
В качестве тестового набора данных был выбран набор, известный под названием
“Ирисы Фишера”. Это набор данных для задачи классификации, на примере которого
Рональд Фишер в 1936 году продемонстрировал работу разработанного им метода
дискриминантного анализа[8]. Данный набор обычно используется для оценки работы
различных статистических алгоритмов.
Ирисы Фишера состоят из данных о 150 экземплярах ириса, по 50 экземпляров из
трёх видов — Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис
разноцветный (Iris versicolor). Для каждого экземпляра измерялись четыре характеристики
(в сантиметрах): длина чашелистика, ширина чашелистика, длина лепестка и ширина
лепестка. При этом один из классов (Iris setosa) линейно разделим от двух остальных, два
другие класса линейно неразделимы. Набор данных изображен на рис. 3.
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
Рис. 3. Ирисы Фишера
В приведенных экспериментах на Ирисах Фишера решалась задача кластеризации,
т.е. на вход алгоритма были поданы исходные данные без указания классов, к которым
они принадлежат. Результаты сравнивались для следующих алгоритмов: k-means,
EM-алгоритм [9], сеть Кохонена, DBSCAN, MCL и предложенный алгоритм (собственные
эксперименты). При этом для k-means, EM-алгоритма и сети Кохонена изначально было
задано число кластеров (3 кластера); MCL и предложенный алгоритм определяли число
кластеров автоматически. Результат представлен в таблице.
Алгоритм
Количество ошибок
k-means
EM-алгоритм
Сеть Кохонена
DBSCAN
MCL
Предложенный алгоритм
17
14
17
22
20
6
Доля правильных
результатов
88.7%
90.7%
88.7%
85.3%
86.7%
96%
Первые три алгоритма получали на вход число кластеров, последние три определяли
его автоматически. Следует заметить, что предложенный алгоритм и MCL обнаружили не
3 кластера, а 4. Получилось так, что Iris virginica описывался двумя кластерами, а не
одним (при вычислении числа ошибок считалось, что оба эти кластера соответствуют Iris
virginica).
По результатам эксперимента заметно, что предложенный алгоритм показывает
высокие результаты, сравнимые с результатами обучения с учителем для этой
выборки [9]. Удалось получить лучший результат, чем для комбинации сети Кохонена и kmeans (точность 91.25%) [10]. Таким образом, можно сделать вывод, что на тестовой
http://sntbul.bmstu.ru/doc/730611.html
выборке предложенный алгоритм показывает более высокие результаты, чем многие
традиционные алгоритмы кластеризации.
6. Заключение
В статье предложен алгоритм кластеризации, основанный на выявлении топологии
входных данных при помощи нейронного газа и последующей их кластеризации при
помощи марковского алгоритма. Нейронный газ позволяет быстро построить нейронную
сеть, отображающую топологию исходных данных. Ограничивая размер построенной
сети, можно эффективно управлять вычислительной сложностью алгоритма. Марковский
алгоритм кластеризации представляет полученную нейросеть как граф и выполняет
кластеризацию, автоматически подбирая нужное число кластеров. Нейроны сети
становятся центрами кластеров (при этом каждый кластер описывается несколькими
центрами).
Данный алгоритм показал свою эффективность в экспериментах с набором данных
“Ирисы Фишера”, достигнув более высоких результатов, чем многие традиционные и
специфические алгоритмы. К плюсам алгоритма относится скорость его работы (при этом
она может контролироваться исследователем), а также способность находить кластеры
любой формы (засчет того, что кластер описывается несколькими центрами).
Однако приведенный алгоритм обладает и недостатками. В частности, у него
имеются 8 настраиваемых параметров, половина из которых существенно влияет на
результат кластеризации. Неудачный выбор параметров приводит к тому, что алгоритм не
может корректно определить число кластеров и работает неэффективно. При этом такое
большое количество параметров невозможно подобрать при помощи кросс-валидации
(из-за вычислительной сложности), поэтому подбирать параметры приходится на основе
эвристики. Последнее затрудняет использование алгоритма, поэтому дальнейшее
направление исследований заключается в том, чтобы уменьшить число настраиваемых
параметров алгоритма.
Список литературы
1.
Воронцов К. В.
Методы
кластеризации:
курс
лекций.
Режим
доступа:
http://www.machinelearning.ru/wiki (дата обращения 10.09.14).
2.
Сегаран Т. Программируем коллективный разум: пер. с англ. А. Слинкина. СПб.:
Символ-Плюс, 2008. 368 с. [Segaran T. Programming Collective Intelligence. Sebastopol:
O’REILLY, 2008. 368 p.].
Молодежный научно-технический вестник ФС77-51038, ISSN 2307-0609
3.
Qin A. K., Suganthan P. K. Robust growing neural gas algorithm with application in cluster
analysis. Neural Networks, Vol. 17, Issues 8–9. International Neural Network Society, San
Antonio, USA, 2004. P. 1135–1148.
4.
Fritzke B. A Growing Neural Gas Network Learns Topologies. Advances in Neural
Information Processing Systems, 7. MIT Press, Cambridge MA, 1995. P. 625–632.
5.
Satuluri V., Parthasarathy S., Ucar D. Markov clustering of protein interaction networks
with improved balance and scalability. Proceedings of the First ACM International
Conference on Bioinformatics and Computational Biology (BCB '10). ACM, New York,
NY, USA, 2010. P. 247–256.
6.
Dongen S.V. Graph clustering via a discrete uncoupling process. Siam Journal on Matrix
Analysis and Applications (SIAM) 30-1. Society for Industrial and Applied Mathematics,
Philadelphia, USA, 2008. P. 121–141.
7.
Stijn Van Dongen, Cei Abreu-Goodger. Using MCL to extract clusters from networks.
Bacterial Molecular Networks: Methods and Protocols, Methods in Molecular Biology, Vol
804. Humana Press, Totowa, New Jersey, USA, 2012. P. 181–195.
8.
Fisher R.A. The use of multiple measurements in taxonomical problems. Annals of Eugenics
7, 1936. P. 179–188.
9.
Bejar J. Unsupervised Learning (Examples), 2010. Available at:
http://www.lsi.upc.edu/~bejar/apren/docum/trans/09-clusterej-eng.pdf (accessed 10.09.14).
10. Kohonen M.M. Self Organizing Map with Modified K-means clustering For High
Dimensional Data Set. International Journal of Applied Information Systems (IJAIS).
Foundation of Computer Science FCS, New York, USA, 2012. P. 34–39.
http://sntbul.bmstu.ru/doc/730611.html
Download