Нужен ли нам набор тестов при использовании перекрестной проверки в k-кратном порядке?

21

Я читал о проверке K-Fold, и я хочу убедиться, что я понимаю, как это работает.

Я знаю, что для метода удержания данные делятся на три набора, и набор тестов используется только в самом конце для оценки производительности модели, в то время как набор проверки используется для настройки гиперпараметров и т. Д.

В методе k-сгибаем ли мы до сих пор сохраняем тестовый набор для самого конца и используем только оставшиеся данные для обучения и настройки гиперпараметра, т.е. мы разбиваем оставшиеся данные на k сгибов, а затем используем среднюю точность после обучения с каждым сгибом (или какой-либо метрикой производительности, которую мы выбираем для настройки наших гиперпараметров)? Или мы вообще не используем отдельный набор тестов, а просто разбиваем весь набор данных на k сгибов (если это так, я предполагаю, что мы просто считаем среднюю точность по k сгибам нашей конечной точностью)?

b_pcakes
источник
3
Это зависит от того, что вы хотите сделать. Если вам нужна обобщенная оценка производительности, то да, модель должна проводить тестирование на данных, которые она никогда не видела раньше. Но это не значит, что это должна быть одиночная итерация, вы можете использовать повторную выборку для достижения той же цели.
Firebug
2
... это означает, что всякий раз, когда вы используете результаты «проверки» для оптимизации гиперпараметров / настройки модели, вам необходим еще один этап проверки, который не зависит от этой настройки. Для обоих этапов вы можете использовать, например, перекрестную проверку или задержку (или вне начальной загрузки или ...). CV + CV называется вложенным CV, удержание + удержание приводит к настройке из трех наборов, которую вы упомянули
cbeleites поддерживает Monica

Ответы:

9

В методе K-Fold, мы все еще сохраняем тестовый набор для самого конца и используем только оставшиеся данные для обучения и настройки гиперпараметра (т.е. мы разбиваем оставшиеся данные на k сгибов, а затем используем среднюю точность после тренироваться с каждым фолдом (или любым другим показателем производительности, который мы выбираем) для настройки наших гиперпараметров)?

Да. Как правило, набор тестов никогда не должен использоваться для изменения вашей модели (например, ее гиперпараметров).

Тем не менее, перекрестная проверка может иногда использоваться для целей, отличных от настройки гиперпараметра, например, для определения того, в какой степени разделение поезда / теста влияет на результаты.

Франк Дернонкур
источник
6
+1, но вы можете упомянуть вложенную перекрестную проверку как альтернативу перекрестной проверке + тестовый набор.
амеба говорит восстановить монику
1
msgstr "иногда может использоваться для других целей, кроме настройки гиперпараметра". Например, вы можете использовать перекрестную проверку для целей проверки (= проверка неизвестных случаев для измерения ошибки обобщения).
cbeleites поддерживает Монику
3

Вообще-то да. В основном, мы говорим о компромиссе смещения. Если вы используете данные для построения своей модели (данные обучения и проверки), итерируете по разным гиперпараметрам и пытаетесь максимизировать усредненную метрику производительности, ваша модель может быть не такой хорошей, как указано.

Однако, особенно в небольших наборах данных, дополнительное разделение может привести к еще меньшему обучающему набору и привести к плохой модели.

coomish
источник
2
Это не настоящий ответ на вопрос.
Майкл Р. Черник
Вы можете расширить это так, чтобы это добавило что-то к принятому ответу и довольно подробным комментариям?
mdewey
1

В идеале, валидация (для выбора модели) и финальный тест не должны смешиваться. Однако, если ваше значение k высокое или оно не учитывается, использование результатов теста для выбора модели менее опасно. В этом сценарии, если вы пишете академическую статью, не делайте этого (если вы не удосужились объяснить) - это означает, что у вас всегда есть отдельный набор тестов. Если вы строите практический проект, это нормально.

ymeng
источник