Bias-variance trade-off на собеседовании Data Scientist
Карьерник — 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.
Как лечить 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|________________________ sizeHigh 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 — она ограничена снизу.
Связанные темы
- Cross-validation на собесе DS
- Регуляризация L1 и L2 на собесе DS
- Bagging vs Boosting на собесе DS
- Hyperparameter tuning на собесе DS
- Подготовка к собесу Data Scientist
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+ вопросами для собесов.