Недообучение (Underfitting) — это проблема в машинном обучении, когда модель оказывается слишком простой, чтобы уловить основные закономерности и взаимосвязи в данных. В результате она плохо работает как на обучающей выборке, так и на новых данных.
Простая аналогия
Вернёмся к аналогии со студентом:
- Переобучение: Студент зазубрил учебник, но не понимает сути.
- Идеальная модель: Студент понял принципы и может решать любые задачи по теме.
- Недообучение: Студент даже не открыл учебник — у него недостаточно знаний, чтобы решить вообще какие-либо задачи по теме.
Суть проблемы
Недообученная модель обладает высоким смещением (high bias). Она делает чрезмерно упрощённые предположения о данных, игнорируя важные особенности и закономерности. Её предсказательная способность изначально ограничена.
Визуальный пример (на регрессии)
Представьте, что у нас есть данные, которые явно следуют криволинейной зависимости (например, параболе):
- Недообученная модель: Попытается аппроксимировать данные простой прямой линией. Она будет плохо описывать кривизну, и ошибка будет большой везде.
- Хорошо обученная модель: Использует полиномиальную кривую (например, параболу), которая хорошо соответствует истинной зависимости.
- Переобученная модель: Использует очень сложную кривую, проходящую через каждую точку с шумом.
На графике недообученная модель — это всегда чрезмерно сглаженная, примитивная линия, далёкая от реальных данных.
Причины недообучения
- Слишком простая модель:
- Использование линейной модели для данных со сложной нелинейной зависимостью.
- Дерево решений с глубиной 1 (пень) для сложной классификации.
- Нейронная сеть всего с одним-двумя нейронами.
- Недостаточное количество признаков (features). Модели не хватает информации для прогноза. Например, попытка предсказать стоимость дома только по его площади, игнорируя район, этаж, год постройки и т.д.
- Чрезмерная регуляризация. Регуляризация (штраф за сложность) введена с слишком большим коэффициентом, что “душит” модель, не позволяя ей выучить закономерности.
- Слишком малое время обучения (для итеративных алгоритмов, таких как градиентный спуск или обучение нейросетей). Модель просто не успела сойтись к хорошему решению.
- Неправильная предобработка данных. Например, наличие большого количества шума или выбросов, которые модель (из-за своей простоты) не может отделить от полезного сигнала.
Как диагностировать недообучение?
Ключевой признак: модель показывает низкую производительность и на обучающем, и на тестовом наборах данных.
- Кривые обучения (Learning Curves) — основной инструмент. Если кривые ошибок на обучении и валидации сходятся на высоком значении ошибки, это явный признак высокого смещения (недообучения).
- Метрики качества (Accuracy, F1, R², MSE) будут низкими на всех выборках.
Методы борьбы с недообучением
- Увеличить сложность модели:
- Для деревьев — увеличить максимальную глубину (
max_depth). - Для нейросетей — добавить слои и нейроны.
- Использовать более сложные алгоритмы (например, заменить линейную регрессию на полиномиальную или градиентный бустинг).
- Для деревьев — увеличить максимальную глубину (
- Добавить новые, полезные признаки (Feature Engineering):
- Создать новые признаки на основе существующих (например, “площадь на комнату”).
- Добавить полиномиальные или взаимодействующие признаки.
- Использовать более продвинутые методы извлечения признаков.
- Уменьшить регуляризацию.
Снизить коэффициент регуляризации (например,
alpha,lambda,C), чтобы ослабить штраф за сложность и дать модели больше свободы. - Увеличить время/количество итераций обучения.
- Убрать “шумовые” признаки (в некоторых случаях). Парадоксально, но иногда удаление нерелевантных признаков помогает модели сосредоточиться на главном и улучшить обобщение, что может помочь и при недообучении, вызванном “проклятием размерности”.
Итог: Баланс между Смещением и Разбросом (Bias-Variance Tradeoff)
Недообучение и Переобучение — две стороны одной медали, описываемой фундаментальной дилеммой машинного обучения — компромиссом между смещением и разбросом (Bias-Variance Tradeoff).
- Высокое смещение (Недообучение): Модель слишком проста, делает сильные предположения, недостаточно гибкая. Ошибка вызвана неправильными предположениями самой модели.
- Высокий разброс (Переобучение): Модель слишком сложна, чрезмерно чувствительна к шуму в обучающих данных, слишком гибкая. Ошибка вызвана большой чувствительностью к небольшим колебаниям в данных.
Задача любого практика — найти оптимальную точку, где модель имеет достаточно низкое и смещение, и разброс, демонстрируя высокую точность на новых данных.