Результаты обучения

После изучения урока вы сможете:

Место урока в программе. В уроке 1.3.2 вы познакомились с задачей кластеризации, K-means, иерархическим подходом, DBSCAN и базовой идеей PCA. Здесь мы не повторяем их определения. Мы учимся выбирать настройки, сравнивать результаты и обнаруживать ситуации, в которых красивое разделение на графике вводит в заблуждение. Подробная математика линейной алгебры будет разобрана в Theme 2, а метрики качества supervised-моделей — в модуле 1.5.

1. Почему один алгоритм не подходит всем данным

Кластеризация отвечает не на вопрос «какие классы существуют?», а на вопрос «какая структура проявляется при выбранном способе измерять сходство?». Поэтому сначала нужно описать геометрию данных. Компактные группы похожего размера могут быть удобны для K-means. Вытянутые, вложенные или сложные по форме области требуют другого подхода. Если плотность сильно различается, один глобальный порог соседства может не подойти ни одной настройке DBSCAN.

Кластеризацияпоиск групп объектов на основе выбранного критерия сходства без заранее заданных целевых меток.
Три формы кластерной структурыСравнение компактных групп, вытянутой структуры и областей сложной формы с шумовыми точками. Компактные группыПлотные и раздельные Вытянутая группаЦепочка соседних точек Сложная форма и шумШумовые точки остаются отдельно Шумовые точки остаются отдельно
Алгоритм выбирают по геометрии данных: компактные группы подходят для K-means, вытянутые и сложные структуры требуют других предположений; шум не следует насильно присоединять к группе.

2. Подготовка признаков: расстояние начинается до алгоритма

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

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

3. Как выбирать и настраивать алгоритм

K-meansалгоритм, который разбивает объекты на k групп, назначая их ближайшим центроидам и пересчитывая центры.
Иерархическая кластеризациясемейство методов, строящих дерево последовательных объединений или разделений групп.
Linkageправило вычисления расстояния между двумя кластерами при построении иерархии.
DBSCANалгоритм кластеризации по плотности, который может находить группы неправильной формы и выделять шум.
Параметры eps и min_samplesрадиус окрестности и минимальное число точек, задающие критерий плотности DBSCAN.

K-means минимизирует сумму квадратов расстояний до центров. Он быстр и удобен как базовый ориентир, но предпочитает компактные выпуклые группы и требует задать k. Запускайте его с несколькими инициализациями и фиксируйте random_state для воспроизводимости. Иерархическая агломеративная кластеризация строит дерево объединений. Срез дерева на разной высоте даёт разное число групп; результат зависит от linkage — правила расстояния между кластерами. DBSCAN объединяет точки по плотностной достижимости, выделяет шум и может находить группы неправильной формы. Его eps и min_samples взаимосвязаны: увеличение eps расширяет окрестности, а min_samples задаёт требуемую локальную плотность. При неоднородной плотности DBSCAN может разделять одну структуру или объединять разные.

Плотностная достижимостьсвязь точек через цепочку плотных окрестностей в DBSCAN.

4. Как не выбирать число кластеров на глаз

Elbow method сравнивает внутрикластерную сумму квадратов для разных k. Ищут участок, после которого добавление кластеров даёт всё меньший выигрыш. «Локоть» часто неоднозначен и зависит от масштаба признаков. Silhouette score сравнивает расстояние объекта до своего кластера с расстоянием до ближайшего другого кластера. Значение ближе к 1 указывает на лучшее геометрическое разделение, около 0 — на границу, отрицательное — на возможное неудачное назначение. Но высокий балл не означает, что группы полезны для предметной задачи. Для DBSCAN дополнительно проверяют долю шума и чувствительность к eps; не следует считать шум автоматически плохими данными.

Silhouette scoreоценка компактности кластера и отделённости от ближайшего соседнего кластера.
От данных к обоснованному кластерному решениюПять этапов кластерного анализа: подготовка признаков, выбор масштаба и метрики, настройка алгоритма, проверка качества и устойчивости, интерпретация результата.От данных к обоснованному кластерному решению1ПризнакиПроверить единицыи выбросы2Масштаб иметрикаОпределить, чтозначит близость3Алгоритм инастройкиСравнить нескольконастроек4Качество иустойчивостьПроверить не однуметрику5ИнтерпретацияСвязать группыс задачей
Кластеризация — итерационный процесс: качество и устойчивость могут потребовать возврата к подготовке признаков или настройкам.

5. Устойчивость: повторяется ли найденная структура

Кластеризация часто не имеет единственного «правильного ответа». Повторите анализ на нескольких начальных состояниях, подвыборках или близких значениях параметров. Сопоставляйте не номера кластеров, а само разбиение: метки 0 и 1 могут поменяться местами, не изменив структуры. Adjusted Rand Index (ARI) сравнивает два разбиения с поправкой на случайное совпадение: 1 означает одинаковое разбиение, около 0 — уровень случайного соответствия, отрицательное значение — согласие хуже случайного ожидания. Устойчивость не доказывает истинность: алгоритм может стабильно находить артефакт плохих данных.

Adjusted Rand Index (ARI)мера сходства двух разбиений с поправкой на случайное совпадение.

6. PCA: что именно уменьшается

Объяснённая дисперсиядоля общей вариации данных, которую описывает отдельная главная компонента или их набор.

PCA строит новые взаимно ортогональные оси — главные компоненты — как линейные комбинации исходных признаков. Первая компонента направлена туда, где дисперсия данных максимальна; следующая объясняет максимум оставшейся дисперсии при ортогональности предыдущим. Доля объяснённой дисперсии помогает понять, сколько вариации сохраняет выбранное число компонент. Но дисперсия не равна полезности: редкий, но важный сигнал может иметь небольшую дисперсию. Перед PCA обычно центрируют признаки; масштабирование зависит от того, сопоставимы ли единицы и важна ли их исходная вариативность.

Principal Component Analysis (PCA)линейное преобразование, создающее ортогональные компоненты, упорядоченные по объясняемой дисперсии.
Как PCA меняет представление данныхИсходное пространство признаков преобразуется в пространство главных компонент; часть информации при проекции теряется.Исходные признакиГлавные компоненты x₁x₂PC1PC2 PC1PC2Проекция
PCA выбирает направления с наибольшей дисперсией. Проекция сохраняет часть структуры, но не все расстояния и различия исходного пространства.

7. Снижение размерности — не то же самое, что картинка в 2D

t-SNE и UMAPметоды нелинейного снижения размерности, часто используемые для визуального исследования локальных соседств в сложных данных.

PCA часто используют и как преобразование признаков перед моделью, и как способ показать данные на плоскости. Эти цели различаются. Для моделирования число компонент выбирают по проверке качества downstream-задачи и допустимой потере информации. Для визуализации 2D-проекция неизбежно теряет направления. t-SNE и UMAP могут сохранять локальные соседства и показывать сложную структуру, но расстояния между далёкими группами, размер и плотность «островов» нельзя трактовать как прямую количественную меру. Визуальная изоляция групп — повод исследовать, а не доказательство естественных классов.

8. Сквозной пример: режимы работы здания

Предположим, для каждого часа есть признаки: средняя мощность, наружная температура, час суток и доля работающих агрегатов. Сначала проверяем единицы, пропуски, сезонность и коррелирующие признаки. Затем формируем набор признаков под вопрос: хотим ли мы найти похожие режимы по нагрузке или сравнить режимы независимо от времени суток? После стандартизации запускаем K-means как baseline, DBSCAN — если ожидаются группы сложной формы и шум, и иерархический метод — если важна вложенная структура. Сравниваем силуэт, долю шума, устойчивость на подвыборках и профили групп в исходных единицах. Только после этого даём группам интерпретируемые названия вместе с инженером.

9. Практикум на Python: сравнить методы и проверить PCA

Ниже — воспроизводимый эксперимент на синтетических профилях. Он не доказывает, какой алгоритм лучше для реального здания: он показывает рабочую последовательность — масштабирование, baseline-кластеризация, диагностика, сравнение разбиений и PCA. Нужны Python 3.10+, NumPy и scikit-learn: `python -m pip install numpy scikit-learn`. Запустите код целиком в виртуальном окружении или Jupyter Notebook.

Пример кода: сравнение K-means, DBSCAN и PCA

Код выводит диагностические показатели; конкретные значения зависят от версии библиотек и генератора случайных чисел.

import numpy as np
from sklearn.cluster import DBSCAN, KMeans
from sklearn.decomposition import PCA
from sklearn.metrics import adjusted_rand_score, silhouette_score
from sklearn.preprocessing import StandardScaler

rng = np.random.default_rng(7)
centres = np.array([[0.0, 0.0, 0.0], [4.0, 4.0, 1.0], [-3.0, 3.0, 4.0]])
clouds = [rng.normal(loc=centre, scale=scale, size=(90, 3))
          for centre, scale in zip(centres, (0.45, 0.75, 0.55))]
X = np.vstack(clouds)
X = np.vstack([X, rng.uniform(-5, 7, size=(12, 3))])

X_scaled = StandardScaler().fit_transform(X)

kmeans_a = KMeans(n_clusters=3, n_init=20, random_state=7)
labels_a = kmeans_a.fit_predict(X_scaled)
kmeans_b = KMeans(n_clusters=3, n_init=20, random_state=21)
labels_b = kmeans_b.fit_predict(X_scaled)

dbscan = DBSCAN(eps=0.55, min_samples=6)
db_labels = dbscan.fit_predict(X_scaled)
non_noise = db_labels != -1

print("K-means clusters:", len(set(labels_a)))
print("K-means silhouette:", round(silhouette_score(X_scaled, labels_a), 3))
print("K-means stability (ARI):", round(adjusted_rand_score(labels_a, labels_b), 3))
print("DBSCAN clusters:", len(set(db_labels) - {-1}))
print("DBSCAN noise share:", round(1 - non_noise.mean(), 3))

pca = PCA(n_components=2, random_state=7)
X_2d = pca.fit_transform(X_scaled)
print("PCA explained variance:", np.round(pca.explained_variance_ratio_, 3))
print("Total retained variance:", round(pca.explained_variance_ratio_.sum(), 3))

Самостоятельное задание

Возьмите небольшой набор реальных или синтетических наблюдений (не менее 3 числовых признаков). Сформулируйте, какое сходство вы хотите обнаружить. Сравните K-means при двух значениях k и DBSCAN при двух значениях eps. Для каждого варианта запишите: число групп, долю шума (если есть), silhouette (если метрика применима), устойчивость на повторной выборке и содержательную интерпретацию профилей. Затем выполните PCA до двух компонент. Укажите, какую долю дисперсии сохранили компоненты и почему двумерный график не доказывает наличие истинных категорий. Завершите выводом, какой метод вы выбрали бы и какие ограничения остались.

10. Ограничения и типичные ошибки

11. Главное из урока

Кластеризация — это исследовательская гипотеза, зависящая от признаков, масштаба, метрики и алгоритма. Хороший анализ сравнивает несколько обоснованных вариантов, проверяет устойчивость и возвращается к исходным признакам для интерпретации. PCA сжимает вариацию в новых координатах, но не гарантирует сохранение всех важных сигналов. Ни метрика, ни красивая визуализация не заменяют предметную проверку.

Источники и дополнительное чтение

  1. scikit-learn: Clustering
  2. scikit-learn: Selecting the number of clusters with silhouette analysis
  3. scikit-learn: PCA
  4. Rousseeuw (1987), Silhouettes: A graphical aid to the interpretation and validation of cluster analysis
  5. McInnes, Healy & Melville, UMAP: Uniform Manifold Approximation and Projection

Словарь урока

01СтандартизацияStandardization

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

02ЦентроидCentroid

Средняя точка объектов кластера в пространстве признаков; используется, например, в K-means.

03LinkageLinkage

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

04Плотностная достижимостьDensity reachability

Отношение соседства, определяемое через локальную плотность и параметры DBSCAN.

05Параметр epsEpsilon (eps)

Радиус окрестности, используемый DBSCAN для поиска плотных областей.

06Silhouette scoreSilhouette coefficient

Мера геометрической компактности объекта внутри своего кластера и отделённости от соседнего.

07Устойчивость кластеровCluster stability

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

08Главная компонентаPrincipal component

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

09Объяснённая дисперсияExplained variance

Доля вариации данных, описываемая компонентой или набором компонент PCA.

10Проклятие размерностиCurse of dimensionality

Совокупность эффектов высокой размерности, из-за которых расстояния и плотность становятся менее информативными.

Самопроверка

Вопрос 1

Что нужно сделать до запуска K-means, если признаки измеряются в несопоставимых единицах?

Вопрос 2

Как правильно интерпретировать silhouette score?

Вопрос 3

Что является особенностью DBSCAN?

Вопрос 4

Почему номера кластеров нельзя сравнивать напрямую между двумя запусками?

Вопрос 5

Что означает высокая объяснённая дисперсия первых компонент PCA?

Вопрос 6

Как корректно использовать двумерную карту t-SNE или UMAP?

Вопрос 7

Какие действия помогают проверить устойчивость кластеров? Выберите все подходящие варианты.

Вопрос 8

Какие утверждения о PCA верны? Выберите все подходящие варианты.