Какие алгоритмы кластеризации вы знаете и в каких случаях их применяете?

«Какие алгоритмы кластеризации вы знаете и в каких случаях их применяете?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

1. K-Means

  • Как работает: Итеративно находит k центроидов, минимизируя сумму квадратов расстояний от точек до ближайшего центроида.
  • Когда применяю: Для данных со сферическими кластерами примерно одинакового размера и плотности. Например, сегментация пользователей по нескольким метрикам.
  • Код и нюансы:
    from sklearn.cluster import KMeans
    # Важно масштабировать признаки!
    kmeans = KMeans(n_clusters=5, random_state=42, n_init='auto')
    clusters = kmeans.fit_predict(X_scaled)
  • Минусы: Требует указания k, чувствителен к выбросам и начальной инициализации. Использую KElbowVisualizer для подбора k.

2. DBSCAN (Density-Based Spatial Clustering)

  • Как работает: Объединяет в кластеры области высокой плотности, разделенные областями низкой плотности. Точки в разреженных областях помечает как шум (-1).
  • Когда применяю: Для кластеров произвольной формы и для очистки данных от выбросов. Например, обнаружение аномалий в логах.
  • Код:
    from sklearn.cluster import DBSCAN
    # eps - радиус окрестности, min_samples - минимальное число точек в окрестности
    db = DBSCAN(eps=0.3, min_samples=10).fit(X)
    labels = db.labels_  # -1 означает шум
  • Плюс: Не требует задания числа кластеров.

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

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

4. Gaussian Mixture Models (GMM)

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

На практике начинаю с визуализации (t-SNE, PCA). Если кластеры сферические — пробую K-Means. Если форма сложная или есть шум — DBSCAN.