Иерархическая кластеризация

Материал из Викиконспекты
Версия от 13:40, 7 июня 2019; Artem Ivanov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Определение:
Иерархическая кластеризация (англ. hierarchical clustering) — множество алгоритмов кластеризации, направленных на создание иерархии вложенных разбиений исходного множества объектов.

Иерархические алгоритмы кластеризации часто называют алгоритмами таксономии. Для визуального представления результатов кластеризации используется дендрограмма — дерево, построенное по матрице мер близости между кластерами. В узлах дерева находятся подмножества объектов из обучающей выборки. При этом на каждом ярусе дерева множество объектов из всех узлов составляет исходное множество объектов. Объединение узлов между ярусами соответствует слиянию двух кластеров. При этом длина ребра соответствует расстоянию между кластерами.

Алгоритм иерархической кластеризации[править]

Дерево строится от листьев к корню. В начальный момент времени каждый объект содержится в собственном кластере. Далее происходит итеративный процесс слияния двух ближайших кластеров до тех пор, пока все кластеры не объединятся в один или не будет найдено необходимое число кластеров. На каждом шаге необходимо уметь вычислять расстояние между кластерами и пересчитывать расстояние между новыми кластерами. Расстояние между одноэлементными кластерами определяется через расстояние между объектами: [math]\mathrm{R}(\{x\}, \{y\}) = \rho(x, y)[/math]. Для вычисления расстояния [math]\mathrm{R}(U, V)[/math] между кластерами [math]\mathrm{U}[/math] и [math]\mathrm{V}[/math] на практике используются различные функции в зависимости от специфики задачи.

Функции расстояния между кластерами[править]

  • Метод одиночной связи (англ. single linkage)
[math]\mathrm{R_{min}}(U, V) = \displaystyle\min_{u \in U, v \in V} \rho(u, v)[/math]
  • Метод полной связи (англ. complete linkage)
[math]\mathrm{R_{max}}(U, V) = \displaystyle\max_{u \in U, v \in V} \rho(u, v)[/math]
  • Метод средней связи (англ. UPGMA (Unweighted Pair Group Method with Arithmetic mean))
[math]\mathrm{R_{avg}}(U, V) = \displaystyle\dfrac{1}{|U| \cdot |V|}\sum_{u \in U} \sum_{v \in V} \rho(u, v)[/math]
  • Центроидный метод (англ. UPGMC (Unweighted Pair Group Method with Centroid average))
[math]\mathrm{R_{c}}(U, V) = \displaystyle\rho^2\left(\sum_{u \in U}\dfrac{u}{|U|}, \sum_{v \in V}\dfrac{v}{|V|}\right)[/math]
  • Метод Уорда (англ. Ward's method)
[math]\mathrm{R_{ward}}(U, V) = \displaystyle\dfrac{|U| \cdot |V|}{|U| + |V|}\rho^2\left(\sum_{u \in U}\dfrac{u}{|U|}, \sum_{v \in V}\dfrac{v}{|V|}\right)[/math]

Формула Ланса-Уильямса[править]

На каждом шаге необходимо уметь быстро подсчитывать расстояние от образовавшегося кластера [math]\mathrm{W}=\mathrm{U}\cup\mathrm{V}[/math] до любого другого кластера [math]\mathrm{S}[/math], используя известные расстояния с предыдущих шагов. Это легко выполняется при использовании формулы, предложенной Лансом и Уильямсом в 1967 году:

[math]\mathrm{R}(W, S) = \alpha_U \cdot \mathrm{R}(U, S) + \alpha_V \cdot \mathrm{R}(V, S) + \beta \cdot \mathrm{R}(U, V) + \gamma \cdot |\mathrm{R}(U, S) - \mathrm{R}(V, S)| [/math]

, где [math]\alpha_U, \alpha_V, \beta, \gamma [/math] — числовые параметры.

Каждая из указанных выше функций расстояния удовлетворяет формуле Ланса-Уильямса со следующими коэффициентами:

  • Метод одиночной связи (англ. single linkage)
[math]\alpha_U = \dfrac{1}{2}, \alpha_V = \dfrac{1}{2}, \beta = 0, \gamma = -\dfrac{1}{2}[/math]
  • Метод полной связи (англ. complete linkage)
[math]\alpha_U = \dfrac{1}{2}, \alpha_V = \dfrac{1}{2}, \beta = 0, \gamma = \dfrac{1}{2} [/math]
  • Метод средней связи (англ. UPGMA (Unweighted Pair Group Method with Arithmetic mean))
[math]\alpha_U = \dfrac{|U|}{|W|}, \alpha_V = \dfrac{|V|}{|W|}, \beta = 0, \gamma = 0 [/math]
  • Центроидный метод (англ. UPGMC (Unweighted Pair Group Method with Centroid average))
[math]\alpha_U = \dfrac{|U|}{|W|}, \alpha_V = \dfrac{|V|}{|W|}, \beta = -\alpha_U \cdot \alpha_V, \gamma = 0[/math]
  • Метод Уорда (англ. Ward's method)
[math]\alpha_U = \dfrac{|S|+|U|}{|S|+|W|}, \alpha_V = \dfrac{|S|+|V|}{|S|+|W|}, \beta = \dfrac{-|S|}{|S|+|W|}, \gamma = 0 [/math]

Свойство монотонности[править]

Введем обозначение [math]\mathrm{R_t}[/math] — расстояние между кластерами, выбранными на шаге [math]t[/math] для объединения.

Дендрограмма позволяет представлять зависимости между множеством объектов с любым числом заданных характеристик на двумерном графике, где по одной из осей откладываются все объекты, а по другой — расстояние [math]\mathrm{R_t}[/math]. Если не накладывать на это расстояние никаких ограничений, то дендрограмма будет иметь большое число самопересечений и изображение перестанет быть наглядным. Чтобы любой кластер мог быть представлен в виде непрерывного отрезка на оси объектов и ребра не пересекались, необходимо наложить ограничение монотонности на [math]\mathrm{R_t}[/math].

Определение:
Функция расстояния [math]\mathrm{R}[/math] является монотонной, если на каждом следующем шаге расстояние между кластерами не уменьшается: [math]\mathrm{R_2} \leqslant \mathrm{R_3} \leqslant \dots \leqslant \mathrm{R_m}[/math]


Расстояние является монотонным, если для коэффициентов в формул Ланса-Уильямса верна теорема Миллигана.

Теорема (Миллиган, 1979):
Если выполняются следующие три условия, то кластеризация является монотонной:
  1. [math]\alpha_U \geqslant 0, \alpha_V \geqslant 0 [/math];
  2. [math]\alpha_U + \alpha_V + \beta \geqslant 1[/math];
  3. [math]\min\{\alpha_U, \alpha_V\} + \gamma \geqslant 0 [/math].

Из перечисленных выше расстояний теореме удовлетворяют все, кроме центроидного.

Определение числа кластеров[править]

Для определения числа кластеров находится интервал максимальной длины [math]|\mathrm{R_{t+1}} - \mathrm{R_t}|[/math]. В качестве итоговых кластеров выдаются кластеры, полученные на шаге [math]\mathrm{t}[/math]. При этом число кластеров равно [math]m - t + 1[/math].

Однако, когда число кластеров заранее неизвестно и объектов в выборке не очень много, бывает полезно изучить дендрограмму целиком.

Псевдокод[править]

// алгоритм принимает множество объектов и возвращает множество кластеров для каждого шага 
function hierarchy(X: Set<Object>): Set<Set<Object>>
  t = 1
  [math]\mathrm{C_t} = {{x_1}, \dots, {x_m}}[/math]
  for i = 2 to m
     [math]\langle U, V \rangle = \displaystyle \arg \min_{U \neq V, U \in C_{i-1}, V \in C_{i-1}} R(U, V)[/math]
     [math]\mathrm{R_{t}} = \mathrm{R}(U, V)[/math]
     [math]\mathrm{C_{i}} = \mathrm{C_{i-1}} \cup \{\mathrm{W}\} \setminus \{\mathrm{U}, \mathrm{V}\}[/math]
     for [math] S [/math] in [math] C_t [/math] 
         [math]\mathrm{R_{i}}(W, S) = \alpha_U \cdot \mathrm{R_{i-1}}(U, S) + \alpha_V \cdot \mathrm{R_{i-1}}(V, S) + \beta \cdot \mathrm{R_{i-1}}(U, V) + \gamma \cdot |\mathrm{R_{i-1}}(U, S) - \mathrm{R{i-1}}(V, S)| [/math]
  return [math] C [/math]

Пример[править]

# Подключение библиотек
from scipy.cluster.hierarchy import linkage, dendrogram
from sklearn import datasets
import matplotlib.pyplot as plt
[math][/math]
# Создание полотна для рисования
fig = plt.figure(figsize=(15, 30))
fig.patch.set_facecolor('white')
[math][/math]
# Загрузка набора данных "Ирисы Фишера"
iris = datasets.load_iris()
[math][/math]
# Реализация иерархической кластеризации при помощи функции linkage
mergings = linkage(iris.data, method='ward')
[math][/math]
# Построение дендрограммы. Разными цветами выделены автоматически определенные кластеры
R = dendrogram(mergings, labels=[iris.target_names[i] for i in iris.target], orientation = 'left', leaf_font_size = 12)
[math][/math]
# Отображение дендрограммы
plt.show()
Дендрограммы кластеризации ирисов Фишера[1] в зависимости от функции расстояния между кластерами
Расстояние минимума. Расстояние максимума.
Метод одиночной связи Метод полной связи
Расстояние среднего. Расстояние Уорда.
Метод средней связи Метод Уорда

Лучше всего с задачей справился алгоритм с использованием расстояния Уорда. Он точно выделил класс Iris setosa и заметно отделил вид Iris virginica от Iris versicolor.

См. также[править]

Примечания[править]

Источники информации[править]