Вложенная перекрестная проверка для выбора модели

92

Как можно использовать вложенную перекрестную проверку для выбора модели ?

Из того, что я читаю онлайн, вложенное резюме работает следующим образом:

  • Существует внутренний цикл CV, где мы можем проводить поиск по сетке (например, запустив K-fold для каждой доступной модели, например, комбинацию гиперпараметров / функций)
  • Существует внешняя петля CV, где мы измеряем производительность модели, которая выиграла во внутреннем сгибе, по отдельному внешнему сгибу.

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

Как выбрать модель из этого вывода? Мне кажется, что выбор лучшей модели из этих выигрышных моделей не был бы честным сравнением, поскольку каждая модель была обучена и протестирована на разных частях набора данных.K

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

Также я прочитал темы, обсуждающие, как выбор вложенной модели полезен для анализа процедуры обучения. Какие виды анализа / проверок я могу сделать с оценками, которые я получаю из внешних K-сгибов?

Амелио Васкес-Рейна
источник

Ответы:

77

Как выбрать модель из этого вывода [внешней перекрестной проверки]?

Краткий ответ: нет.

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

  • на внешние модели суррогатных эквивалентны «реальной» модели , построенной со всеми данными.kmodel.fitting.procedure
  • Или, в случае 1. отказа (пессимистическое смещение проверки повторной выборки), по крайней мере, внешних суррогатных моделей эквивалентны друг другу. Это позволяет объединять (усреднять) результаты теста. Это также означает, что вам не нужно выбирать среди них, так как вы предполагаете, что они в основном одинаковы. Нарушение этого второго, более слабого предположения - нестабильность модели.k

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

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

Внутреннее резюме делает выбор.

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

Вы правы в том, что не стоит выбирать одну из суррогатных моделей. Но вы не правы по поводу причины. Реальная причина: см. Выше. То, что они не обучены и не проверены на одних и тех же данных, здесь не «обидно».k

  • Отсутствие тех же данных тестирования: поскольку впоследствии вы хотите утверждать, что результаты теста обобщаются на данные, которые никогда не видели, это не может иметь значения.
  • Не имея те же данные обучения:
    • если модели стабильны, это не имеет значения: «Стабильность» здесь означает, что модель не изменяется (сильно), если данные обучения «возмущены», заменяя несколько случаев другими случаями.
    • если модели нестабильны, важны три соображения:
      1. вы можете измерить, в какой степени это имеет место, с помощью повторной / повторной кратной перекрестной проверки. Это позволяет сравнивать результаты перекрестной проверки для одного и того же случая, который был предсказан различными моделями, построенными на слегка отличающихся данных обучения.k
      2. Если модели не являются стабильными, дисперсия, наблюдаемая по результатам теста перекрестной проверки в кратном размере, увеличивается: вы не только получаете дисперсию из-за того, что всего конечное количество случаев тестируется в целом, но и имеют дополнительную дисперсию из-за нестабильности моделей (отклонения в прогнозирующих способностях).k
      3. Если нестабильность является реальной проблемой, вы не можете хорошо экстраполировать на производительность для «реальной» модели.

Что подводит меня к вашему последнему вопросу:

Какие виды анализа / проверок я могу сделать с оценками, которые я получаю из внешних K-сгибов?

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

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


Вопрос update @ user99889: что делать, если внешнее резюме обнаруживает нестабильность?

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

В комментарии, отвечающем на @davips, я думал о том, чтобы решить проблему нестабильности во внутреннем резюме - то есть как часть процесса оптимизации модели.

Но вы, безусловно, правы: если мы изменим нашу модель, основываясь на результатах внешнего резюме, потребуется еще один раунд независимого тестирования измененной модели.
Однако нестабильность во внешнем резюме также будет признаком того, что оптимизация не была настроена должным образом - поэтому обнаружение нестабильности во внешнем резюме подразумевает, что внутреннее резюме не наказывало нестабильность необходимым способом - это было бы моей главной целью Критика в такой ситуации. Другими словами, почему оптимизация позволяет / приводит к сильному набору моделей?

Тем не менее, здесь есть одна особенность, что IMHO может оправдать дальнейшее изменение «окончательной» модели после тщательного рассмотрения точных обстоятельств : поскольку мы действительно обнаружили переоснащение, любое предлагаемое изменение (меньшее df / больше ограничительного или агрегирующего) в модель быть в направлении меньшего переоснащения (или, по крайней мере, гиперпараметров, которые менее склонны к переоснащению). Смысл независимого тестирования заключается в обнаружении переоснащения - недостаточное подкрепление может быть обнаружено по данным, которые уже использовались в процессе обучения.

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

Кроме того, агрегация, включающая в себя аналоговую CV-оценку производительности и готовую оценку , будет возможна на основе уже имеющихся результатов, что является другим типом «постобработки» модели, которую я хотел бы рассмотреть здесь как доброкачественную. Опять же, тогда было бы лучше, если бы исследование было разработано с самого начала, чтобы проверить, что агрегация не дает преимущества перед отдельными предрассудками (что является еще одним способом сказать, что отдельные модели стабильны).


Обновление (2019): чем больше я думаю об этих ситуациях, тем больше я предпочитаю подход «вложенная перекрестная проверка, очевидно, без вложенности» .

cbeleites
источник
В отношении выбора модели, если классификатор нестабилен, следует ли выбрать ту, которая имеет срединную производительность, среди лучших? Этот выбор будет аналогичен вашему предложению сравнить внутреннюю производительность с внешней.
Вийпс
2
@davips: если модели нестабильны, оптимизация не будет работать (нестабильность вызывает дополнительную дисперсию). Однако выбор одной модели со средней (или средней) производительностью не поможет. Вместо этого, если модели нестабильны, я бы рекомендовал либо перейти на более ограничительные модели (например, более строгую регуляризацию), либо создать ансамбль моделей (который существенно отличается от выбора одной модели).
cbeleites
1
@ user99889: пожалуйста, смотрите обновленный ответ.
cbeleites
1
@ user99889: да - но не ожидай там чудес. Если стабильность является проблемой при обучении в 80% случаев (k = 5), это, вероятно, будет проблемой при k = 10, т.е. 90% от n = дополнительные 12,5% по сравнению с суррогатными моделями 80% / k = 5.
cbeleites
1
@cbeleites: связанный гипотетический. Предположим, я решил поискать пространство параметров c: [1,2,3]. Я выполняю вложенное резюме на всем моем наборе данных и считаю, что производительность не так велика. Поэтому я расширяю свое пространство поиска до c: [0.5,1,1.5,2,2.5,3,3.5,4]. Я сделал что-то очень плохое? Кажется, что я существенно изменил свое пространство параметров (которое является частью процесса моделирования) на основе знаний, полученных из тестовых данных, и, следовательно, нужно оценивать набор данных, внешний по отношению к моему текущему набору данных? Рад сделать это отдельным вопросом, если вы считаете, что это лучше.
user0
27

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

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

Дикран Сумчатый
источник
1
Зачем тебе это get an idea of the performance?
Вийпс
1
@davips Как правило, если статистический метод будет использоваться для каких-то практических целей, то пользователи часто хотят иметь представление о том, насколько хорошо он работает (например, медицинский скрининг-тест). Также, если вы разрабатываете алгоритм машинного обучения, полезно иметь объективную оценку того, насколько хорошо он работает по сравнению с конкурирующими методами. Это также полезный способ проверки того, действительно ли работает метод (который становится недействительным, если перекрестная проверка используется как для выбора параметров, так и для оценки производительности).
Дикран Marsupial
5
Таким образом, чтобы на самом деле решить, какой параметр использовать в окончательной модели, вы бы сделали внутренний цикл один раз? Таким образом, если бы внутренний цикл имел 10-кратную валидацию, вы бы протянули 1/10 последовательности данных, которую каждая модель повторила бы это 10 раз, а затем выбрали бы значение параметра с наименьшей средней ошибкой? Затем переучить модель с этим значением параметра на весь набор данных?
emschorsch
2
Да это верно. r
Дикран Сумчатый
1
@FedericoTedeschi Для получения объективной оценки производительности перекрестная проверка должна быть вложенной, а не просто другим разделением (см. Раздел 5.3 моей статьи jmlr.csail.mit.edu/papers/volume11/cawley10a/cawley10a.pdf ). , Как правило, я использую LOOCV только для выбора моделей для моделей, где он может быть эффективно рассчитан, и использовал бы начальную загрузку / упаковку для небольших наборов данных моделей (с ошибкой OOB, заменяющей внешнюю перекрестную проверку).
Дикран Marsupial
7

Я не думаю, что кто-то действительно ответил на первый вопрос. Под «вложенной перекрестной проверкой» я думаю, что он имел в виду объединить ее с GridSearch. Обычно GridSearch имеет встроенное резюме и принимает параметр, сколько сгибов мы хотим протестировать. Комбинируя эти два, я думаю, что это хорошая практика, но модель из GridSearch и CrossValidation не является вашей окончательной моделью. Вы должны выбрать лучшие параметры и в конечном итоге обучить новую модель всем вашим данным или даже провести CrossValidation здесь для невидимых данных, а затем, если модель действительно настолько хороша, вы обучаете ее всем своим данным. Это ваша последняя модель.

anselal
источник
3
чтобы уточнить, в python scikit-learn GridSearchCV(refit=True)действительно обновляется модель на ПОЛНЫХ данных, используя лучшие параметры, так что дополнительный шаг не требуется. См. Документы
Пол
Вы правы по поводу варианта ремонта. Я просто констатировал очевидность !!
anselal
«модель из GridSearch - не ваша окончательная модель». Но я хочу сказать, что модель поиска по сетке с refit = True является последней моделью. Ты имеешь в виду, что мы с тобой на одной странице? Но тогда я все еще не вижу, где происходит вложение в поиске по сетке с CV. Мне кажется, что это один слой CV (например, 5-кратное CV в поиске по сетке - это один слой CV).
Пол
Мы находимся на той же странице о ремонте. Но с вложенным CV мы подразумеваем, что вы создаете еще один цикл CV вне вашего GridSearch, оставляя некоторые данные вне обучения и тестируя вашу модель финального финала, чтобы посмотреть, обобщает ли она (делает хорошие прогнозы по неизвестным данным)
ансель