2021 Алгоритмы машинного обучения — иерархическая кластеризация

машинное обучение искусственный интеллект
2021 Алгоритмы машинного обучения — иерархическая кластеризация

Это 20-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Для того, чтобы поделиться этой статьей, я проделал большую работу, поэтому, пожалуйста, не перепечатывайте без моего согласия, я хотел бы выразить свою благодарность!

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

В настоящее время темп времени становится все быстрее и быстрее.Все любят есть фаст-фуд и смотреть короткие видео.Конечно, это может сэкономить много времени, чтобы делать то, что они хотят делать. Но также трудно всем успокоиться и делать что-то одно хорошо. Также трудно сконцентрироваться, и можно легко стать нетерпеливым. На самом деле, многое происходит не сразу, а иногда колеблется вверх и вниз.Даже если мы много работаем и возвращаемся назад, нам нужно проявить настойчивость в это время.Когда мы устали и устали, мы можем немного отдохнуть и повеселиться. , Пока мы настойчиво, я считаю, будет эффективным.

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

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

В этом посте мы сосредоточимся на кластеризации с использованием восходящих методов.

Общие шаги для кластеризации

Ниже приведены шаги для кластеризации.

  • Для начала обработайте каждую точку данных как кластер. Количество кластеров в начале равно K количеству точек данных
  • Сформируйте кластеры (классы) K-1, соединив две ближайшие точки данных, чтобы сформировать кластер (класс).
  • При соединении двух ближайших кластеров формируется больше кластеров, в результате чего получается кластер K-2.
  • Повторяйте вышеуказанные три шага, пока все точки выборки не сформируют большой кластер.
  • После формирования кластера дендрограмму можно использовать для различных задач, которые можно разделить на несколько кластеров.

Существуют различные способы нахождения расстояния между группами. Само расстояние может быть евклидовым или манхэттенским расстоянием. Вот несколько альтернативных способов измерения расстояния между двумя кластерами.

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

Роль дендрограммы в иерархической кластеризации

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

Затем мы представляем набор точек данных в виде массива numpy, как показано ниже.

X = np.array([[5,3],
    [10,15],
    [15,12],
    [24,10],
    [30,30],
    [85,70],
    [71,80],
    [60,78],
    [70,55],
    [80,91],])
import matplotlib.pyplot as plt

labels = range(1, 11)
plt.figure(figsize=(10, 7))
plt.subplots_adjust(bottom=0.1)
plt.scatter(X[:,0],X[:,1], label='True Position')

for label, x, y in zip(labels, X[:, 0], X[:, 1]):
    plt.annotate(
        label,
        xy=(x, y), xytext=(-3, 3),
        textcoords='offset points', ha='right', va='bottom')
plt.show()

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

На приведенной картинке нетрудно обнаружить, что точки раскладки образца явно разделены на 2 группы, нижняя левая (1-5) картинки - это группа, а верхняя правая (6-10) картинки - другая группа. Однако в практических задачах количество точек выборки может достигать тысяч, а размеры точек данных представляют собой данные высокой размерности. В этом случае мы не можем обнаружить закономерности только путем наблюдения.

002.png

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

001.png

Алгоритм сначала находит две точки, которые находятся ближе всего друг к другу, на основе евклидова расстояния. Если мы оглянемся назадРисунок 1, вы можете видеть, что точки выборки 2 и 3 находятся ближе всего друг к другу, а точки выборки 7 и 8 — ближе всего друг к другу. Таким образом, кластер сначала сформируется между этими двумя точками. На рисунке 2 точки 2 и 3 соединены, чтобы показать, что они находятся в кластере, и на дендрограмме точек 8 и 7. Как видно из рисунка 2, евклидово расстояние между точками выборки 8 и 7 больше, чем расстояние между точками 2 и 3.

006.png

Следующим шагом является соединение кластера, образованного двумя точками, со следующим ближайшим кластером или точкой, которая, в свою очередь, образует другой кластер. Если вы посмотрите на график 1, точка 4 находится ближе всего к кластеру точек 2 и 3, поэтому на графике 2 соедините точку 4 с дендрограммой точек 2 и 3, чтобы получить новое Дерево. Этот процесс продолжается до тех пор, пока все точки не соединятся вместе, образуя большой кластер.

007.png

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

009.png

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

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

На изображении выше горизонтальная линия пересекает четыре вертикальные линии, в результате чего получается четыре кластера: кластеры точек 6, 7, 8 и 10, кластеры точек 3, 2, 4 и кластеры точек 9 и 5 будут считаться одиночными. -точечные кластеры.

010.png

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

from sklearn.cluster import AgglomerativeClustering

cluster = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='ward')
cluster.fit_predict(X)

В приведенном выше коде мы начинаем сsklearn.clusterимпортировать из библиотекиAgglomerativeClusteringсвоего рода. использоватьn_clustersПараметр устанавливает количество параметров равным 2 и привязку кeuclidean(расстояние между точками данных). Параметр последней ссылки установлен наward, что минимизирует различия между кластерами.

Далее мы начинаем сAgglomerativeClusteringпеременная классаclusterвызыватьfit_predictметод. Этот метод возвращает имя кластера, к которому принадлежит каждая точка данных. , чтобы увидеть, как сгруппированы точки данных.

print(cluster.labels_)

Результатом является одномерный массив из 10 элементов, соответствующих кластерам, назначенным нашим 10 точкам данных.

[1 1 1 1 1 0 0 0 0]

008.png