Что такое переобучение и как с ним бороться
Что проверяют
Умеете ли вы диагностировать переобучение по метрикам, а не только перечислить регуляризации. Следом обычно спрашивают, как вы строите валидацию для конкретной задачи и чем переобучение отличается от утечки данных.
Как отвечать
Переобучение это ситуация, когда модель запоминает шум и особенности обучающей выборки вместо закономерности. В терминах bias-variance это высокая дисперсия: метрика на трейне отличная, на валидации заметно хуже, и разрыв растёт вместе со сложностью модели или числом эпох.
Сначала диагностика:
- отложенная выборка: трейн, валидация и тест, к тесту прикасаются один раз в конце;
- кросс-валидация:
KFoldилиStratifiedKFoldв scikit-learn, для временных рядовTimeSeriesSplit, для данных с группами (один клиент, много строк)GroupKFold; - кривые обучения: метрика на трейне и валидации в зависимости от объёма данных или эпохи.
Потом способы борьбы под конкретную модель:
- линейные модели: L2 сжимает веса, L1 зануляет часть из них и заодно отбирает признаки, ElasticNet совмещает оба. В
LogisticRegressionпараметрCобратен силе регуляризации: меньшеC, проще модель; - деревья и бустинг:
max_depth,min_samples_leaf, сэмплирование строк и признаков, меньшийlearning_rateи ранняя остановка по валидации в XGBoost, LightGBM и CatBoost; - нейросети: weight decay (
AdamW), dropout, аугментации, ранняя остановка по валидационному лоссу; - данные: больше примеров, чистка разметки, отказ от шумных признаков;
- ансамбли: бэггинг и случайный лес снижают дисперсию.
Где спотыкаются
Путают переобучение с утечкой. Подозрительно высокая метрика на валидации чаще говорит о признаке из будущего или о масштабировании и отборе признаков до разбиения. Препроцессинг кладут в Pipeline, чтобы он обучался только на трейне.
Перемешивают временной ряд обычным KFold. Модель учится на будущем, оценка выходит оптимистичной, а на проде качество проседает.
Подбирают гиперпараметры сотнями итераций по одной и той же валидации и не замечают, что переобучились уже на неё. Помогает тест, не участвовавший в подборе, или вложенная кросс-валидация.