В предыдущем посте мы говорили о разделении набора данных на тренировочный и тестовый набор. Разделение позволяет тренировать модель на одном наборе данных, а затем проверять ее на другом. С двумя поднаборами рабочий процесс выглядит так:
На графике "Tweak model" означает изменение чего-либо в модели - от изменения скорости обучения, до добавления либо удаления свойств, чтобы полностью создать модель с нуля. В конце рабочего процесса мы получаем модель, которая отлично выполняет работу на тестовом наборе.
Разделение набора на две части хорошая идея, но не панацея от всех проблем. Можно значительно уменьшить шанс переобучения, разделяя набор данных на три части, как показано на следующем графике:
Разделение набора данных на три части
Валидационный набор используется для проверки результатов после тренировки модели. Затем делаем вторую проверку, применяя модель к тестовому набору, после того как она прошла проверку на валидационном наборе. Следующий график показывает такой рабочий процесс:
В этом улучшенном рабочем процессе:
- берем модель, которая успешно справляется на валидационном наборе
- затем проводим вторую проверку на тестовом наборе
Этот рабочий процесс дает лучшие результаты, поскольку меньше взаимодействует с тестовым набором, поэтому проверка на нем становится более достоверной.
Резюме
Тестовый и валидационный набор "изнашиваются" при повторном использовании. Поэтому, чем больше те же самые данные используются в ходе прогнозирования для настройки гиперпараметров и других улучшений модели, тем меньше гарантий того, что такая модель будет будет хорошо генерализоваться на новых данных. Необходимо отметить, что обычно валидационные наборы медленнее "изнашиваются", чем тестовые.
Если возможно, то лучше приготовить больше данных, чтобы обновлять тестовый и валидационный набор в ходе разработки модели.