Собесов

khangich: как понять, что модель переобучается

ML / Data ScienceДиагностика моделейСредняяMiddle

Условие

По каким признакам понятно, что модель переобучилась? Что с этим делать?

Решение

Подход

Диагностика.

  1. Большой gap между train и val метрикой. Train accuracy 0.99, val 0.75 — классическое переобучение.
  2. Learning curves. Train loss продолжает падать, val loss выходит на плато или растёт.
  3. Сложность модели несоразмерна объёму данных. 100k параметров на 1000 примеров — почти гарантированный overfit.
  4. CV-разброс большой. На разных фолдах метрика прыгает с 0.6 до 0.9.

Что делать.

  1. Регуляризация.

    • Линейные модели: L1/L2.
    • GBM: уменьшить max_depth, num_leaves, learning_rate; включить min_child_samples.
    • Нейросети: dropout, weight decay, label smoothing.
  2. Больше данных.

    • Сбор реальных.
    • Аугментации (особенно для CV/NLP — crops, flips, paraphrasing).
  3. Упростить модель.

    • Меньше параметров.
    • Меньше признаков (feature selection или L1).
  4. Ранняя остановка. На каждой эпохе/итерации мониторим val loss и стопаем при росте N эпох подряд.

  5. Ансамблирование. Bagging усредняет шум разных моделей.

  6. Проверить утечку. Высокий train + высокий val часто означает, что в train попала тестовая информация.

import matplotlib.pyplot as plt
plt.plot(history["train_loss"], label="train")
plt.plot(history["val_loss"],   label="val")
plt.legend()  # ищем точку, где val начинает расти

Подводные камни

  1. Переобучение валидации. Если 50 раз подбирать гиперпараметры по одной и той же val — модель «выучивает» эту val. Решение: отдельный test, не трогать его до финала.
  2. Утечка данных даёт «суперскор» на val. Если val метрика подозрительно хорошая, в первую очередь ищите утечку, а не радуйтесь.
  3. Регуляризация без масштабирования в линейных моделях — частая ошибка.
  4. На несбалансированных данных gap между train и val могут размываться метрикой accuracy — смотрите PR-AUC и метрики по позитивному классу.

Эталонный ответ

Переобучение видно по разнице train/val метрик и форме learning curves (train падает, val растёт). Лечится регуляризацией, упрощением модели, увеличением данных, ранней остановкой и ансамблями. Перед паникой проверьте утечку данных — она маскируется под «прекрасную val метрику».

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти