Участник:Антон Тодуа/Partitioning Around Medoids (PAM): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 136: Строка 136:
  
  
Значение <math>T_{ijh}</math> представляет собой число, которое добавляется к непохожесть <math>j</math>-го объекта в результате выполнения операции обмена <math>i</math>-го и <math>h</math>-го (выбора h-го объекта в качестве медоида, вместо i-го объекта).
+
Значение <math>T_{ijh}</math> представляет собой число, которое добавляется к значению <math>D_{j}</math> в результате выполнения операции ''обмена'' <math>i</math>-го медоида и <math>h</math>-го объекта.
  
 
=== Схема реализации последовательного алгоритма ===
 
=== Схема реализации последовательного алгоритма ===

Версия 11:56, 12 октября 2016

Основные авторы описания: Тодуа А.Р., Гусева Ю.В.

1 Свойства и структура алгоритма

1.1 Общее описание алгоритма

Кластеризация – это процесс автоматического разбиения некоторого множества элементов на группы(кластеры) на основе степени их схожести. Для лучшего осознания, что такое кластер, рассмотрим пример.

Рисунок 1.

В этом небольшом наборе данных четко выделяются две различные группы объектов,а именно: {1, 2, 3} и (4, 5, 6}. Такие группы и называются кластерами, и обнаружить их является целью кластерного анализа.

Таким образом, у кластера можно выделить два признака

● внутренняя однородность;

● внешняя изолированность.

Для чего используется кластеризация?

● Группировка объектов

● Распознавание образов

● Выявление структуры данных

● Сжатие данных

Для чего используется кластеризация?

● классификация результатов поиска (nigma, yippy,quintura)

● автоматическое построение каталогов

● работа только с несколькими представителями кластеров

● сегментация изображений — компьютерная графика

● кластеризация документов, таблиц и др.данных

● выделение групп клиентов, покупателей,товаров для разработки отдельных стратегий

Очевидно, что спектр применений кластерного анализа очень широк: в археологии, медицине, психологии, химии, биологии, государственном управлении, филологии, антропологии, маркетинге, социологии и других дисциплинах.

По типу обработки данных можно выделить два класса методов кластерного анализа:

Иерархические методы:

Агломеративные методы AGNES (Agglomerative Nesting):

- CURE;

- ROCK;

- CHAMELEON и т.д.

Дивизимные методы DIANA (Divisive Analysis):

- BIRCH;

- MST и т.д.

Неиерархические методы.

Итеративные

- k-means

- k-medoids

- CLOPE

- LargeItem и т.д.

Самый распространённый вариант реализации k-medoids называется PAM (Partitioning Around Medoids). Он представляет собой «жадный» алгоритм с очень неэффективной эвристикой. Данный метод был предложен Кауфманом в 1987 году.

Алгоритм начинается с выбора набора данных, состоящих из медоидов и остальных объектов. После выбора k произвольных объектов в качестве медоидов, необходимо для каждой пары {x_i} и {m_k} вычислить значение S({x_{i}}{m_{k}}). По ходу выполнения алгоритма происходит итеративная замена одного из медоидов x_i одним из остальных объектов m_k, если посчитанное ранее значение S меньше нуля. Процесс будет повторятся, пока медоиды не стабилизируются.

1.2 Математическое описание алгоритма

В качестве исходных данных алгоритм принимает:

  • Симметрическую матрицу D порядка N с нолями на главной диагонали для N объектов кластеризации: i-я строка матрицы D определяется расстояние от i-го объекта кластеризации до каждого из остальных объектов кластеризации
  • Число кластеров K, при этом: K \lt N

Для заданных входных данных, алгоритм выбирает K объектов - медоидов (medoids) из N объектов кластеризации. Все медоиды относится к разных кластерам и являются их характерными представителями. Кластеры остальных объектов (не медоидов) совпадают с кластером ближайшего к ним медоида. Ближайший к i-му объекту медоид будем коротко назвать медоидом i-го объекта. Выбор медоидов осуществляется исходя из минимизации среднего расстояния (average dissimilarity) между объектами внутри одного кластера. От минимизации среднего расстояния можно перейти к минимизации суммы расстояний от объектов до их медоидов. Такой переход не повлияет на выбор медоидов, но позволит не накапливать ошибки округления, возникающие в результате операции деления. Стоит отметить, что в общем случае расстояние между объектами следует понимать как меру похожести (similarity) объектов.

Для дальнейшего описания алгоритма введём следующие обозначения:

  • U – множество объектов кластеризации, не выбранных в качестве медоидов
  • S – множество объектов кластеризации, выбранных в качестве медоидов
  • C_{ij} – изменение расстояния от j-го объекта до его медоида в результате выбора i-го объекта в качестве медоида
  • T_{ijh} – изменение расстояния от j-го объекта до его медоида, в результате обмена i-го медоида на h-й объект

Под обменом i-го медоида на h-й объект будем понимать операцию, в результате которой i-й медоид перестаёт быть медоидом, а h-й объект выбирается в качестве медоида:

\begin{align} S & = S - \{i\} + \{h\} \\ U & = U - \{h\} + \{i\} \end{align}

Перед выполнением алгоритма множество Uсодержит все объекты кластеризации, а множество S – пусто. Описание значений C_{ij} и T_{ijh} и способа их вычисления будет дано при описании макроструктуры алгоритма.

Выполнение алгоритма включает в себя подготовительную стадию BUILD и итерационную стадию SWAP.


Стадия BUILD предназначена для построения начального множества медоидов и состоит в последовательном выполнении следующих шагов:

1. Добавить в множество S объект, сумма расстояний от которого до всех остальных объектов минимальна (самый центральный объект):

[math]S = S + \{ arg\min_{i \in U} \sum_{j \in U} d_{ij} \}[/math]

2. Выбрать ещё K-1 медоидов следующим образом

[math]S = S + \{ arg\max_{i \in U} \sum_{j \in U - \{i\}} C_{ij} \}[/math]


Стадия SWAP является итерационной, одна итерация состоит в попытке улучшить кластеризацию путём выполнения обмена. На каждой итерации выполняется операция arg\min_{i \in S, h \in U} \sum_{j \in U - \{h\}} T_{ijh}. Если для найденной пары i \in S и h \in U значение \sum_{j \in U - \{h\}} T_{ijh} меньше ноля (это означает, что кластеризацию можно улучшить), то выполняется обмен i-го медоида и h-го объекта. В противном случае дальнейшее улучшение кластеризации с помощью обмена невозможно и алгоритм завершает свою работу.


В результате работы алгоритма множество S будет содержать ровно K объектов – медоидов. Как было сказано j-й объект лежит в том же кластере, что и его медоид: arg\min_{i \in S} d_{ij}

1.3 Вычислительное ядро алгоритма

Из математического описания алгоритма следует, что вычислительное ядро алгоритма сосредоточено в итерационной стадии SWAP. Одна итерация состоит в вычислении:

[math]arg\min_{i \in S, h \in U} \sum_{j \in U - \{h\}} T_{ijh}[/math]

Смысл этого выражения в том, что выполняется выбор такой пары медоида i и объекта h операция обмена которых приведёт к улучшению кластеризации или же делается вывод о невозможности такого обмена и работа алгоритма завершается.

1.4 Макроструктура алгоритма

Для описания значений C_{ij} и T_{ijh} и способа их вычисления введём следующие обозначения (в дополнение к обозначениям, введённым в математическом описании алгоритма):

  • D_{i} – расстояние от i-го объекта до его медоида
  • E_{i} – расстояние от i-го объекта до второго ближайшего к нем медоида

Очевидно, что для любых объектов верно неравенство D_{i} \lt = E_{i}. Отметим также, что значения D_{i} и E_{i} могут меняться при изменениях в множествах U и S.


Значение C_{ij} представляет собой число, на которое уменьшается значение D_{j} в результате выбора i-го объекта в качестве медоида. Очевидно, что данное значение всегда неотрицательно. Выбор i-го объекта в качестве медоида влечёт за собой один из следующих двух случаев. В первом случае, когда D_{j} \lt = d_{ij}, величина D_{j} не изменится, т.к. ближайший к j-му объекту медоид останется на том же расстоянии от него, следовательно будет справедливо равенство C_{ij} = 0. В втором случае, когда D_{j} \gt d_{ij}, ближайшим к j-му объекту медоидом станет новый выбранный медоид (i-ый объект), следовательно будет справедливо равенство C_{ij} = D_{j} - d_{ij}.


Значение T_{ijh} представляет собой число, которое добавляется к значению D_{j} в результате выполнения операции обмена i-го медоида и h-го объекта.

1.5 Схема реализации последовательного алгоритма

В соответствии с приведённым выше математическим описанием последовательное выполнение алгоритма представляет собой выполнение стадии BUILD, а затем последовательное повторение итераций стадии SWAP до тех пор пока существует пара объектов (один из которых медоид, а другой – нет), которые можно обменять, чтобы улучшить кластер.

1.6 Последовательная сложность алгоритма

При описании последовательной сложности будем считать, что выполняется распределение N объектов по K кластерам. В соответствии с приведённым математическим описанием алгоритм включает в себя подготовительную стадию BUILD и итерационную стадию SWAP.

Стадия BUILD сводится к вычислению:

Одной операции [math]arg\min_{i} \sum_{j} d_{ij}[/math]
[math]K-1[/math] операций [math]arg\max_{i \in U} \sum_{j \in U - \{i\}} C_{ij}[/math]

Т.е. стадия BUILD требует:

[math]K * N^2[/math] операций сложения
[math]K * N[/math] операций сравнения (определения максимума/минимума)
Около [math]K * N^2[/math] вычислений [math]C_{ij}[/math]

Одна итерация стадии SWAP сводится к вычислению:

[math]arg\min_{i \in S, h \in U} \sum_{j \in U - \{h\}} T_{ijh}[/math]

Т.е. одна итерации стадии SWAP требует порядка:

[math]K * N^2[/math] операций сложения
[math]K * N[/math] операций сравнения (определения максимума/минимума)
[math]K * (N - K) * (N - K - 1)[/math] вычислений [math]T_{ijh}[/math]

Вычисления C_{ij} и T_{ijh} имеют константную сложность для любых i, j и h, поэтому сложность одной итерации алгоритма определяется как O(K * N^2). Таким образом можно отнести алгоритм PAM к алгоритмам с кубической сложностью.

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

1.9 Входные и выходные данные алгоритма

Входные данные:

1. Матрица непохожести объектов кластеризации (dissimilarity matrix) [math]D[/math] (элементы [math]d_{ij}[/math]).
Дополнительные ограничения:
- [math]D[/math] – симметрическая матрица порядка [math]N[/math], т.е. [math]d_{ij}= d_{ji}, i, j = 1, \ldots, N[/math]
- [math]D[/math] – содержит нули на главной диагонали, т.е. [math]d_{ii}= 0, i = 1, \ldots, N[/math]
2. [math]K[/math] - число кластеров, на которое следует разбить объекты кластеризации

Объём входных данных:

[math]\frac{N (N - 1)}{2}[/math] (в силу симметричности и нулевой главной диагонали достаточно хранить только  над/поддиагональные элементы). В разных реализациях эта экономия хранения может быть выполнена разным образом. 

Выходные данные:

[math]N[/math] чисел [math]k_{1}, k_{2}, \ldots, k_{N}[/math], где [math]k_{i}[/math] - целое число, соответствующее кластеру [math]i[/math]-го объекта.
Выходными данными алгоритма также можно считать [math]K[/math] чисел, задающих номера объектов кластеризации, выделенных в качестве медоидов (medoids). Однако в большинстве случаев требуется именно определение кластеров объектов, а не поиск соответствующих медоидов.

Объём выходных данных:

[math]N[/math] (кластеры объектов кластеризации)

1.10 Свойства алгоритма

Ограничения: небольшой объем данных. Достоинства: простота использования; быстрота использования; понятность и прозрачность алгоритма, алгоритм менее чувствителен к выбросам в сравнении с k-means. Недостатки: необходимо задавать количество кластеров; медленная работа на больших базах данных.

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Локальность данных и вычислений

2.3 Возможные способы и особенности параллельной реализации алгоритма

2.4 Масштабируемость алгоритма и его реализации

PAM работает эффективно для небольших наборов данных, но не очень хорошо масштабируется для больших наборов данных

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

2.7 Существующие реализации алгоритма

3 Литература