Bias-variance trade-off на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

Bias-variance — основа понимания, почему модель не работает. На собесе DS обязательно: «модель показывает 95% на train и 60% на test — что делать», «как linear regression относится к bias», «почему bagging снижает variance, а boosting bias».

Главная боль без понимания — DS видит overfit, тюнит гиперпараметры наугад, не понимает, в какую сторону идти.

Формальное разложение ошибки

Для регрессии с MSE и истинной функцией y = f(x) + ε, где ε ~ N(0, σ²):

E[(y - ŷ(x))²] = (E[ŷ(x)] - f(x))²   ← Bias²
              + E[(ŷ(x) - E[ŷ(x)])²] ← Variance
              + σ²                    ← Irreducible error

Три источника ошибки:

  • Bias² — насколько в среднем модель отклоняется от истины. Большой bias = слишком простая модель.
  • Variance — насколько модель «прыгает» при разных тренировочных выборках. Большая variance = слишком сложная модель.
  • Irreducible error (σ²) — шум данных, который никакая модель не уберёт.

В классификации формальное разложение сложнее (зависит от лосса), но интуиция та же.

Что такое bias и variance простыми словами

Bias — систематическое отклонение. Если бы вы тренировали модель 1000 раз на разных выборках и усреднили предсказание, насколько среднее далеко от истинного ответа.

Variance — насколько предсказания «прыгают» от тренировочной выборки к выборке. Сложная модель с высокой variance будет учить шум, а не сигнал.

target → ●
predictions →

high bias, low variance:    ○ ○ ○ ○ ○        — кучно, но не туда
low bias, high variance:    ○ ○ ● ○ ○        — в среднем туда, но разлёт
high bias, high variance:   ○      ○         — везде и не туда
                                   ○
                              ○
low bias, low variance:           ○●○         — идеал
                                   ○○

Underfit vs overfit — как отличить

Считаем ошибку на train и validation:

train error val error Диагноз
Высокий Высокая Высокая High bias / underfit
Низкий Низкая Высокая High variance / overfit
Низкий Низкая Низкая OK
Высокий Высокая Низкая Что-то странное (data leak в обратку?)

Зазор train vs val — главный сигнал variance. Train 95%, val 70% → переобучение. Train 65%, val 64% → модель упёрлась в bias.

Как лечить high bias

Underfit — модель слишком простая.

  • Увеличить ёмкость: глубже tree, больше слоёв NN, выше степень полинома, больше estimators в boosting.
  • Уменьшить регуляризацию: меньше L1/L2, меньше dropout.
  • Добавить признаки: новые фичи, feature engineering, polynomial features, interactions.
  • Удалить излишние ограничения: убрать max_depth=3 если у тебя 100k строк.
  • Сменить алгоритм: linear regression на нелинейных данных не работает — попробуй RF, boosting, NN.
  • Тренировать дольше / лучше: больше эпох, lr-scheduler, попробовать Adam вместо SGD.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Как лечить high variance

Overfit — модель слишком сложная или мало данных.

  • Больше данных. Самый надёжный способ. Generates больше учат сигнал, а не шум.
  • Регуляризация. L1 / L2, dropout, weight decay, label smoothing.
  • Снизить ёмкость. Меньше глубина деревьев, меньше слоёв, меньше параметров.
  • Early stopping. Тренировать пока val улучшается; остановиться при стагнации.
  • Bagging. Ансамбль независимых моделей усредняет variance (Random Forest).
  • Data augmentation (CV/NLP). Эффективно увеличивает датасет.
  • Cross-validation. Не лечит variance модели, но даёт честную оценку.
  • Простая модель. Иногда linear regression на 1k строк лучше, чем XGBoost.

Learning curves

График «train_score / val_score vs training set size».

High bias: обе кривые низко и сошлись. Добавление данных не помогает — модель не имеет ёмкости.

score
 ^
1.0|
   |
0.8|
   |
0.6|----------train------val----  ← плато низко
   |
0.4|________________________ size

High variance: train высоко, val низко, между ними большой gap. Добавление данных приближает val к train.

score
 ^
1.0|----train----------------
   |     ↑
0.8|     | gap (variance)
   |     ↓
0.6|-----val-------
   |          ↑
0.4|      val растёт с данными
   |________________________ size

Действие по диагнозу:

  • High bias + flat curves → нужна мощнее модель / новые признаки.
  • High variance + растущая val → больше данных / регуляризация.
  • Кривые сошлись на достойном уровне → модель готова.

Частые ошибки

Считать bias-variance оторванным от лосса. Разложение справедливо для квадратичного лосса. Для cross-entropy / 0-1 loss формулы другие, но интуиция применима.

Путать variance модели с variance данных. Variance модели — variance предсказания при разных train-выборках. Variance данных — статистическое свойство.

Думать, что bagging уменьшает bias. Bagging уменьшает variance (усреднение), bias оставляет тот же. Boosting уменьшает bias.

Решать high variance большой регуляризацией. Слишком сильная регуляризация → underfit. Подбирать L1/L2 через CV.

Брать train accuracy 100% за идеал. Это сигнал переобучения. Всегда смотри val/test.

Сравнивать bias и variance на разных выборках. Hold-out test set должен оставаться неприкосновенным до финала. На нём считаем итоговую generalization error.

Не отделять irreducible error. Если шум σ² высокий, нет смысла гнаться за минимальной val error — она ограничена снизу.

Связанные темы

FAQ

Linear regression high bias или low bias?

Обычно high bias на нелинейных данных и low variance (предсказания почти не меняются от выборки к выборке). На линейных — обратное.

Random Forest решает bias-variance trade-off?

Снижает variance через усреднение. Bias остаётся примерно как у одного дерева. Поэтому RF на ленивых данных лучше, чем одно глубокое дерево; на трудных нелинейных — boosting обычно сильнее.

Можно ли иметь high bias и high variance одновременно?

Да. Например, неправильно подобранная нелинейная модель с малым числом примеров. Лечение — пересмотреть модель и признаки целиком.

Почему dropout снижает variance?

Случайно отключает нейроны на каждой итерации → сеть не может «слишком сильно» довериться отдельным фичам → variance ниже, обобщение лучше.

Как bias-variance связано с CV?

Cross-validation даёт честную оценку val-ошибки и помогает увидеть variance модели по разбросу метрик между фолдами. Большой разброс между фолдами = high variance.

Это официальная информация?

Нет. Статья основана на классической теории обучения (Geman 1992, Hastie 2009 «Elements of Statistical Learning») и стандартных подходах в ML.


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.