Обучение без учителя: когда нет меток

Что делать, когда правильных ответов в данных нет, — и зачем это вообще нужно.

Обучение без учителя (unsupervised learning) — поиск структуры в данных без заранее известных правильных ответов.

Почему меток часто нет

Разметка стоит дорого. Чтобы обучить классификатор спама, кто-то должен вручную пометить тысячи писем. Но огромная часть данных приходит вообще без меток: логи поведения пользователей, транзакции, тексты, фотографии. Заранее не сказано, какие там «классы» и есть ли они. Обучение без учителя как раз про такие данные: модель сама находит закономерности.

Что значит «найти структуру»

У задач без учителя нет однозначного «правильного ответа», но есть полезные находки:

  • Группы (кластеры). Похожие объекты складываются вместе. Например, среди клиентов сами собой проявляются сегменты: «экономные», «премиум», «редкие покупатели».
  • Упрощённое представление. Сжать десятки признаков до двух-трёх, не потеряв сути, — чтобы данные стало видно на графике или чтобы ускорить другую модель. Это понижение размерности.
  • Аномалии. Объекты, не похожие ни на что, — кандидаты в мошенничество или поломки.

С учителем vs без учителя

С учителемБез учителя
МеткиЕстьНет
ЦельПредсказать ответНайти структуру
ПримерСпам / не спамСегменты клиентов
Оценка качестваСравнить с правдойСложнее: правды нет

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

Группируем числа без меток

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

# Данные без меток
values = [1, 2, 2.5, 9, 10, 11]

# Два ориентира (центра). Каждое число идёт к ближайшему
center_low, center_high = 2, 10

group_low, group_high = [], []
for v in values:
    if abs(v - center_low) <= abs(v - center_high):
        group_low.append(v)
    else:
        group_high.append(v)

print("Группа 'маленькие':", group_low)
print("Группа 'большие':  ", group_high)

Вывод:

Группа 'маленькие': [1, 2, 2.5]
Группа 'большие':   [9, 10, 11]

Мы не давали меток — структура («два скопления») проявилась сама. Это зерно идеи кластеризации, которую разберём в следующем уроке уже честно, с пересчётом центров.

Где это приносит пользу бизнесу

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

  • Сегментация клиентов. Магазин не знает заранее, какие у него типы покупателей. Кластеризация сама выделит группы — и под каждую можно сделать своё предложение.
  • Рекомендации. «Похожие товары» и «с этим часто покупают» часто строятся на поиске близких объектов без всяких меток.
  • Поиск аномалий. Необычные транзакции или показания датчиков выбиваются из общей структуры — это кандидаты в мошенничество или поломки.
  • Подготовка для других моделей. Понижение размерности упрощает данные перед обучением модели с учителем.

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

Итог

  • Обучение без учителя работает с данными без меток и ищет в них структуру.
  • Главные задачи: кластеризация (группы), понижение размерности, поиск аномалий.
  • Меток нет — поэтому качество оценивать сложнее, чем с учителем.
  • Метод полезен, потому что большинство реальных данных приходит без разметки.
Проверьте себя
1. Чем характеризуется обучение без учителя?
AУ данных есть правильные ответы для каждого примера
BУ данных нет меток, и модель сама ищет в них структуру
CОно всегда точнее обучения с учителем
DОно не использует данные
2. Какая задача относится к обучению без учителя?
AПредсказать цену квартиры по характеристикам
BОпределить спам по размеченным письмам
CРазбить клиентов на сегменты, не имея заранее заданных групп
DПредсказать температуру на завтра
3. Почему качество обучения без учителя оценивать сложнее?
AПотому что данных всегда мало
BПотому что нет правильных ответов, с которыми можно сравнить результат
CПотому что алгоритмы работают медленно
DКачество вообще не оценивают
Поддержать проект