Лекция 11. Кластеризация и снижение
размерности
Цель лекции. Изучить основные методы обучения без учителя,
принципы кластеризации объектов и снижения размерности данных. Рассмотреть
алгоритмы k-средних, DBSCAN, иерархическую кластеризацию и метод главных
компонент (PCA), а также способы оценки результатов.
Ключевые понятия: обучение без учителя, кластер, центроид,
k-средних, DBSCAN, плотность, иерархическая кластеризация, дендрограмма, PCA,
главная компонента, объяснённая дисперсия, силуэт.
1. Обучение без учителя и задачи кластеризации
Обучение без учителя (Unsupervised
Learning) — подход, при котором алгоритм анализирует
объекты без заранее известных целевых меток. Его задача — обнаружить внутреннюю
структуру данных: группы похожих наблюдений, скрытые направления изменчивости
или нетипичные объекты.
Кластеризация объединяет объекты в группы (кластеры) так,
чтобы внутри одной группы объекты были относительно похожи, а между группами —
различались. Например, кластеризация может использоваться для сегментации
покупателей по покупательскому поведению или группировки документов по
содержанию.
В отличие от классификации, названия и
количество классов заранее не обязательно известны. Полученные кластеры не
следует автоматически считать объективными категориями: их смысл определяется
признаками, выбранной метрикой и предметной областью.
2. Алгоритм k-средних (k-means)
k-средних (k-means) — метод кластеризации, который делит
наблюдения на заранее заданное число кластеров
. Каждый кластер описывается центроидом —
средним вектором признаков входящих в него объектов.
Алгоритм выполняет повторяющиеся
шаги:
1.
Выбирает
начальные центроиды.
2.
Назначает
каждому объекту ближайший центроид.
3.
Пересчитывает
центроиды по объектам соответствующих кластеров.
4.
Повторяет
назначение и пересчёт до остановки.
Целевая функция k-средних — сумма
квадратов расстояний до центроидов:

Здесь
—
множество объектов k-го кластера,
— его
центроид.
Центроид вычисляется как среднее
значение векторов объектов кластера:
![]()
Метод хорошо подходит для компактных
кластеров приблизительно сферической формы. Его недостатки — необходимость
заранее выбирать
, чувствительность к выбросам, масштабу
признаков и начальным центроидам. Для более устойчивого запуска часто
применяется инициализация k-means++.
3. DBSCAN и иерархическая кластеризация
DBSCAN (Density-Based Spatial
Clustering of Applications with Noise) формирует кластеры как области повышенной плотности. Он не требует
заранее задавать количество кластеров и способен помечать часть объектов как
шум.
Два основных параметра:
•
eps
— радиус окрестности объекта;
•
min_samples
— минимальное число объектов в окрестности, включая сам объект, для признания
точки ядром плотной области.
DBSCAN может выделять кластеры
сложной формы, однако подбор параметров затрудняется, если плотности групп
сильно различаются. Результат также зависит от выбранной метрики расстояния.
Иерархическая кластеризация последовательно объединяет близкие группы
(агломеративный подход) либо разделяет исходную группу на части (дивизивный
подход). Результат удобно представлять в виде дендрограммы — дерева
объединений объектов.
При агломеративной кластеризации
важен способ определения расстояния между группами: single, complete, average
или ward. Метод Уорда стремится ограничивать увеличение внутрикластерной
дисперсии и обычно применяется с евклидовой геометрией.
|
Метод |
Требуется число кластеров заранее |
Особенности |
|
k-means |
Да |
Быстрый для компактных групп;
чувствителен к выбросам |
|
DBSCAN |
Нет |
Выделяет шум и кластеры сложной
формы |
|
Иерархический |
Не обязательно на этапе построения |
Позволяет анализировать уровни
объединения |
4. Оценка качества кластеризации
Поскольку истинные метки часто
неизвестны, для оценки кластеризации применяются внутренние метрики, анализ
устойчивости результатов и экспертная интерпретация.
Коэффициент силуэта (Silhouette
Score) сопоставляет среднее расстояние
объекта до других объектов своего кластера и до ближайшего другого кластера:
![]()
Здесь
—
среднее расстояние до объектов своего кластера,
—
минимальное среднее расстояние до объектов другого кластера.
Значения силуэта лежат в интервале
от −1 до 1. Более высокое значение обычно свидетельствует о лучшем
разделении групп по выбранной метрике. Коэффициент силуэта не определён, если
все объекты принадлежат одному кластеру или каждый объект образует отдельный
кластер.
Для k-means также исследуют
зависимость внутрикластерной суммы квадратов от
— метод
локтя. Резкое замедление уменьшения ошибки может указывать на разумное
число кластеров, но выраженный «локоть» присутствует не всегда.
5. Снижение размерности и метод
главных компонент
Снижение размерности (Dimensionality
Reduction) — преобразование исходного пространства
признаков в пространство меньшей размерности с целью упростить анализ,
визуализацию или последующее моделирование.
Метод главных компонент (Principal
Component Analysis, PCA) находит ортогональные направления,
вдоль которых данные имеют наибольшую дисперсию. Перед применением PCA признаки
обычно центрируют; при разных масштабах измерений часто также стандартизируют.
Для центрированных данных первая главная
компонента соответствует направлению
, максимизирующему дисперсию проекций:
![]()
Проекция объекта на выбранную компоненту:
![]()
Следующие компоненты ортогональны предыдущим и
описывают оставшуюся изменчивость данных.
Доля объяснённой дисперсии для j-й компоненты
определяется как:
![]()
Здесь
—
соответствующее собственное значение ковариационной матрицы. Сумма долей
выбранных компонент показывает, какая часть общей дисперсии сохранена.
PCA — линейный метод: он хорошо отражает
линейные направления изменчивости, но не всегда сохраняет сложную нелинейную
структуру данных. Важнейшее ограничение: большая дисперсия не обязательно
означает большую полезность признака для конкретной задачи.
6. Практическая реализация на Python
Рассмотрим применение PCA и k-means
к набору данных Iris. Названия видов цветов используются здесь только для
контекста; алгоритм кластеризации обучается без меток.
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans, DBSCAN
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
iris = load_iris()
X = iris.data
X_scaled = StandardScaler().fit_transform(X)
pca = PCA(n_components=2)
X_2d = pca.fit_transform(X_scaled)
print("Доли объяснённой дисперсии:",
pca.explained_variance_ratio_)
print("Суммарная доля:",
pca.explained_variance_ratio_.sum())
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
labels = kmeans.fit_predict(X_scaled)
print("Silhouette k-means:",
silhouette_score(X_scaled, labels))
plt.scatter(X_2d[:, 0], X_2d[:, 1], c=labels, cmap="viridis")
plt.xlabel("Первая главная компонента")
plt.ylabel("Вторая главная компонента")
plt.title("Кластеры k-means в проекции PCA")
plt.show()
Объяснение. Сначала признаки стандартизируются. PCA строит
двумерную проекцию для визуализации. k-means при этом обучается на всех четырёх
стандартизированных признаках, а не на двумерной проекции. Коэффициент силуэта
также вычисляется в исходном стандартизированном пространстве.
Эксперимент с количеством кластеров
for k in [2, 3, 4, 5, 6]:
model = KMeans(n_clusters=k,
random_state=42, n_init=10)
predicted =
model.fit_predict(X_scaled)
score = silhouette_score(X_scaled,
predicted)
print(f"k={k}:
силуэт={score:.3f}")
# Дополнительно попробуйте кластеризацию
на основе плотности
model_db = DBSCAN(eps=0.8, min_samples=5)
labels_db = model_db.fit_predict(X_scaled)
print("Метки DBSCAN:", set(labels_db))
Метка -1 у DBSCAN обозначает шум.
Попробуйте изменить eps и min_samples и сравнить количество выделенных
кластеров. При вычислении силуэта для DBSCAN важно корректно учитывать шум и
проверять, что число сравниваемых кластеров допускает расчёт метрики.
В прикладных проектах параметры
стандартизации и PCA должны определяться только на обучающих данных, если
преобразования используются перед обучением модели с учителем.
7. Практическое значение и выводы
Кластеризация помогает обнаруживать
группы объектов без заранее заданных меток. k-means удобен для компактных
групп, DBSCAN — для областей высокой плотности и обнаружения шума, а
иерархические методы позволяют исследовать вложенную структуру данных.
Снижение размерности, в частности
PCA, используется для визуализации и уменьшения числа признаков. При этом важно
помнить, что двумерная проекция не всегда сохраняет все отношения между
объектами.
Качество кластеризации следует
оценивать не только числовыми метриками, но и содержательным смыслом выделенных
групп.
Главный результат лекции: понимание различий между
кластеризацией и снижением размерности, принципов k-means, DBSCAN и PCA, а
также ограничений их применения и способов анализа результатов.