Как выбрать прогностическую модель после k-кратной перекрестной проверки?


149

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

Это может быть неловко сформулировано, поэтому позвольте мне объяснить более подробно: всякий раз, когда я запускаю кросс-проверку K-кратных данных, я использую K подмножеств данных обучения и в конечном итоге получаю K различных моделей.

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

Можно ли выбрать одну из моделей K? Или существует какая-то передовая практика, например, выбор модели, которая достигает медианной ошибки теста?


2
Вы можете найти ответы на следующие вопросы полезными: stats.stackexchange.com/questions/2306/…
BGreene

Вам нужно будет повторить 5-кратное CV 100 раз и усреднить результаты, чтобы получить достаточную точность. И ответ от @bogdanovist точный. Вы можете получить такую ​​же точность оценки точности из начальной загрузки с меньшим количеством подгонок модели.
Фрэнк Харрелл

@Frank Harrell, почему вы говорите, что нужно 100 повторений (я обычно использую 10 повторений в 10 раз), это практическое правило, так как ОП не дает никаких подробностей?
BGreene

2
Для 10-кратного резюме лучше всего делать повторений. Больше повторений будет необходимо с 5-кратным. Это эмпирические правила. Одно 10-кратное резюме даст нестабильный ответ, т. Е. Повторите 10 разделений, и вы получите достаточно другого ответа, чтобы волноваться. 50
Фрэнк Харрелл

Почти точная копия : stats.stackexchange.com/questions/11602 с множеством достойных ответов. Возможно, эти темы следует объединить, но я не уверен, в каком направлении. Оба приняли очень хорошие ответы. Но другой старше и имеет больше взглядов / голосов, так что может иметь смысл объединить это с этим.
амеба

Ответы:


201

Я думаю, что вы упускаете что-то еще в вашем понимании цели перекрестной проверки.

Давайте проясним некоторую терминологию, обычно, когда мы говорим «модель», мы ссылаемся на конкретный метод для описания того, как некоторые входные данные связаны с тем, что мы пытаемся предсказать. Обычно мы не называем отдельные экземпляры этого метода различными моделями. Таким образом, вы можете сказать «У меня есть модель линейной регрессии», но вы не назвали бы два разных набора обученных коэффициентов разными моделями. По крайней мере, не в контексте выбора модели.

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

Мы хотим использовать все данные. Таким образом, чтобы продолжить приведенный выше пример разделения 80/20, мы бы провели 5-кратную перекрестную проверку, обучив модель 5 раз на 80% данных и протестировав на 20%. Мы гарантируем, что каждая точка данных попадает в тестовый набор 20% ровно один раз. Поэтому мы использовали каждую точку данных, которая нам нужна, чтобы понять, насколько хорошо наша модель выполняет задачу обучения на основе некоторых данных и прогнозирования некоторых новых данных.

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

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

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


8
Я полностью согласен с этим и думал об использовании всех данных. Тем не менее, если мы обучим нашу окончательную модель, используя весь набор данных, не приведет ли это к переоснащению и, таким образом, к саботажу будущих прогнозов?
Берк У.

19
Нет! Переоснащение связано со сложностью модели, оно не имеет никакого отношения к количеству данных, используемых для обучения модели. Сложность модели связана с методом, который использует модель, а не со значениями, которые принимают ее параметры. Например, следует ли включать x ^ 2 коэффициентов, а также x коэффициентов в регрессионную модель.
Богдановец

17
@ Богдановист: Я скорее говорю, что переоснащение связано с тем, что слишком мало тренировочных случаев для слишком сложной модели. Так что это (также) связано с количеством учебных случаев. Но наличие большего количества обучающих примеров снизит риск переоснащения (для постоянной сложности модели).
cbeleites

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.- Означает ли это, что при выполнении поиска по сетке с перекрестной проверкой по K- образному критерию вы будете использовать лучшие параметры, найденные при поиске по сетке, и подгонять модель ко всем данным обучения, а затем оценивать эффективность обобщения с помощью набора тестов?
Арун

4
@arun, если вы использовали k-кратную перекрестную проверку и выбрали лучшую модель с лучшими параметрами и гиперпараметрами, то после подгонки окончательной модели к тренировочному набору вам не нужно снова проверять производительность, используя тестовый набор. Это потому, что вы уже проверили, как модель с указанными параметрами ведет себя на невидимых данных.
Сандип С. Сандху

29

Позвольте мне добавить несколько моментов в дополнение к ответу Богдановиста.

К

Теперь есть некоторые предположения в этом процессе.


  • К

  • К
    NК-1ККК

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

Различия в наблюдаемой производительности обусловлены этими двумя источниками дисперсии.

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

Возможно, вы захотите взглянуть на нашу статью, речь идет о классификации, где ситуация обычно хуже, чем при регрессии. Тем не менее, это показывает, как эти источники дисперсии и смещения складываются.
Beleites, C. и Neugebauer, U. и Bocklitz, T. и Krafft, C. и Popp, J .: Планирование размера выборки для классификационных моделей. Anal Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
принята рукопись на arXiv: 1211.1323


Вы и Богдановист не согласны, когда вы говорите, picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.и он говорит, But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.что это довольно часто, и очень важно, чтобы был определен стандартизированный подход
jpcgandre

Особенно для небольших наборов данных, где, возможно, пропуск данных из CV просто неосуществим, но риски переоснащения вашей модели также высоки! Ссылки необходимы для прояснения этого вопроса.
jpcgandre

5
@jpcgandre: Я не вижу разногласий. Богдановист объясняет, как на самом деле рассчитать модель выбора из гиперпараметров, которые были выбраны с помощью перекрестной проверки, и я добавил, что после такого выбора модель должна пройти другой (внешний) независимый уровень проверки. Другими словами, например, вложенный дизайн проверки: внутренний цикл проверки для выбора гиперпараметра, внешний цикл для проверки выбранных моделей (если у вас достаточно случаев, вы также можете выбрать независимый набор тестов).
cbeleites

5
Внутренняя / внешняя проверка настроена для перекрестной проверки, известной как двойная или вложенная перекрестная проверка, я также видел, что она называется перекрестной проверкой модели ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). При независимом наборе тестов это соответствует разделению на три набора: поезд / (оптимизация) проверка / тест (= окончательная проверка). Если у вас так мало случаев, когда вы не можете опустить данные для резюме второго уровня, я бы сказал, что вам следует исправить свои гиперпараметры другими способами, а не пытаться оптимизировать, выбрав один из наборов гиперпараметров.
cbeleites

@cbeleites У меня есть вопрос. Затем, чтобы получить окончательные параметры модели, вы бы взяли среднее значение гиперпараметров из каждого внешнего сгиба и переподготовили весь набор данных, используя этот усредненный гиперпараметр? Или же поиск гиперпараметра в обычном резюме, а затем подтверждение стабильности этого метода с помощью повторного вложенного резюме также сработает?
Мишель

11

Я нашел эту прекрасную статью « Как обучить окончательной модели машинного обучения» очень полезной для прояснения всех моих заблуждений относительно использования CV в машинном обучении.

По сути, мы используем CV (например, 80/20 split, k-fold и т. Д.), Чтобы оценить, насколько хорошо ваша целая процедура (включая обработку данных, выбор модели (т. Е. Алгоритм) и гиперпараметры и т. Д.) Будет выполняться в будущем невидимым. данные. И как только вы выбрали выигрышную «процедуру», подходящие модели из CV выполнили свою задачу и теперь могут быть выброшены. Затем вы используете ту же самую выигрышную «процедуру» и тренируете свою окончательную модель, используя весь набор данных.


1

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

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

Например, вы выбираете алгоритм LinearRegression и выполняете две операции с одним и тем же обучающим набором: одну с 10-кратной перекрестной проверкой, а другую с 20-кратной. модель регрессии (или классификатора) должна быть одинаковой, но коэффициент корреляции и относительная квадратная ошибка корня различны.

Ниже приведены два прогона для 10-кратной и 20-кратной перекрестной проверки с помощью weka.

1-й пробег с 10-кратным

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

2-й пробег с 20-кратным

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

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

Как только лучшая модель в каждом классе найдена, модель наилучшего соответствия оценивается с использованием тестовых данных. «Внешний» цикл перекрестной проверки может использоваться для лучшей оценки эффективности тестовых данных, а также оценки изменчивости. Затем обсуждение может сравнить производительность теста для разных классов, скажем, Neural Nets против SVM. Выбран один класс модели с фиксированным размером модели, и теперь все данные используются для изучения наилучшей модели.

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


0

Почему мы используем перекрестную проверку в k-кратном размере?

Перекрестная проверка - это метод оценки мастерства метода на невидимых данных. Вроде использования поезда-теста.

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

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

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

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

ссылка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.