Как ответить
Переобучение (overfitting) — это ситуация, когда модель слишком точно запомнила обучающие данные, включая шум и случайные выбросы, вместо того чтобы выявить общие закономерности. В результате она показывает отличные метрики на тренировочной выборке, но плохо работает на новых, невиданных данных.
Представь, что ты учишь студента решать задачи по математике, показывая ему только 10 примеров. Если он просто заучит ответы наизусть, то на 11-й задаче провалится. Модель делает то же самое.
Основные причины переобучения:
- Слишком сложная модель — например, глубокая нейронная сеть на 1000 параметров для задачи с 50 примерами. Она просто «выучит» каждый пример наизусть.
- Мало данных — если в выборке 30 записей, а признаков 100, модель найдет ложные корреляции.
- Шум в данных — ошибочные метки или выбросы, которые модель воспринимает как закономерность.
- Слишком долгое обучение — если не остановиться вовремя, модель продолжит подстраиваться под шум.
Как это выглядит на практике. Допустим, мы обучаем линейную регрессию на данных о ценах на квартиры. Простая модель (линия) дает ошибку 10% на тренировке и 12% на тесте. Мы заменяем её на полином 10-й степени — ошибка на тренировке падает до 0.1%, но на тесте взлетает до 40%. Это классический overfitting.
Методы борьбы:
- Регуляризация — L1 (Lasso) или L2 (Ridge) добавляют штраф за большие веса. L1 вообще может обнулить часть признаков.
- Кросс-валидация — разбиваем данные на K частей и проверяем модель на каждой. Если метрики на разных фолдах сильно прыгают — это признак переобучения.
- Ранняя остановка — следим за ошибкой на валидационной выборке и останавливаем обучение, когда она перестаёт снижаться.
- Увеличение данных — аугментация изображений, добавление шума к тексту, синтетические выборки через SMOTE.
- Упрощение модели — уменьшаем количество слоёв в нейросети, снижаем глубину деревьев в Random Forest.
Ключевой инструмент диагностики — кривые обучения (learning curves). Если тренировочная ошибка низкая, а валидационная высокая — это overfitting. Если обе высокие — underfitting.