Переобучение и недообучение
После обучения модель должна работать не только с теми объектами, которые уже видела, но и с новыми данными.
Если модель слишком простая, она не улавливает важные закономерности. Если модель слишком сложная, она может начать запоминать случайные особенности обучающей выборки. Эти две ситуации называются недообучением и переобучением.
Задача состоит не в том, чтобы сделать модель максимально сложной, а в том, чтобы выбрать такую модель, которая хорошо работает на новых данных.
Недообучение
Заголовок раздела «Недообучение»Недообучение возникает, когда модель слишком простая для задачи и не смогла уловить важные зависимости в данных.
Например, дерево решений с глубиной maxDepth := 1 может задать только один вопрос. Для сложной задачи этого часто недостаточно.
Обычно при недообучении качество низкое и на данных, по которым модель обучалась, и на новых данных. Это означает, что модель плохо поняла саму закономерность.
Переобучение
Заголовок раздела «Переобучение»Переобучение возникает, когда модель слишком подробно подстроилась под обучающие данные и начала учитывать случайные детали, которые не помогают решать задачу на новых объектах.
Так часто бывает с очень глубоким деревом решений: оно может построить много условий и фактически запомнить отдельные объекты из обучающей выборки.
При переобучении качество на обучающих данных может быть очень высоким, но на новых данных заметно ниже. Это означает, что модель хорошо работает с уже знакомыми примерами, но хуже переносит найденные правила на новые данные.
Сложность модели
Заголовок раздела «Сложность модели»Сложность модели показывает, насколько подробно модель может описывать зависимости в данных. Например, сложность дерева решений зависит от его глубины: чем глубже дерево, тем больше условий оно может построить.
Слишком простая модель недообучается. Слишком сложная модель может переобучиться.
При увеличении сложности качество на обучающих данных обычно растёт. Качество на новых данных сначала тоже может расти, но после некоторого момента начинает снижаться. Поэтому важно подобрать подходящую сложность модели.
Эту ситуацию удобно представить как две кривые: качество на обучающих данных и качество на валидационных данных. Такие графики называются валидационными кривыми. Подробнее они разобраны в разделе Валидационные кривые.
На рисунке синяя кривая показывает качество на обучающих данных. При росте сложности модели она обычно растёт: сложной модели легче подстроиться под известные примеры.
Оранжевая кривая показывает качество на валидационных данных, то есть на данных, которые не использовались для обучения. Сначала она тоже растёт: модель становится достаточно сложной, чтобы уловить закономерность. Затем она начинает снижаться: модель слишком сильно подстраивается под обучающие данные и хуже работает на новых объектах.
Лучшее значение сложности находится около максимума валидационной кривой. Слева от него модель недообучается, справа - переобучается.
Обучающие, валидационные и тестовые данные
Заголовок раздела «Обучающие, валидационные и тестовые данные»Чтобы отличить недообучение от переобучения, данные разделяют по назначению:
train— тренировочные данные, используются для обучения модели;validation— валидационные данные, используются для подбора гиперпараметров и выбора модели;test— тестовые данные, используются для окончательной оценки выбранной модели.
Во время подбора модели сравнивают значение выбранной метрики на train и validation. После выбора модели эту же метрику один раз вычисляют на test. Тестовые данные не используют для подбора гиперпараметров.
Если данных недостаточно для отдельной валидационной выборки, применяют кросс-валидацию к обучающим данным.
Подробно базовое разбиение данных разобрано в разделе Train/Test Split.
Как распознать
Заголовок раздела «Как распознать»Важно смотреть не только на разницу между train и validation, но и на сам уровень качества.
| Ситуация | Train | Validation | Что происходит |
|---|---|---|---|
| Недообучение | низко | низко | модель слишком простая |
| Подходящая модель | достаточно высоко | близко к train | модель обобщает закономерность |
| Переобучение | очень высоко | заметно ниже | модель слишком подстроилась под train |
Сложность модели и количество данных
Заголовок раздела «Сложность модели и количество данных»Сложность модели нужно рассматривать вместе с количеством обучающих данных. Чем больше в наборе разнообразных примеров, тем более сложную модель можно обучить без переобучения.
При этом важно не только количество строк. Простое копирование одних и тех же примеров или добавление очень похожих данных обычно не помогает. Новые данные должны содержать дополнительную информацию о решаемой задаче.
С увеличением количества данных модели становится труднее запомнить отдельные примеры, поэтому переобучение часто уменьшается.
Как подбирать модель
Заголовок раздела «Как подбирать модель»Раз недообучение и переобучение — это две крайности, обычно ищут промежуточный вариант: модель достаточно сложную, чтобы уловить закономерность, но не настолько сложную, чтобы запоминать случайные детали.
Для этого недостаточно один раз обучить модель. Нужно оценивать её на данных, которые не использовались при обучении, и сравнивать несколько вариантов.
Для этого используют:
- кросс-валидацию — чтобы устойчивее оценивать качество;
- валидационные кривые — чтобы выбирать гиперпараметры;
- кривые обучения — чтобы смотреть, как на качество влияет количество данных.
Главное
Заголовок раздела «Главное»Недообучение и переобучение показывают, что качество модели зависит не только от алгоритма, но и от выбранной сложности, объёма данных и способа проверки.
Дальше для этого понадобятся кросс-валидация, валидационные кривые и кривые обучения.