Порядок между использованием проверочных, обучающих и тестовых наборов - PullRequest
0 голосов
/ 10 января 2019

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

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

В этой статье Википедии , кажется, подразумевается, что последовательность должна быть:

  1. Разделение данных на обучающий набор, проверочный набор и тестовый набор
  2. Используйте обучающий набор, чтобы соответствовать модели (найдите лучшие параметры: коэффициенты многочлена).
  3. Впоследствии , используйте набор проверки, чтобы найти лучшие гиперпараметры (в данном случае, степень полинома) (статья в Википедии гласит: «Последовательно, подобранная модель используется для прогнозирования ответов на наблюдения во втором наборе данных, называемом набором проверочных данных ")
  4. Наконец, используйте набор тестов для оценки модели, снабженной тренировочным набором.

Однако мне это кажется странным: как вы можете подогнать свою модель к тренировочному набору, если вы еще не выбрали свои гиперпараметры (в данном случае степень полинома)?

Я вижу три альтернативных подхода, я не уверен, что они будут правильными.

Первый подход

  1. Разделение данных на обучающий набор, проверочный набор и тестовый набор
  2. Для каждой полиномиальной степени оснастите модель обучающим набором и поставьте ей оценку, используя проверочный набор.
  3. Для получения степени полинома с наилучшей оценкой установите модель с тренировочным набором.
  4. Оценка с помощью набора тестов

Второй подход

  1. Разделение данных на обучающий набор, проверочный набор и тестовый набор
  2. Для каждой полиномиальной степени используйте перекрестную проверку только на наборе проверки , чтобы соответствовать и оценить модель
  3. Для получения степени полинома с наилучшей оценкой установите модель с тренировочным набором.
  4. Оценка с помощью набора тестов

Третий подход

  1. Разделить данные на только два набора : набор обучения / проверки и набор тестов
  2. Для каждой полиномиальной степени используйте перекрестную проверку только в наборе обучения / проверки , чтобы соответствовать и оценивать модель
  3. Для получения степени полинома с наилучшей оценкой установите модель с набором обучения / проверки.
  4. Оценка с помощью набора тестов

Так что вопрос:

  • Статья в википедии неправильная или я что-то упустил?
  • Верны ли три подхода, которые я намечаю? Какой из них будет предпочтительнее? Будет ли другой подход лучше, чем эти три?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Статья в Википедии не ошибается; По моему опыту, это часто вызывает путаницу среди новичков в ML.

Существует два разных подхода к проблеме:

  • Либо Вы используете явную проверку , установленную для поиска и настройки гиперпараметра
  • Или используется перекрестная проверка

Итак, стандартным моментом является то, что вы всегда откладываете часть своих данных в качестве test set; это используется не по какой-либо другой причине, кроме оценки производительности вашей модели в конце (т. е. не вперед-назад и не многократных оценок, потому что в этом случае вы используете свой набор тестов в качестве набора проверки, что является плохой практикой).

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

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

На вопросы о том, какой подход «лучше», конечно, нельзя ответить на этом уровне общности; оба подхода действительно действительны и используются в зависимости от обстоятельств. Говоря очень грубо, я бы сказал, что в большинстве «традиционных» (то есть, не глубокого обучения) настроек ML большинство людей предпочитают использовать перекрестную проверку; но есть случаи, когда это нецелесообразно (самые глубокие настройки обучения, опять же, в общих чертах), и вместо этого люди используют отдельный набор проверки.

0 голосов
/ 10 января 2019

То, что означает Википедия, на самом деле ваш первый подход.

1 Разделить данные на тренировочный набор, набор проверки и набор тестов

2 Используйте Тренировочный набор под модель (найди лучшие параметры: коэффициенты полинома).

Это просто означает, что вы используете свои тренировочные данные, чтобы соответствовать модели.

3 После этого используйте набор проверки, чтобы найти лучшие гиперпараметры (в данном случае степень полинома) (статья в википедии гласит: «Последовательно, подобранная модель используется для прогнозирования ответов на наблюдения во втором наборе данных, называемом набором проверочных данных ")

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

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

Наконец, используйте набор тестов для оценки модели, оснащенной тренировкой. установлен.

Зачем вам нужен набор валидации, довольно хорошо объясненный в этом вопросе https://datascience.stackexchange.com/questions/18339/why-use-both-validation-set-and-test-set


В конце концов, вы можете использовать любой из трех своих подходов.

  1. подход:

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

  2. подход:

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

    Вам также нужно много данных, потому что вы делите свои данные три раза, и эта первая часть снова в k раз.

    Но здесь у вас наименьшая разница в ваших результатах. Довольно маловероятно получить k хороших классификаторов и хороший результат проверки по совпадению. Это может произойти с большей вероятностью при первом подходе. Кросс-валидация также вряд ли пригодится.

  3. подход:

    находится в его плюсах и минусах между двумя другими. Здесь у вас также меньше вероятность переоснащения.

В конечном итоге это будет зависеть от того, сколько данных у вас есть, и если вы попадете в более сложные модели, такие как нейронные сети, сколько времени / вычислительной мощности у вас есть и вы готовы потратить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...