Как определить, что у модели высокий variance
Что проверяют
Умеете ли вы по кривым и ошибкам отличить переобучение от недообучения и выбрать лечение под диагноз. Следом обычно спрашивают, поможет ли добавить данные и чем это проверить заранее.
Как отвечать
Высокий variance означает, что модель слишком сильно зависит от конкретной обучающей выборки: на ней ошибка низкая, на новых данных заметно выше. Диагностика:
- разрыв между train и validation: ошибка на обучении низкая, на валидации высокая. Сравнивайте с базовой моделью и с достижимым уровнем ошибки, иначе непонятно, что считать низким;
- кривые обучения по объёму данных:
learning_curveиз scikit-learn строит ошибку от размера обучающей выборки. При высоком variance между кривыми большой зазор, и он сужается с ростом данных. При высоком bias обе кривые быстро сходятся на плохом уровне и дальше не улучшаются; - кривая по гиперпараметру:
validation_curve, например по глубине дерева или силе регуляризации. Справа от оптимума train продолжает улучшаться, а валидация ухудшается; - разброс по фолдам: большое стандартное отклонение метрики в кросс-валидации говорит о нестабильности модели, хотя на маленьком датасете оно бывает высоким и само по себе;
- нейросети: loss на train падает, а на валидации после какой-то эпохи начинает расти.
Лечение: больше данных или аугментация, регуляризация (L2, L1, dropout), ранняя остановка, упрощение модели, отбор признаков, бэггинг. Random Forest снижает variance за счёт усреднения деревьев. Бустинг в первую очередь снижает bias и сам легко переобучается, поэтому ему нужны небольшой learning_rate, ограничение глубины и ранняя остановка.
Где спотыкаются
Путают высокий variance со сдвигом распределения. Если валидация взята из другого периода или другой аудитории, разрыв может объясняться данными, а не сложностью модели, и регуляризация его не закроет. Сначала сравнивают ошибку на отложенной части train и на валидации.
Подбирают гиперпараметры по тестовой выборке. После десятка итераций тест тоже становится обучающим, и оценка variance теряет смысл.
Советуют «добавить признаков» при переобучении. Это увеличивает сложность и обычно делает variance ещё выше.