ИЕРАРХИЧЕСКОЕ АГЛОМЕРАТИВНОЕ КЛАСТЕРИРОВАНИЕ:

Код реализации на Python:

https://github.com/mrinalyadav7-atom/Text_clustering-Numo-Uno-/tree/master/Agglomerative

Также известен как восходящий подход или иерархическая агломеративная кластеризация (HAC). Структура, которая является более информативной, чем неструктурированный набор кластеров, возвращаемый плоской кластеризацией. Этот алгоритм кластеризации не требует от нас предварительного указания количества кластеров. Алгоритмы «снизу вверх» сначала обрабатывают данные как отдельный кластер, а затем последовательно объединяют пары кластеров, пока все кластеры не будут объединены в один кластер, содержащий все данные.

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

В этой методике мы назначаем каждую точку отдельному кластеру. Предположим, что есть 4 точки данных. Мы назначим каждую из этих точек кластеру и, следовательно, вначале будем иметь 4 кластера:

Затем на каждой итерации мы объединяем ближайшую пару кластеров и повторяем этот шаг, пока не останется только один кластер:

Мы объединяем (или добавляем) кластеры на каждом этапе, верно? Следовательно, этот тип кластеризации также известен как аддитивная иерархическая кластеризация.

Как мы должны выбрать количество кластеров в иерархической кластеризации?

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

Дендрограмма — это древовидная диаграмма, на которой записаны последовательности слияний и разбиений.

У нас есть образцы набора данных по оси x и расстояние по оси y. Независимые переменные по оси x и расстояние между ними по оси y. Всякий раз, когда два кластера объединяются, мы соединяем их в этой дендрограмме, а высота соединения будет расстоянием между этими точками.

Теперь мы можем установить пороговое расстояние и провести горизонтальную линию (обычно мы пытаемся установить порог таким образом, чтобы он пересекал самую высокую вертикальную линию)

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

Типы связей в кластеризации

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

1. Одиночная связь. Для двух кластеров R и S одиночная связь возвращает минимальное расстояние между двумя точками i и j, при котором i принадлежит R, а j принадлежит S.

2. Полное связывание. Для двух кластеров R и S одиночное связывание возвращает максимальное расстояние между двумя точками i и j, такое что i принадлежит R, а j принадлежит S.

3. Средняя связь: для двух кластеров R и S сначала вычисляется расстояние между любой точкой данных i в R и любой точкой данных j в S, а затем вычисляется среднее арифметическое этих расстояний. Average Linkage возвращает это значение среднего арифметического.

Nr: количество точек данных в кластере r

Ns: количество точек данных в кластере s.

Некоторые примечания:

Реализация на Python:

https://colab.research.google.com/drive/1LyZc33p5TDjv7H-hAsrLkMp-48hGvEeM?usp=sharing