Рассмотрим нейронную сеть:
Для данного набора данных мы делим его на наборы для обучения, проверки и тестирования. Предположим, что мы делаем это в классическом соотношении 60:20:20, тогда мы предотвращаем переобучение, проверяя сеть, проверяя ее на наборе проверки. Тогда зачем тестировать его на тестовом наборе, чтобы проверить его работоспособность?
Не будет ли ошибка в тестовом наборе чем-то похожа на набор валидации, так как для сети это невидимые данные, точно так же как и набор валидации, и оба они имеют одинаковое количество?
Вместо этого мы можем увеличить тренировочный набор, объединив с ним набор тестов, чтобы у нас было больше обучающих данных и сеть обучалась лучше, а затем использовать набор проверки для предотвращения переобучения? Почему бы нам не сделать это?
источник
Ответы:
Предположим, вы обучаете модель, производительность которой зависит от набора гиперпараметров. В случае нейронной сети этими параметрами могут быть, например, скорость обучения или количество итераций обучения.
Имея выбор значений гиперпараметра, вы используете обучающий набор для обучения модели. Но как установить значения для гиперпараметров? Вот для чего предназначен набор валидации . Вы можете использовать его для оценки производительности вашей модели для различных комбинаций значений гиперпараметров (например, с помощью процесса поиска по сетке) и для сохранения наилучшей обученной модели.
Но как ваша выбранная модель отличается от других моделей? Ваша нейронная сеть работает лучше, чем, скажем, случайный лес, обученный с той же комбинацией данных обучения / теста? Вы не можете сравнивать на основе набора проверки, потому что этот набор проверки был частью подгонки вашей модели. Вы использовали его для выбора значений гиперпараметра!
Набор тестов позволяет сравнивать различные модели беспристрастным образом, основывая свои сравнения на данных, которые не использовались ни в какой части вашего процесса обучения / выбора гиперпараметра.
источник
Тестовый набор и набор перекрестной проверки имеют разные цели. Если вы откажетесь от одного из них, вы потеряете его преимущества:
Набор перекрестной проверки используется, чтобы помочь выявить чрезмерную подгонку и помочь в поиске гиперпараметров.
Тестовый набор используется для измерения производительности модели.
Вы не можете использовать набор перекрестной проверки для точного измерения производительности вашей модели, потому что вы намеренно настроите свои результаты, чтобы получить наилучший возможный показатель, возможно, по сотням вариаций ваших параметров. Поэтому результат перекрестной проверки, вероятно, будет слишком оптимистичным.
По той же причине вы не можете отбросить набор перекрестной проверки и использовать набор тестов для выбора гиперпараметров, потому что тогда вы в значительной степени гарантированно будете переоценивать, насколько хороша ваша модель. В идеальном мире вы используете набор тестов только один раз или используете его «нейтрально» для сравнения различных экспериментов.
Если вы пройдете перекрестную проверку, найдете лучшую модель, а затем добавите в тестовые данные для обучения, возможно (а в некоторых ситуациях, возможно, вполне вероятно) ваша модель будет улучшена. Однако у вас нет возможности быть уверенным, действительно ли это произошло, и даже если это произойдет, у вас нет объективной оценки того, что представляет собой новая производительность.
Из многих соревнований Kaggle я узнал, что настройка на тестовый набор путем чрезмерного использования - это реальная вещь, и это сильно влияет на эти соревнования. Часто есть группа конкурентов, которые поднялись на публичную таблицу лидеров и выбрали свою лучшую модель в тесте (публичная таблица лидеров - это, по сути, набор тестов), хотя и не настолько тщательна в перекрестной проверке. , , эти конкуренты выпадают из списка лидеров, когда в конце вводится новый набор тестов.
Один из подходов, который является разумным, состоит в том, чтобы повторно использовать данные (train + cv) для повторного обучения, используя найденные вами гиперпарамы, перед тестированием. Таким образом, вы тренируетесь на большем количестве данных, и в конце вы все равно получаете независимую оценку производительности.
Если вы хотите получить больше от перекрестной проверки, обычным подходом является перекрестная проверка в k-кратном размере . Обычная хитрость в соревнованиях Kaggle - использовать перекрестную проверку в k-кратном порядке и вместо повторного объединения данных в больший (обучающий + cv) обучающий набор для объединения или объединения результатов cv в метамодель.
Наконец, всегда проверяйте, что ваши расщепления для проверки и проверки являются устойчивыми к возможной корреляции в вашем наборе данных.
источник