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

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

Главная идея. Найденная структура — гипотеза для исследования, а не автоматически истинная классификация мира.

1. Что означает обучение без учителя

Обучение без учителя (Unsupervised Learning) — семейство методов машинного обучения, которые анализируют данные без заранее заданных целевых меток для каждого обучающего объекта и выявляют в них структуру, сходство, компактное представление или необычные наблюдения.

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

Отсутствие целевых меток не означает, что алгоритм работает без цели вообще. Цель задаёт исследователь: сгруппировать похожие профили энергопотребления, сжать множество показателей до нескольких компонент или найти наблюдения, резко отличающиеся от обычного поведения.

Не путайте с self-supervised learning. При самообучении (self-supervised learning) обучающий сигнал создаётся из самих данных: например, модель учится восстановить скрытую часть входа или предсказать следующий фрагмент последовательности. Такой подход часто используют при предварительном обучении больших моделей. Его принято выделять отдельно, хотя граница между терминами в литературе не всегда одинакова. Полуобучение (semi-supervised learning), в свою очередь, сочетает небольшую размеченную часть данных с большой неразмеченной.

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

Поиск структуры в данныхСлева обучение с учителем использует признаки и известные ответы. Справа обучение без учителя получает признаки и ищет структуру без целевых меток.С учителемX — признакиy — известные ответыПредсказать y для нового XБез учителяX — признакиy не заданаНайти структуру в X
Главное различие — наличие целевых ответов в постановке обучения. В обоих случаях нужны осмысленные данные и проверка результата.

2. Кластеризация: поиск похожих объектов

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

Алгоритм не знает заранее, что означает «похожи». Если сравнивать здания по годовому потреблению, получится одна структура; если по суточному профилю нагрузки — другая. Результат зависит от набора признаков, их масштаба, метрики расстояния и параметров алгоритма.

K-means: группы вокруг центров

K-means требует заранее задать число групп k. Алгоритм размещает центры, относит каждый объект к ближайшему центру, пересчитывает центры как средние координаты объектов и повторяет шаги до стабилизации. Это полезный базовый метод для числовых признаков, но он лучше работает с компактными группами сопоставимого масштаба.

Число k выбирают заранее. Разные начальные положения центров могут давать разные решения, поэтому используют несколько запусков. K-means чувствителен к масштабу признаков и выбросам: показатель с большими числовыми значениями может доминировать в расстоянии.

Иерархическая кластеризация

Иерархические методы строят дерево объединений или разделений объектов. При агломеративном подходе каждый объект сначала считается отдельной группой, затем близкие группы последовательно объединяются. Дерево можно рассматривать на разных уровнях детализации; метрика и способ связи (linkage) влияют на результат.

DBSCAN: группы по плотности

DBSCAN ищет области высокой плотности точек, может находить группы неправильной формы и помечать отдельные точки как шум. Число кластеров не задаётся напрямую, но результат чувствителен к радиусу соседства и минимальному числу соседей. При сильно различающейся плотности групп метод может работать плохо.

Кластеры разной формыТри кластера имеют разные геометрические свойства: компактная группа, вытянутая группа и группа неправильной формы с неоднородной плотностью. Серые точки обозначают шум, не отнесённый к кластерам.Компактный кластерВытянутый кластерНеоднородная плотностьШумФорма и плотность влияют на результат кластеризации
Схема иллюстрирует разные структуры данных. DBSCAN может выделять группы неправильной формы и отмечать отдельные точки как шум; результат зависит от параметров и плотности.

3. Как оценивать кластеры без правильных ответов

Часто нет эталонной разметки, с которой можно напрямую сравнить результат. Поэтому проверка сложнее, чем подсчёт accuracy в классификации.

Важно: высокий silhouette score не доказывает, что кластеры истинные, полезные или причинно обусловленные. Он оценивает геометрическое свойство групп в выбранном пространстве признаков.

4. Снижение размерности и PCA

Снижение размерности (Dimensionality Reduction) — преобразование данных из пространства с большим числом признаков в пространство с меньшим числом координат с сохранением выбранных свойств исходной структуры.

Если у каждого объекта 80 показателей, общую картину трудно увидеть. Методы снижения размерности строят компактное представление для визуализации, уменьшения шума или дальнейшего анализа.

PCA (Principal Component Analysis) строит новые оси — главные компоненты, являющиеся линейными комбинациями исходных признаков. Первая компонента направлена туда, где данные имеют наибольшую дисперсию; следующие объясняют максимально возможную оставшуюся дисперсию при условии ортогональности предыдущим. PCA не выбирает «самые важные исходные признаки» и не гарантирует сохранение редких, но значимых событий.

t-SNE и UMAP часто используют для двумерной визуализации сложных представлений. Расстояния и размеры групп на такой карте зависят от параметров и случайности. Нельзя автоматически трактовать визуально разнесённые островки как объективные классы.

Снижение размерностиМножество исходных признаков преобразуется в меньшее число компонент.Исходные данныемного признаковПреобразованиенапример, PCAновые осиКомпактноепредставлениеменьше координатСжатие неизбежно теряет часть информации
Снижение размерности упрощает представление, но не сохраняет автоматически каждую особенность исходных данных.

5. Обнаружение аномалий

Обнаружение аномалий (Anomaly Detection) — поиск объектов или событий, которые заметно отличаются от ожидаемого поведения или основной массы наблюдений в выбранном представлении данных.

Примеры: необычный профиль энергопотребления здания, редкое сочетание температуры и вибрации оборудования, нетипичная последовательность действий пользователя. Аномалия не обязательно является ошибкой или аварией: это сигнал для проверки.

Isolation Forest пытается изолировать редкие наблюдения случайными разбиениями; Local Outlier Factor сравнивает локальную плотность точки с плотностью соседей. Простые пороговые правила тоже полезны, если границы заданы физикой процесса или требованиями эксплуатации.

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

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

Пусть у нас есть почасовые записи по зданиям: температура наружного воздуха, потребление энергии, влажность, число людей и время суток. Цель — понять повторяющиеся режимы, а не предсказать заранее размеченный класс.

  1. Сформулируйте вопрос. Найти типичные профили часов или дней.
  2. Выберите единицу наблюдения. Например, один день одного здания. Не смешивайте часовые и суточные записи без осознанной агрегации.
  3. Выберите признаки. Средняя и пиковая нагрузка, ночное потребление, диапазон температуры, доля рабочих часов. У каждой величины должны быть единицы и период расчёта.
  4. Подготовьте признаки. Проверьте пропуски, дубликаты, временные зоны и масштабы. Масштабирование особенно важно для методов на расстояниях.
  5. Сравните методы. Начните с K-means, затем проверьте, меняется ли вывод при иерархической кластеризации или DBSCAN.
  6. Проверьте результат. Изучите профили групп, устойчивость, внутренние метрики и экспертную интерпретацию.
  7. Сформулируйте осторожный вывод. «В этом наборе данных обнаружены три повторяющихся профиля» точнее, чем «существуют ровно три типа зданий».

Практическое задание

Предложите два набора признаков для одной задачи: (а) группировка зданий по масштабу потребления; (б) группировка по форме суточного профиля. Для каждого укажите единицу наблюдения, способ масштабирования и риск неверной интерпретации. Объясните, почему результаты могут различаться, хотя здания те же.

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

7. Ограничения и контрольный список

Запомните. Unsupervised learning помогает исследовать данные, когда готовых целевых ответов нет. Его ценность не в том, что алгоритм «сам узнал правду», а в том, что он предложил проверяемую структуру, которую мы сопоставили с исходными данными, задачей и предметными знаниями.

8. Практика с Python: K-means

Пример создаёт синтетические точки. Генератор также возвращает учебные метки, но мы отбрасываем их: алгоритм кластеризации получает только матрицу признаков X.

from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# Создаём синтетические признаки; сгенерированные метки отбрасываем.
X, _ = make_blobs(
    n_samples=300,
    centers=3,
    cluster_std=1.2,
    random_state=42
)

X_scaled = StandardScaler().fit_transform(X)
model = KMeans(n_clusters=3, n_init=10, random_state=42)
cluster_ids = model.fit_predict(X_scaled)

# Оцениваем геометрическое разделение, а не смысловую правильность.
score = silhouette_score(X_scaled, cluster_ids)
print("Silhouette score:", round(score, 3))
print("Cluster IDs:", sorted(set(cluster_ids)))

Разбор: make_blobs создаёт точки; StandardScaler приводит признаки к сопоставимому масштабу; KMeans ищет три группы; silhouette_score оценивает геометрическую отделённость. Номера кластеров — технические идентификаторы: кластер 0 не лучше и не важнее кластера 1.

Среда: Python 3.9+ и актуальная версия scikit-learn. Установка: python -m pip install scikit-learn. В реальном проекте преобразования нужно обучать только на данных, разрешённых для соответствующего этапа анализа.