← Назад к вопросам

Что такое Кластеризация?

1.0 Junior🔥 191 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Кластеризация: Полное объяснение

Кластеризация — это задача машинного обучения без учителя (unsupervised learning), целью которой является разбиение множества объектов на группы (кластеры) так, чтобы объекты внутри одного кластера были похожи друг на друга, а объекты из разных кластеров отличались. Это один из самых важных методов анализа и исследования структуры данных.

Отличие от классификации

Кластеризация отличается от классификации тем, что:

  • В классификации известны метки классов (обучение с учителем)
  • В кластеризации нет предопределённых меток (обучение без учителя)
  • Цель кластеризации — найти скрытую структуру данных

Основные алгоритмы кластеризации

K-means (K-средних)

Самый популярный и простой алгоритм. Разбивает данные на k кластеров, минимизируя внутрикластерную дисперсию.

Алгоритм:

  1. Инициализировать k центроидов случайно
  2. Назначить каждый объект ближайшему центроиду
  3. Пересчитать центроиды как средние точки кластеров
  4. Повторять шаги 2-3 до сходимости

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

DBSCAN (Density-Based Spatial Clustering)

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

Параметры:

  • eps (epsilon): радиус окрестности
  • min_samples: минимум точек в окрестности для формирования кластера

Преимущества: находит кластеры произвольной формы, выявляет выбросы, не требует задания количества кластеров. Недостатки: требует подбора параметров, работает плохо с кластерами разной плотности.

Hierarchical Clustering (Иерархическая кластеризация)

Строит дерево кластеров (дендрограмму). Есть два подхода:

  • Agglomerative (снизу вверх): объединение мелких кластеров
  • Divisive (сверху вниз): разбиение больших кластеров

Преимущества: гибкая (можно выбрать уровень детализации), визуально понятна. Недостатки: медленнее K-means, требует выбора метрики расстояния и критерия связи.

Gaussian Mixture Models (EM-алгоритм)

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

Преимущества: мягкая кластеризация (вероятности принадлежности), теоретически обоснован. Недостатки: требует задания количества компонент, медленнее K-means.

Метрики оценки качества кластеризации

Внутренние метрики (без истинных меток)

Silhouette Score (-1 до 1):

  • Близко к 1: отличная кластеризация
  • Близко к 0: кластеры перекрываются
  • Близко к -1: объект в неправильном кластере

Davies-Bouldin Index: минимизировать нужно (кластеры компактнее и разделены лучше).

Calinski-Harabasz Index: максимизировать нужно (максимальное отношение межкластерного разброса к внутрикластерному).

Внешние метрики (с известными истинными метками)

NMI (Normalized Mutual Information): 0 до 1, выше = лучше.

ARI (Adjusted Rand Index): -1 до 1, выше = лучше.

Purity: доля объектов, которые находятся в правильном большинстве кластера.

Практический пример на Python

from sklearn.cluster import KMeans, DBSCAN
from sklearn.metrics import silhouette_score, davies_bouldin_score
from sklearn.datasets import make_blobs
import numpy as np

X, y_true = make_blobs(n_samples=300, centers=3, random_state=42)

kmeans = KMeans(n_clusters=3, random_state=42)
y_pred = kmeans.fit_predict(X)

silhouette = silhouette_score(X, y_pred)
davies_bouldin = davies_bouldin_score(X, y_pred)

print(f"Silhouette: {silhouette:.3f}")
print(f"Davies-Bouldin: {davies_bouldin:.3f}")

dbscan = DBSCAN(eps=0.3, min_samples=5)
y_pred_dbscan = dbscan.fit_predict(X)
print(f"DBSCAN clusters: {len(set(y_pred_dbscan)) - (1 if -1 in y_pred_dbscan else 0)}")

Применение кластеризации

  • Сегментация клиентов в маркетинге
  • Анализ биологических данных (геномика)
  • Изображение и компьютерное зрение
  • Обнаружение аномалий
  • Группировка документов и рекомендательные системы
  • Сжатие данных

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