Обучение без учителя: когда нет меток
Что делать, когда правильных ответов в данных нет, — и зачем это вообще нужно.
Обучение без учителя (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]
Мы не давали меток — структура («два скопления») проявилась сама. Это зерно идеи кластеризации, которую разберём в следующем уроке уже честно, с пересчётом центров.
Где это приносит пользу бизнесу
Обучение без учителя особенно ценно там, где разметка невозможна или слишком дорога, а данных очень много.
- Сегментация клиентов. Магазин не знает заранее, какие у него типы покупателей. Кластеризация сама выделит группы — и под каждую можно сделать своё предложение.
- Рекомендации. «Похожие товары» и «с этим часто покупают» часто строятся на поиске близких объектов без всяких меток.
- Поиск аномалий. Необычные транзакции или показания датчиков выбиваются из общей структуры — это кандидаты в мошенничество или поломки.
- Подготовка для других моделей. Понижение размерности упрощает данные перед обучением модели с учителем.
Часто обучение без учителя — это первый шаг исследования незнакомых данных: «что здесь вообще есть?». Найденная структура подсказывает гипотезы, которые потом проверяют уже точнее.
Итог
- Обучение без учителя работает с данными без меток и ищет в них структуру.
- Главные задачи: кластеризация (группы), понижение размерности, поиск аномалий.
- Меток нет — поэтому качество оценивать сложнее, чем с учителем.
- Метод полезен, потому что большинство реальных данных приходит без разметки.