Собесов

Хабр ML — bias-variance tradeoff на пальцах

ML / Data ScienceОсновыСредняяMiddle

Условие

Объясните bias-variance tradeoff. В каких терминах его выражают? Какие алгоритмы относят к «high bias» и «high variance»? Как практически уменьшить каждую часть?

Решение

Декомпозиция ошибки

Для квадратичной ошибки:

E[(f^(x)y)2]=(E[f^(x)]f(x))2Bias2+Var(f^(x))Variance+σ2NoiseE[(\hat f(x) - y)^2] = \underbrace{(E[\hat f(x)] - f(x))^2}_{\text{Bias}^2} + \underbrace{\text{Var}(\hat f(x))}_{\text{Variance}} + \underbrace{\sigma^2}_{\text{Noise}}
  • Bias — систематическая ошибка: модель в среднем (по разным обучающим выборкам) не попадает в истинную функцию.
  • Variance — нестабильность: на разных обучающих выборках модель предсказывает разное.
  • Noise — неустранимый шум данных.

Tradeoff

Простая модель: высокий bias, низкий variance (underfitting). Сложная: низкий bias, высокий variance (overfitting). Оптимум — компромисс.

Модель Bias Variance
Linear regression высокий низкий
Polynomial degree 1 высокий низкий
Polynomial degree 15 низкий высокий
Decision Tree (без ограничений) низкий высокий
Decision Tree (depth=2) высокий низкий
Random Forest низкий средний
Gradient Boosting (мелкие деревья) низкий средний
KNN (k=1) низкий очень высокий
KNN (k=N) очень высокий низкий
Naive Bayes высокий низкий

Что делать с high bias (underfitting)

  • Усложнить модель: больше параметров, степень полинома, глубже деревья;
  • Добавить признаки или их трансформации;
  • Ослабить регуляризацию (уменьшить L1/L2);
  • Тренировать дольше, если модель не сошлась.

Что делать с high variance (overfitting)

  • Регуляризация (L1, L2, dropout, early stopping);
  • Больше данных (всегда уменьшает variance);
  • Усреднение моделей (bagging, Random Forest);
  • Уменьшить сложность (deeper tree → shallower);
  • Cross-validation для подбора гиперпараметров;
  • Feature selection — убрать шумовые признаки.

Bagging vs Boosting

  • Bagging (Random Forest) уменьшает variance, не меняет bias. Усредняет независимые деревья.
  • Boosting (XGBoost, LightGBM) уменьшает bias, но может увеличить variance. Каждое дерево исправляет ошибки предыдущих.

Диагностика на learning curve

  • Train ↑, Val ↑ примерно одинаково → high bias;
  • Train ↑↑, Val ↑ (большой gap) → high variance;
  • Train + Val близко и обе высоки → не учится / Bayes error.

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

  1. «Bias = ошибка на train, Variance = ошибка на test». Не совсем. Bias — это смещение среднего предсказания от истины. Variance — разброс предсказаний.
  2. «Больше данных всегда хорошо». Снижает variance, но если модель плоха (high bias) — данные не помогут.
  3. Тестировать модель один раз на test set — и фиксировать. Если многократно подбирать модель по test — это data leakage через researcher degrees of freedom, фактическая ошибка будет выше.
  4. Cross-validation на временных рядах не должна перемешивать порядок — используйте TimeSeriesSplit.
  5. Регуляризация без shuffling fold-ов на временных данных смещает оценку.

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

Ошибка = Bias² + Variance + шум. Простые модели — высокий bias. Сложные — высокий variance. High bias лечат сложностью и фичами; high variance — данными, регуляризацией, ансамблями, упрощением. Bagging уменьшает variance, boosting — bias. Диагностируется по learning curves.

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

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

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