Перекрестная проверка и оптимизация параметров


14

У меня есть вопрос об оптимизации параметров, когда я использую 10-кратную перекрестную проверку.

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

или же

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

Какой метод является правильным для перекрестной проверки? Большое спасибо.


На этот вопрос: stats.stackexchange.com/questions/1826/… есть два отличных ответа (самый высокий балл), я думаю, они могут помочь вам в вашем вопросе. Второе именно то, что вы хотите. OBS .: Я хотел бы написать это как комментарий, но я не могу этого сделать, поэтому я ответил на него.
Августо

Ответы:


11

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

Более конкретно: мы осуществляем глобальный поиск в пространстве параметров обучения, но в каждом из них мы фиксируем параметры обучения и изучаем параметры модели. Результатом должны быть параметры обучения, которые в среднем дают лучшую производительность во всех сгибах. Затем мы можем использовать их для обучения модели всего набора данных.


Извините, вопрос, который я поставил под сомнение, это гиперпараметры, как вы сказали.
Кевин

Такие как параметры c и g в libSVM. Итак, я должен использовать те же c и g для обучения модели каждого фолда, что и (2) метод, который я упомянул выше, а затем выбрать лучший? Большое спасибо.
Кевин

2
(1) и (2) выше не были понятны для меня, поэтому я не ссылался на них явно. Вы должны искать пространство c & g, которое максимизирует вашу метрику задачи при усреднении по сгибам. Таким образом, вы устанавливаете значение c & g, запускаете процедуру обучения и тестирования для всех сгибов, усредняете их, сохраняете этот показатель, изменяете c или g и повторяете. В конечном счете, вы найдете лучший метод анализа и сможете обучить окончательную модель на всех ваших данных.
Джоэл

Большое спасибо. Я пытаюсь обобщить ответы. Данные были разделены на 10 раз: сложение-1: (поезд1, тест1) ... сложение-10: (поезд10, тест10) Затем используйте (c1, g1) для обучения и тестирования на сложение-1 для сложения-10, средняя точность всего сгиба. Попробуйте другой (c2, g2) сделать тот же процесс ... повторяйте, пока я не найду лучшее (c, g). И лучшая (c, g) средняя точность будет результатом моей 10-кратной перекрестной проверки.
Кевин

1
Звучит правильно ...
Джоэл

16

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

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

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

  1. Построить лучшую модель, которую вы можете
  2. Получите точное представление о том, насколько хорошо он работает

Теперь, чтобы выполнить задачу 1 в зависимости от вашего алгоритма, вам может понадобиться настроить некоторые гиперпараметры, и это действительно часто делается путем перекрестной проверки. Но это еще не поможет вам в достижении цели 2. Для этого вам нужно в основном внедрить перекрестную проверку, например:

  • Разделите все данные на n сгибов
  • Для каждого снова сложите отдельные тренировочные данные в подпорки
  • Используйте перекрестную проверку на подгибах, чтобы узнать хорошие гиперпараметры
  • С помощью этих гиперпараметров строят модель на тренировочных данных этого сгиба
  • Протестируйте модель на тестовых данных
  • Повторите на следующий раз

Чтобы построить хорошую модель, вам просто нужна внутренняя перекрестная проверка. Вам все равно нужно будет сделать это, чтобы получить хорошую модель. Но чтобы получить точную оценку производительности вашей модели, вам необходимо выполнить весь процесс построения модели внутри схемы перекрестной проверки. Это также включает в себя такие шаги, как вменение и т. Д.


1
Эрик, не могли бы вы дать ссылку, как сделать этот процесс?
Чао

Привет @ Эрик, так будет общий порядок анализа: (1) Найти оптимальные параметры настройки с перекрестной проверкой, (2) Модель Retrain (с полученными параметрами настройки) во всем наборе обучающих данных, чтобы получить параметры модели, и (3 ) Посмотреть общую оценку производительности этого метода с помощью вложенной перекрестной проверки? Что меня смущает, так это то, что в процессе простого CV могут быть выбраны разные гиперпараметры, поэтому вложенные CV не будут конкретно исследовать общую производительность параметров гиперпараметра / модели, которые мы получили выше?
Мишель

1
Я немного опоздал к разговору, но я хотел бы отметить, что этот метод также называется «вложенным» или «двойной перекрестной проверкой», и вот хорошее объяснение Тома Фирна и пример с кодом в scikit: изучите документацию
MD004
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.