Смещение, дисперсия и переобучение
Смещение, дисперсия и переобучение
РазработчикуPlay ITЗагрузка интерактивного демо…
Модель может ошибаться по разным причинам: слишком простая и "не дотягивает" до закономерностей или слишком гибкая и запоминает шум. Язык для этого — смещение (bias) и дисперсия (variance). Ниже — объяснение через мишень и типичные кривые ошибки с привязкой к Melbourne.
Гиперпараметры и параметры
| Параметры модели | Гиперпараметры | |
|---|---|---|
| Примеры | Веса линейной регрессии, пороги в дереве | max_depth, n_estimators, learning_rate |
| Как задаются | Алгоритм обучает на данных | Разработчик выбирает до или во время CV |
| Аналогия | Результат игры | Ручки на "приборной панели" радио |
Подбор гиперпараметров — на validation или k-fold, не на test.
Смещение и дисперсия — мишень
Представьте центр мишени как истинное значение y, а попадания — отдельные прогнозы модели.
| Паттерн | Смещение | Дисперсия | Интерпретация |
|---|---|---|---|
| Куча в центре | Низкое | Низкое | Идеал |
| Куча рядом с центром, но размазана | Низкое | Высокое | В среднем верно, нестабильно |
| Куча далеко от центра, плотная | Высокое | Низкое | Систематически мимо |
| Разброс по всей мишени | Высокое | Высокое | Худший случай |
- Смещение — насколько прогнозы в среднем отклонены от правды (модель "не туда целится").
- Дисперсия — насколько прогнозы разбросаны при разных выборках (модель "дрожит").
Цель — низкая ошибка на новых данных, а не обязательно минимум bias или variance по отдельности.
Компромисс bias–variance
По мере усложнения модели (слева направо на оси "сложность"):
- сначала высокое смещение, низкая дисперсия → недообучение;
- затем sweet spot — ошибка на train и test близка;
- дальше дисперсия растёт, train error падает, test error растёт → переобучение.
Недообучение (underfitting)
Модель слишком проста: линейная прямая там, где нужна кривая; дерево глубины 1 на сложных данных.
Признаки:
- плохая метрика и на train, и на test;
- мало данных или не те признаки;
- train/test не перемешали — часть закономерностей "застряла" только в одной выборке.
Лечение — больше признаков, нелинейная модель, больше данных, снять жёсткую регуляризацию.
Переобучение (overfitting)
Модель подстроилась под шум train.
Признаки:
- отлично на train, заметно хуже на test;
- в Melbourne: MAE train ≈ 28k AUD, MAE test ≈ 168k при
max_depth=30.
Лечение — упростить (max_depth=5), регуляризация, dropout (нейросети), больше данных, ансамбли с усреднением (бэггинг, random forest).
Практические рычаги
| Симптом | Что попробовать |
|---|---|
| Train и test оба плохие | Сложнее модель, новые признаки, больше данных |
| Train хорош, test плох | Меньше max_depth, больше min_samples_leaf, L1/L2, ранняя остановка |
| Нестабильные CV-фолды | Больше данных, проще модель, проверить leakage |
| k-NN шумит | Увеличить k (усреднить больше соседей) |
| Одно дерево переобучает | Random Forest или ограничить глубину |
Линейная регрессия редко переобучает, но часто недообучает на нелинейных данных. Одно глубокое дерево — обратная крайность.
Регуляризация (L1/L2) штрафует сложность весов: искусственно поднимает "bias", чтобы снизить variance — классический tradeoff.
Связь с Melbourne и GridSearch
В Сквозной проект — цены на жильё в Мельбурне в стартовой конфигурации намеренно ставят max_depth=30 — train MAE падает, test страдает. Смена на max_depth=5 и рост n_estimators сужает разрыв: типичная ручная настройка bias–variance.
GridSearchCV ищет комбинацию гиперпараметров по CV на train; финальный test — один замер после выбора.
Меняйте один гиперпараметр и смотрите train и test (или CV). Так видно, растёт variance или падает bias.
Связанные материалы
- Разбиение данных — shuffle, leakage, k-fold
- Деревья и ансамбли — энтропия, RF, бустинг
- Как начать с ML — краткий глоссарий bias/variance
- Машинное обучение — регуляризация