Что такое обучение с учителем
Обучение с учителем (supervised learning) — способ машинного обучения, при котором у каждого обучающего примера есть правильный ответ — метка. «Учитель» — это и есть ответы: модель сравнивает свои догадки с ними и подстраивается, пока не начнёт отвечать верно. Потом обученная модель отвечает на новые примеры, где ответа заранее нет.
Примеры: письмо → «спам» или «не спам»; фото → «кошка» или «собака»; описание квартиры → цена.
Два вида задач
- Классификация — ответ один из нескольких классов: спам или нет, вид растения, цифра на картинке.
- Регрессия — ответ число: цена квартиры, температура завтра, время доставки.
Пример: модель учится находить порог
Модель решает, спам ли письмо, по числу восклицательных знаков. «Обучение» здесь — перебор порогов: для каждого программа считает, сколько примеров он классифицирует верно, и оставляет лучший.
# (восклицательных знаков, метка): 1 — спам, 0 — не спам
examples = [(0, 0), (1, 0), (2, 0), (2, 1), (3, 0), (5, 1), (6, 1), (8, 1)]
best_threshold, best_correct = None, -1
for threshold in range(10):
correct = sum(1 for marks, label in examples if (marks >= threshold) == (label == 1))
if correct > best_correct:
best_threshold, best_correct = threshold, correct
print("Порог:", best_threshold)
print("Верно на примерах:", best_correct, "из", len(examples))
print("Письмо с 7 знаками:", "спам" if 7 >= best_threshold else "не спам")Порог: 4
Верно на примерах: 7 из 8
Письмо с 7 знаками: спамПравило «спам, если знаков 4 и больше» модель нашла сама — по меткам. Один пример, (2, 1), оно не объясняет: настоящие данные всегда немного «шумят». Модели посложнее работают так же, только подбирают не один порог, а тысячи или миллиарды весов.
Чем отличаются другие виды обучения
| Вид | Что есть в данных | Пример задачи |
|---|---|---|
| С учителем | Примеры и правильные ответы | Распознать спам, оценить цену |
| Без учителя | Только примеры, без ответов | Разбить покупателей на группы (кластеризация) |
| С подкреплением | Действия и награда за результат | Научиться играть в игру, управлять роботом |
Подводные камни
- Метки ставят люди, и это дорого и долго: тысячи фото нужно подписать вручную. Ошибки в метках модель выучит вместе с правильными ответами.
- Проверять модель нужно на новых примерах, а не на тех, на которых она училась. Иначе легко пропустить переобучение — справка Что такое переобучение модели.
- Модель знает только свои классы. Модель «кошка или собака» на фото попугая всё равно ответит «кошка» или «собака».
Полный пример классификации с проверочной выборкой и библиотекой scikit-learn — в уроке Машинное обучение на Python.