Иерархическая кластеризация: методы, дендрограммы и применение
Для кого эта статья:
- Аналитики данных и специалисты в области аналитики
- Студенты и обучающиеся в области анализа данных, желающие освоить практические навыки
Исследователи и практики в различных областях, таких как маркетинг, биоинформатика, и социальные науки
Иерархическая кластеризация — один из наиболее мощных методов для структурированного анализа данных, позволяющий раскрыть скрытые шаблоны, когда линейные модели бессильны. В отличие от плоских алгоритмов, она выстраивает многоуровневую структуру групп, помогая аналитикам видеть не только отдельные кластеры, но и отношения между ними. От сегментации клиентов в маркетинге до выявления генетических паттернов — данный метод становится незаменимым инструментом для любого, кто стремится извлечь максимум из необработанных данных. 🔍
Освоить иерархическую кластеризацию с практическим применением можно в программе Профессия аналитик данных от Skypro. Курс специально разработан для тех, кто хочет не только понимать теорию, но и эффективно применять методы кластеризации к реальным бизнес-задачам. Студенты работают с актуальными данными и решают кейсы под руководством практикующих дата-аналитиков, которые покажут, как превратить сырые данные в ценные бизнес-инсайты!
Что такое иерархическая кластеризация и как она работает
Иерархическая кластеризация представляет собой метод анализа данных, который организует объекты в древовидную структуру на основе их сходства. В отличие от плоских алгоритмов кластеризации (например, K-means), которые просто делят данные на отдельные группы, иерархическая кластеризация создает многоуровневую систему вложенных кластеров. Это позволяет аналитику исследовать данные на различных уровнях детализации, выявляя как крупные группы, так и более тонкие подразделения внутри них.
В основе иерархической кластеризации лежит концепция расстояния или меры сходства между объектами. Чем ближе объекты друг к другу в пространстве признаков, тем более вероятно, что они будут отнесены к одному кластеру. Алгоритм последовательно объединяет или разделяет точки данных, формируя иерархию.
Андрей Соколов, ведущий аналитик данных
Однажды мне пришлось работать с крупным интернет-магазином, который пытался понять, почему определенные категории товаров показывают низкую конверсию. Традиционная сегментация по демографическим признакам не давала ответов. Применив иерархическую кластеризацию к данным о поведении пользователей, мы обнаружили нетривиальную структуру — некоторые группы пользователей переходили между совершенно разными категориями товаров по определенному шаблону.
Это был настоящий прорыв! Вместо обычного деления клиентов на 5-7 стандартных сегментов, мы увидели целую древовидную структуру поведенческих паттернов. Особенно интересным оказалось, что между некоторыми кластерами существовали "мосты" — небольшие группы клиентов с промежуточным поведением. Эти инсайты позволили перестроить навигацию на сайте и создать персонализированные рекомендательные цепочки, что привело к росту конверсии на 23% за три месяца.
Существуют две основные стратегии иерархической кластеризации:
- Агломеративная (снизу вверх) – начинает с рассмотрения каждого объекта как отдельного кластера, а затем последовательно объединяет ближайшие кластеры.
- Дивизивная (сверху вниз) – начинает с одного кластера, содержащего все объекты, и рекурсивно разделяет его на более мелкие кластеры.
Процесс кластеризации управляется метриками расстояния и методами связи между кластерами. Наиболее распространенные метрики расстояния включают:
| Метрика | Описание | Применимость |
|---|---|---|
| Евклидово расстояние | Прямолинейное расстояние между точками | Числовые данные, когда важна абсолютная разница |
| Манхэттенское расстояние | Сумма абсолютных разностей координат | Данные с дискретными измерениями, городские пространства |
| Расстояние Чебышева | Максимальная абсолютная разность координат | Когда важна наибольшая разница по любому из измерений |
| Косинусное сходство | Косинус угла между векторами признаков | Текстовые данные, разреженные высокоразмерные пространства |
Временная сложность алгоритмов иерархической кластеризации обычно составляет O(n²log(n)) для агломеративных методов и O(2ⁿ) для дивизивных, что ограничивает их применение на очень больших наборах данных без предварительной обработки или выборки. 📊

Агломеративные и дивизивные методы в анализе данных
Агломеративные и дивизивные методы представляют собой два фундаментально разных подхода к построению иерархической структуры кластеров. Каждый из них имеет свои преимущества, недостатки и области применения.
Агломеративные методы
Агломеративная кластеризация начинает работу, рассматривая каждый объект как отдельный кластер (n кластеров), а затем последовательно объединяет наиболее близкие пары кластеров. Процесс продолжается до тех пор, пока все объекты не окажутся в одном кластере или пока не будет достигнуто заданное число кластеров.
Ключевой элемент агломеративной кластеризации — стратегия связи (linkage), определяющая, как измеряется расстояние между кластерами, содержащими несколько объектов:
- Одиночная связь (Single linkage) — расстояние между ближайшими точками разных кластеров. Создает "цепочечные" кластеры, хорошо выявляет нелинейные структуры, но чувствителен к шуму.
- Полная связь (Complete linkage) — расстояние между наиболее удаленными точками разных кластеров. Формирует компактные, сферические кластеры одинакового размера.
- Средняя связь (Average linkage) — среднее расстояние между всеми парами точек из разных кластеров. Баланс между одиночной и полной связью.
- Метод Варда (Ward's method) — минимизирует дисперсию внутри кластеров. Часто дает наиболее интуитивно понятные результаты для многомерных данных.
Алгоритм агломеративной кластеризации можно представить следующим образом:
- Вычисление матрицы расстояний между всеми объектами.
- Объединение двух ближайших кластеров в новый кластер.
- Обновление матрицы расстояний с учетом нового кластера.
- Повторение шагов 2-3 до достижения требуемого числа кластеров.
Дивизивные методы
Дивизивная кластеризация начинает работу с одного большого кластера, содержащего все объекты, и последовательно разделяет его на меньшие кластеры. Процесс продолжается до тех пор, пока каждый объект не окажется в отдельном кластере или пока не будет достигнут заданный критерий остановки.
Основные разновидности дивизивных методов:
- DIANA (DIvisive ANAlysis) — на каждом шаге находит объект, наиболее отличающийся от остальных в кластере, и создает новый кластер, начиная с этого объекта.
- Бисекционный K-means — рекурсивно применяет алгоритм K-means с K=2 к каждому кластеру.
- Монотетические методы — разделяют кластеры на основе значения одного признака.
- Политетические методы — используют несколько признаков одновременно для разделения кластеров.
Сравнение агломеративных и дивизивных методов:
| Характеристика | Агломеративные методы | Дивизивные методы |
|---|---|---|
| Вычислительная сложность | O(n²log(n)) | O(2ⁿ) в худшем случае |
| Масштабируемость | Ограничена для больших наборов данных | Крайне ограничена без эвристик |
| Популярность в практике | Высокая, множество реализаций | Ниже, меньше готовых реализаций |
| Локальные vs глобальные решения | Оптимизирует локальные решения | Может учитывать глобальную структуру |
| Интерпретируемость процесса | Интуитивно понятна | Сложнее для понимания |
На практике агломеративные методы используются значительно чаще из-за их относительной вычислительной эффективности и широкой доступности в статистических пакетах и библиотеках машинного обучения. Однако дивизивные методы могут давать лучшие результаты в некоторых специфических случаях, особенно когда важно учитывать глобальную структуру данных. 🌳
Создание дендрограмм и визуализация результатов
Дендрограмма — ключевой инструмент для визуализации результатов иерархической кластеризации. Это древовидная диаграмма, наглядно демонстрирующая процесс объединения (для агломеративных методов) или разделения (для дивизивных методов) кластеров. Дендрограммы позволяют не только увидеть итоговую кластерную структуру, но и проследить весь процесс формирования иерархии.
Структура дендрограммы включает:
- Листья — отдельные наблюдения или объекты, располагающиеся в основании диаграммы.
- Узлы — точки слияния кластеров, показывающие, какие группы были объединены.
- Высота узла — отражает расстояние между объединяемыми кластерами (чем выше узел, тем больше различие).
- Ветви — линии, соединяющие узлы и листья, показывающие иерархическую структуру.
Для интерпретации дендрограммы аналитик может определить оптимальное число кластеров, проведя горизонтальную линию через дендрограмму на определенном уровне высоты. Количество вертикальных линий, пересекаемых этой горизонталью, соответствует числу кластеров.
Елена Михайлова, биоинформатик
В нашем исследовании экспрессии генов при различных типах рака мы столкнулись с дилеммой — стандартные методы кластеризации давали противоречивые результаты. Построив дендрограмму на основе иерархической кластеризации профилей экспрессии 200 генов у 50 пациентов, мы обнаружили нечто удивительное.
Дендрограмма выявила не только два основных подтипа опухолей, как предполагалось ранее, но и дополнительную, более тонкую структуру внутри одного из подтипов. При обычном анализе эта структура оставалась незамеченной! Мы визуализировали данные с помощью тепловой карты, наложенной на дендрограмму, и увидели уникальные паттерны экспрессии генов, характерные для каждого подкластера.
Это открытие привело к пересмотру классификации данного типа рака и разработке более персонализированного подхода к лечению. Если бы мы ограничились плоской кластеризацией и не визуализировали иерархию, эти важнейшие различия остались бы незамеченными.
Существует несколько типов визуализации результатов иерархической кластеризации:
- Вертикальные дендрограммы — традиционный вид, где листья размещены внизу, а слияния происходят вверх.
- Горизонтальные дендрограммы — листья размещены слева, слияния происходят вправо. Удобны для наборов данных с длинными метками.
- Круговые дендрограммы — размещают листья по окружности, что эффективно для визуализации больших наборов данных.
- Радиальные дендрограммы — разновидность круговых дендрограмм, где структура распространяется от центра наружу.
Для повышения информативности визуализации часто применяют дополнительные приемы:
- Тепловые карты (heatmap) — цветовое представление значений признаков, совмещенное с дендрограммой.
- Окрашивание кластеров — выделение идентифицированных кластеров различными цветами.
- Интерактивные визуализации — позволяют исследовать данные на различных уровнях детализации.
- Проекция дендрограммы на пространство признаков — совмещение иерархической структуры с визуализацией в пространстве признаков.
Выбор оптимального числа кластеров — один из ключевых вопросов при анализе дендрограммы. Для его решения можно использовать:
- Визуальный анализ — поиск значительных "скачков" в высоте объединения.
- Индекс непохожести (inconsistency coefficient) — измеряет, насколько высота объединения отличается от средней высоты объединений на соседних уровнях.
- Силуэтный анализ — оценивает качество кластеризации при различном числе кластеров.
- Критерий Калински-Харабаша — соотношение между внутрикластерной и межкластерной дисперсией.
Практические рекомендации для работы с дендрограммами:
- Для больших наборов данных рассмотрите возможность работы с выборкой или предварительной кластеризацией.
- Экспериментируйте с различными метриками расстояния и методами связи для выявления устойчивых кластеров.
- Сравнивайте результаты иерархической кластеризации с другими методами для валидации.
- Используйте интерактивные инструменты визуализации для исследования сложных иерархических структур.
Продуманная визуализация дендрограмм превращает абстрактные результаты кластеризации в наглядное представление структуры данных, делая их доступными для интерпретации даже неспециалистами в области анализа данных. 📊
Реализация иерархической кластеризации на Python
Python предлагает мощные инструменты для реализации иерархической кластеризации благодаря библиотекам scipy, scikit-learn и различным инструментам визуализации. Рассмотрим поэтапную реализацию метода с объяснением ключевых параметров и интерпретацией результатов.
Начнем с базового примера агломеративной кластеризации с использованием SciPy:
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_blobs
# Генерируем тестовые данные
X, y = make_blobs(n_samples=50, centers=3, random_state=42)
# Выполняем иерархическую кластеризацию
Z = linkage(X, method='ward')
# Строим дендрограмму
plt.figure(figsize=(12, 6))
dendrogram(Z)
plt.title('Дендрограмма иерархической кластеризации')
plt.xlabel('Индексы объектов')
plt.ylabel('Расстояние')
plt.show()
В этом примере используется метод связи Варда, который минимизирует дисперсию внутри кластеров. Другие распространенные методы связи в SciPy включают 'single', 'complete' и 'average'.
Для более полного контроля над процессом кластеризации можно использовать scikit-learn:
from sklearn.cluster import AgglomerativeClustering
import pandas as pd
# Определяем модель с 3 кластерами
model = AgglomerativeClustering(n_clusters=3, linkage='ward')
# Обучаем модель на данных
clusters = model.fit_predict(X)
# Визуализируем результаты
plt.figure(figsize=(10, 7))
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis', s=50)
plt.title('Результат иерархической кластеризации')
plt.xlabel('Признак 1')
plt.ylabel('Признак 2')
plt.colorbar(label='Кластер')
plt.show()
Для извлечения определенного числа кластеров из дендрограммы можно использовать функцию fcluster:
from scipy.cluster.hierarchy import fcluster
# Извлекаем 3 кластера из иерархической структуры
cluster_labels = fcluster(Z, 3, criterion='maxclust')
# Результат: массив с метками кластеров для каждого объекта
print(cluster_labels)
Один из мощных способов визуализации результатов иерархической кластеризации — комбинирование дендрограммы с тепловой картой:
import seaborn as sns
# Предположим, у нас есть DataFrame с данными
data_df = pd.DataFrame(X, columns=['feature1', 'feature2'])
# Выполняем кластеризацию
Z_rows = linkage(data_df.values, method='ward')
# Создаем тепловую карту с дендрограммой
plt.figure(figsize=(12, 8))
sns.clustermap(data_df, row_linkage=Z_rows, standard_scale=1, cmap='viridis')
plt.title('Тепловая карта с иерархической кластеризацией')
plt.show()
Оценка оптимального числа кластеров может быть выполнена путем анализа дендрограммы или с помощью специальных метрик:
from sklearn.metrics import silhouette_score
# Оценка качества кластеризации для различного числа кластеров
silhouette_scores = []
for n_clusters in range(2, 10):
model = AgglomerativeClustering(n_clusters=n_clusters)
labels = model.fit_predict(X)
score = silhouette_score(X, labels)
silhouette_scores.append(score)
print(f"Для {n_clusters} кластеров силуэтный коэффициент: {score:.3f}")
# Визуализация результатов
plt.figure(figsize=(10, 6))
plt.plot(range(2, 10), silhouette_scores, 'bo-')
plt.xlabel('Число кластеров')
plt.ylabel('Силуэтный коэффициент')
plt.title('Определение оптимального числа кластеров')
plt.grid(True)
plt.show()
Для больших наборов данных стандартная иерархическая кластеризация может быть вычислительно затратной. В таких случаях можно применить предварительную кластеризацию или использовать специализированные алгоритмы:
# Пример использования BIRCH для предварительной кластеризации
from sklearn.cluster import Birch
# Предварительная кластеризация с BIRCH
birch = Birch(n_clusters=None, threshold=0.5)
birch_labels = birch.fit_predict(X)
# Теперь применяем иерархическую кластеризацию к центроидам BIRCH
# Это значительно уменьшает размер задачи
centroids = birch.subcluster_centers_
Z_centroids = linkage(centroids, method='ward')
Сравнение эффективности различных методов иерархической кластеризации на Python:
| Метод/Библиотека | Преимущества | Ограничения | Типичное применение |
|---|---|---|---|
| scipy.cluster.hierarchy | Гибкость, полный контроль над параметрами, отличная визуализация | Требует ручного извлечения кластеров, менее интегрирован с ML-пайплайнами | Исследовательский анализ, визуализация иерархии, детальный контроль |
| sklearn.cluster.AgglomerativeClustering | Интеграция с scikit-learn, простота использования, поддержка кастомных метрик | Менее гибкая визуализация, не хранит полную иерархию по умолчанию | Продакшн-системы, интеграция с ML-пайплайнами |
| fastcluster | Высокая производительность, поддержка больших данных | Меньше возможностей визуализации | Большие наборы данных, требующие эффективных вычислений |
| hdbscan | Эффективно работает с данными различной плотности, автоматическое определение числа кластеров | Сложнее настраивать, менее интуитивно понятный результат | Сложные данные с кластерами переменной плотности и шумом |
При работе с иерархической кластеризацией в Python важно помнить о предварительной обработке данных: масштабировании признаков, обработке пропущенных значений и выбросов, а также снижении размерности для высокоразмерных данных. 💻
Применение метода в маркетинге, биоинформатике и науке
Иерархическая кластеризация находит применение в различных областях науки и бизнеса благодаря способности выявлять многоуровневые структуры в данных. Рассмотрим конкретные примеры применения этого метода в ключевых областях.
Маркетинг и сегментация клиентов 🛒
В маркетинге иерархическая кластеризация позволяет создавать многоуровневую сегментацию клиентов, выявляя как крупные группы, так и нишевые микросегменты:
- RFM-анализ — кластеризация по показателям Recency (давность), Frequency (частота) и Monetary Value (ценность) позволяет выявить иерархию потребительских сегментов, от наиболее ценных "VIP-клиентов" до "спящих" пользователей.
- Поведенческая сегментация — анализ путей пользователей на сайте, последовательностей просмотра страниц и поисковых запросов для выявления паттернов потребительского поведения.
- Продуктовые ассоциации — кластеризация товаров на основе частоты совместных покупок, что позволяет выстраивать многоуровневые категории для рекомендательных систем.
Результаты такой кластеризации применяются для таргетированных маркетинговых кампаний, персонализации контента и оптимизации ассортимента.
Биоинформатика и генетические исследования 🧬
В биоинформатике иерархическая кластеризация является одним из основных инструментов анализа данных:
- Анализ экспрессии генов — кластеризация генов по профилям экспрессии в различных тканях или условиях позволяет выявлять функционально связанные группы генов и строить генные регуляторные сети.
- Филогенетический анализ — построение эволюционных деревьев на основе генетических последовательностей, демонстрирующих эволюционные взаимосвязи между видами.
- Анализ белковых структур — кластеризация белков по структурному сходству для выявления функциональных семейств и суперсемейств.
- Классификация заболеваний — стратификация пациентов по молекулярным профилям для выявления подтипов заболеваний и персонализации лечения.
Примечательно, что первые широкие применения иерархической кластеризации были именно в биологической таксономии, задолго до эры компьютеров.
Анализ текстов и документов 📚
В области обработки естественного языка иерархическая кластеризация помогает структурировать большие коллекции текстов:
- Тематическое моделирование — выявление иерархической структуры тем в корпусе документов, от широких предметных областей до узкоспециализированных подтем.
- Классификация новостных статей — группировка новостных сообщений по тематическим категориям и подкатегориям для создания навигационных структур.
- Анализ научных публикаций — кластеризация исследовательских статей для картирования научных областей и выявления междисциплинарных связей.
Социальные науки и анализ сетей 👥
В социологии и сетевом анализе иерархическая кластеризация применяется для:
- Анализа социальных сетей — выявление сообществ и подсообществ в графах социальных взаимодействий.
- Анализа культурных паттернов — кластеризация регионов или групп населения по культурным практикам, ценностям или потребительским предпочтениям.
- Изучения организационных структур — анализ корпоративных коммуникаций и рабочих процессов для выявления формальных и неформальных иерархий.
Сравнение эффективности иерархической кластеризации в различных прикладных областях:
| Область применения | Ключевые преимущества | Типичные метрики/методы | Особенности реализации |
|---|---|---|---|
| Маркетинг | Многоуровневая сегментация, гибкость в выборе числа сегментов | Евклидово расстояние, метод Варда | Предварительное масштабирование данных, акцент на интерпретируемость |
| Биоинформатика | Выявление эволюционных взаимосвязей, функциональных групп | Корреляционные метрики, average linkage | Работа с высокоразмерными данными, необходимость статистической валидации |
| Анализ текстов | Тематическая структуризация, выявление семантических связей | Косинусное сходство, complete linkage | Предварительная векторизация текстов, снижение размерности |
| Социальные сети | Выявление сообществ и иерархий влияния | Специализированные метрики для графов | Преобразование сетевых данных в матрицы расстояний |
Финансы и инвестиции 💹
В финансовом секторе иерархическая кластеризация используется для:
- Анализа финансовых рынков — группировка ценных бумаг по характеристикам доходности и риска для формирования диверсифицированных портфелей.
- Кредитного скоринга — многоуровневая сегментация заемщиков по кредитным историям и финансовому поведению.
- Выявления аномалий — обнаружение подозрительных транзакций и мошеннических схем на основе иерархического кластерного анализа.
Образование и психология 🎓
В образовательной аналитике и психологических исследованиях:
- Анализ образовательных траекторий — кластеризация студентов по учебным достижениям и паттернам обучения для персонализации образования.
- Психологическое профилирование — выявление типов личности и поведенческих паттернов на основе психометрических данных.
- Исследование когнитивных процессов — кластеризация паттернов мозговой активности для изучения когнитивных функций.
Практические рекомендации для применения иерархической кластеризации в различных областях:
- Всегда начинайте с четкой формулировки бизнес-задачи или исследовательского вопроса.
- Тщательно выбирайте признаки для кластеризации, исключая те, которые могут внести шум или смещение в анализ.
- Экспериментируйте с различными метриками расстояния и методами связи, оценивая их влияние на результаты.
- Валидируйте результаты кластеризации с помощью экспертной оценки или дополнительных данных.
- Сочетайте иерархическую кластеризацию с другими методами анализа для повышения робастности выводов.
Потенциал иерархической кластеризации продолжает расширяться с развитием вычислительных возможностей и появлением новых алгоритмических оптимизаций, делая этот метод одним из незаменимых инструментов в арсенале современного аналитика данных. 📊
Иерархическая кластеризация представляет собой мощный инструмент для структурирования сложных данных, выявляя не просто группы, но целые многоуровневые таксономии. Именно в этой многоуровневости — ключевая сила метода, позволяющая аналитику "масштабировать" свой взгляд от общей картины до детальных подгрупп. От генетических исследований до маркетинговой стратегии — везде, где требуется выявить естественную структуру данных, иерархическая кластеризация доказывает свою незаменимость, предоставляя глубину анализа, недоступную плоским методам кластеризации.
Читайте также
- Метод K ближайших соседей: принцип работы и применение в анализе данных
- Корреляционная матрица в Python: анализ взаимосвязей между данными
- Алгоритм K-средних: принципы работы и применение в анализе данных
- Python и Kivy: топ-7 курсов для создания десктопных приложений
- Нейросети: бесплатные курсы и эффективные практики обучения
- Когортный анализ: как превратить данные в стратегическое оружие
- Pandas: мощный инструмент анализа данных для Python-разработчиков
- Python синтаксис для анализа данных: от основ к продвинутым техникам
- Зарплата data scientist и аналитика данных в Москве
- Группировка и агрегация в pandas: превращение хаоса в инсайты


