Смещение, дисперсия и переобучение
Модель может ошибаться по разным причинам: слишком простая и «не дотягивает» до закономерностей или слишком гибкая и запоминает шум. Язык для этого — смещение (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
В 7.md в стартовой конфигурации намеренно ставят 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
- Машинное обучение — регуляризация
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Машинное обучение - идея обучения моделей на данных вместо полного ручного задания правил поведения системы. > Справочник по алгоритмам (~40 разделов). Базовые понятия ML, метрики и практика — в статье Машинное обучение. Старт ML на Python — Kaggle Learn, маршрут по разделу, Titanic и Melbourne Housing без тяжёлой математики. Transfer learning, fine-tuning, multitask и federated learning — чем отличаются подходы, куда идут градиенты и когда что выбирать. Семь базовых техник преобразования категорий (цвет, размер, тип) в числа для моделей ML — one-hot, dummy, effect, label, ordinal, count и binary encoding. Четыре категории ML — supervised, unsupervised, semi-supervised и reinforcement; Q-обучение; три «отделения» инструментария — данные, инфраструктура, алгоритмы. Train, validation и test — пропорции 70/30, shuffle, stratify, k-fold, утечка данных и когда нужна validation-выборка. End-to-end pipeline — Melbourne Housing, очистка в pandas, GradientBoostingRegressor, MAE и GridSearchCV. Как строится дерево — энтропия, information gain, переобучение, бэггинг, random forest и градиентный бустинг для новичков. Итоги раздела Машинное обучение — вопросы для самопроверки в энциклопедии Вселенная IT.Машинное обучение
Алгоритмы ИИ
Как начать с машинного обучения на Python без глубоких знаний математики
Обучение на базе готовой модели
Кодирование категориальных признаков
Категории обучения и стек инструментов
Разбиение данных и кросс-валидация
Сквозной проект — цены на жильё в Мельбурне
Деревья решений с нуля
Чек-лист самопроверки