"Машинное обучение"

Все об иерархической кластеризации

Алгоритм неконтролируемой кластеризации для иерархической кластеризации данных с общими характеристиками в отдельные группы

Из этой статьи вы узнаете.

  • Что такое иерархическая кластеризация и где она используется?
  • Два разных типа иерархической кластеризации - агломеративная и разделяющая кластеризация
  • Как алгоритм иерархической кластеризации работает с пониманием различных связей и показателей?
  • Что такое дендрограмма?
  • Нахождение оптимального количества кластеров на дендрограмме
  • Реализуйте иерархическую кластеризацию с помощью Python

Кластеризация - это наиболее распространенная форма обучения без учителя на немаркированных данных для объединения объектов с общими характеристиками в дискретные кластеры на основе меры расстояния.

Распространенные алгоритмы кластеризации

  • Кластеризация на основе центроидов, такая как KMeans, которая эффективна, но чувствительна к начальным условиям и выбросам.
  • Кластеризация на основе плотности, такая как DBSCAN, объединяет данные в область с высокой плотностью, разделенную областью с низкой плотностью.
  • Кластеризация на основе распределения, такая как модель Gaussian Mixture с использованием максимизации ожидания (EM), которая представляет собой генеративную вероятностную модель, которая пытается найти гауссовские распределения вероятностей, которые наилучшим образом моделируют набор данных.
  • Иерархическая кластеризация

Иерархическая кластеризация строит иерархию кластеров без предварительного указания количества кластеров на основе оценки сходства.

Иерархическая кластеризация полезна для

  • Сегментация клиентов, где клиентов можно сегментировать по демографическим признакам, доходам или покупательским моделям.
  • Анализ социальных сетей, чтобы понять динамику отдельных лиц и групп на основе их интересов и доступа к доступной информации.
  • Размещение геномных данных в значимых биологических структурах на основе общих характеристик
  • Кластеризация городского планирования гарантирует, что коммерческая зона не входит в промышленную зону, а жилой район не входит в промышленную зону.

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

Агломеративная кластеризация

восходящий подход, при котором каждая точка данных вначале считается одноэлементным кластером, кластеры итеративно объединяются на основе сходства, пока все точки данных не будут объединены в один кластер.

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

Разделительная кластеризация

Нисходящий подход, противоположный восходящему подходу агломеративного кластера. Разделительный кластер начинается с одного кластера, охватывающего все точки данных из набора данных. Затем он итеративно разбивает кластер, используя алгоритм плоской кластеризации, такой как KMeans, до тех пор, пока каждая точка данных не будет принадлежать одноэлементному кластеру. Разделительный кластер создает более точные иерархии, чем восходящие агломеративные кластеры. Разделительная кластеризация учитывает глобальную модель, просматривая полную информацию, представленную в наборе данных.

Глубокое погружение в работу агломеративной кластеризации

Шаг 1: Все точки данных назначаются как единый кластер. Если в наборе данных имеется m наблюдений, каждая точка назначается кластеру, и у нас будет m кластеров.

Шаг 2. Найдите туалеты или наиболее похожую пару кластеров, чтобы объединить их в один кластер. Иерархическая кластеризация использует меру сходства для объединения наиболее похожей пары кластеров. Сходство между кластерами измеряется с использованием либо евклидова расстояния, расстояния Манхэттена (расстояния городского квартала), расстояния Минковского или косинусного сходства.

Шаг 3. После определения двух ближайших кластеров используйте метод связывания, чтобы определить, как объединить два кластера. Несколько методов связи: простая связь, полная связь, средняя связь, метод центроида или метод Варда.

Повторяйте шаги 2 и 3, пока все наблюдения не будут сгруппированы. в один кластер

Дендрограмма

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

Оценка расстояния рассчитывается между каждой парой очков.

Дендрограммы, основанные на разных методах связывания

from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(15,5))
data= [[i] for i in [9, 3, 6, 4, 11]]
linked_s = linkage(data, 'single', metric='euclidean')
plt.subplot(2, 5, 1)
dendrogram(linked , labels=data)
plt.ylabel('Distance')
plt.title("single linkage")
linked_s = linkage(data, 'complete', metric='euclidean')
plt.subplot(2, 5,2)
dendrogram(linked_s , labels=data)
plt.title("complete linkage")
linked_s = linkage(data, 'average', metric='euclidean')
plt.subplot(2, 5,3)
dendrogram(linked_s , labels=data)
plt.title("average linkage")
linked_s = linkage(data, 'ward', metric='euclidean')
plt.subplot(2, 5,4)
dendrogram(linked_s , labels=data)
plt.title("ward method")
linked_s = linkage(data, 'centroid', metric='euclidean')
plt.subplot(2, 5,5)
dendrogram(linked_s , labels=data)
plt.title("centroid method")
plt.show()

Реализация агломеративной кластеризации

Набор данных - Набор данных клиентов торгового центра

import pandas as pd
# Read the dataset into a dataframe
dataset = pd.read_csv('Mall_Customers.csv',index_col='CustomerID')
# Drop duplicates
dataset.drop_duplicates(inplace=True)
plt.figure(figsize=(10,5))
# Creating the input variable
X= dataset.iloc[:, [1,2,3]].values
linked_s = linkage(X, 'complete', metric='CityBlock')
dendrogram(linked , labels=X)
plt.ylabel('Distance')
plt.axhline(y=1.5, color='orange')
plt.title("Mall Customer HCA")
plt.tight_layout(pad=3.0)
plt.show()

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

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

Количество кластеров - это количество вертикальных линий, пересекаемых линией, проведенной с использованием порога.

В приведенном выше случае оптимальное количество кластеров - 4

Запуск агломеративной кластеризации

from sklearn.cluster import AgglomerativeClustering
import seaborn as sns
agg_cluster = AgglomerativeClustering(n_clusters=4).fit_predict(X)
#Visualising the clusters
plt.figure(figsize=(15,7))
sns.scatterplot(X[agg_cluster == 0, 2], X[agg_cluster == 0, 1], color = 'yellow', label = 'Cluster 1',s=50)
sns.scatterplot(X[agg_cluster == 1, 2], X[agg_cluster == 1, 1], color = 'blue', label = 'Cluster 2',s=50)
sns.scatterplot(X[agg_cluster == 2, 2], X[agg_cluster == 2, 1], color = 'green', label = 'Cluster 3',s=50)
sns.scatterplot(X[agg_cluster == 3, 2], X[agg_cluster == 3, 1], color = 'grey', label = 'Cluster 4',s=50)
plt.grid(False)
plt.title('Clusters of customers')
plt.xlabel('Annual Income')
plt.ylabel('Spending Score')
plt.legend()
plt.show()

Дополнительная информация об иерархической кластеризации

Иерархическая кластеризация чувствительна к выбросам и не работает с отсутствующими данными.

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

Заключение:

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

Использованная литература:

Иерархическая агломеративная кластеризация (stanford.edu)



Иерархический-clustering.pdf (princeton.edu)

Https://developers.google.com/machine-learning/clustering