Обучение с полным набором данных после перекрестной проверки?

140

Всегда ли полезно тренироваться с полным набором данных после перекрестной проверки ? Другими словами, можно ли тренироваться со всеми образцами в моем наборе данных и не иметь возможности проверить, подходит ли этот конкретный пример ?


Некоторые предыстории проблемы:

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

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

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

Теперь, говорят , что после выбора модели , я хотел бы использовать все те точек в моем наборе данных , и мы надеемся узнать лучшую модель. Для этого я мог бы использовать параметры соответствующие модели, которую я выбрал при выборе модели, а затем, после обучения полному набору данных, я получил бы новую изученную модель . Проблема в том, что, если я использую все точки в моем наборе данных для обучения, я не смогу проверить, переходит ли эта новая изученная модель на какие-либо невидимые данные. Как правильно обдумать эту проблему?& alpha ; б е с т β е у л л β е у л лNαbestβfull βfull

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

Ответы:

111

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

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

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

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

GC Cawley и NLC Talbot, Чрезмерная подгонка при выборе модели и последующая систематическая ошибка выбора при оценке производительности, Journal of Machine Learning Research, 2010. Research, vol. 11, с. 2079-2107, июль 2010 г. ( www , pdf )

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

GC Cawley и NLC Talbot, Предотвращение чрезмерной подгонки при выборе модели с помощью байесовской регуляризации гиперпараметров, Journal of Machine Learning Research, том 8, страницы 841-861, апрель 2007 г. ( www , pdf )

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

Дикран Сумчатый
источник
3
+1: отвечает на вопрос: «Если вы используете перекрестную проверку для оценки гиперпараметров модели (αs), а затем используете эти гиперпараметры для подгонки модели ко всему набору данных, то это нормально…»
Нейл Г.
4
@soufanom, нет, использование «первоначальных экспериментов» для выбора модели может привести к перестройке и почти наверняка внесет оптимистический уклон в анализ производительности. Перекрестная проверка, используемая для анализа производительности, должна повторять КАЖДЫЙ шаг, используемый при подборе модели независимо в каждом сгибе. Эксперименты в моей статье показывают, что модели ядра могут быть очень чувствительны к такого рода отклонениям, поэтому крайне важно выполнить выбор модели и оценку производительности со всей возможной тщательностью.
Дикран Сумчатый
3
Для методов ядра, таких как SVM, часто можно выполнить перекрестную проверку без участия пользователя практически без вычислительных затрат (см. Статьи, перечисленные в моем ответе). Я использую эту «виртуальную» перекрестную проверку по принципу «оставь один раз» для настройки гиперпараметров, вложенных в перекрестную проверку по k-кратному критерию для оценки производительности. Стоимость тогда вполне разумна. По моему мнению, недопустимо использовать какую-либо процедуру, в которой оценка производительности каким-либо образом смещена путем настройки гиперпараметров. Это стоит вычислительных затрат, чтобы получить надежную оценку.
Дикран Сумчатый
2
@DikranMarsupial. Я не совсем понимаю третий абзац в вашем ответе. Если я сделаю вложенную перекрестную проверку, я получу различный набор гиперпараметров для каждого сгиба внешнего CV (т.е. я получу один набор гиперпараметров от запуска внутреннего CV на сетке параметров). Как мне тогда выбрать лучший набор гиперпараметров?
Амелио Васкес-Рейна
1
перекрестная проверка по существу является средством оценки эффективности метода подбора модели, а не самого метода. Поэтому после выполнения вложенной перекрестной проверки для получения оценки производительности просто пересоберите окончательную модель, используя весь набор данных, используя процедуру перекрестной проверки (которая включает выбор гиперпараметров).
Дикран Marsupial
23

Просто чтобы добавить к ответу @ mark999, caretпакет Макса Куна (Обучение классификации и регрессии) является наиболее полным источником в R для выбора модели, основанного на перекрестной проверке при начальной загрузке или N-кратном CV, а также некоторых других схемах.

Не пренебрегать величием rmsпакета, но caretпозволяет вам подходить практически ко всем методам обучения, доступным в R, тогда как validateработает только с rmsметодами (я думаю).

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

Посмотрите виньетки пакетов, чтобы начать (это очень просто использовать)
Предварительная обработка данных
Выбор переменных с помощью каретки
Создание модели с каретой
Значение переменной

Вы также можете просмотреть веб-сайт каретки для получения дополнительной информации о пакете и конкретных примерах реализации:
Официальный сайт каретки

Момо
источник
Благодарю. Знаете ли вы, если после выбора модели (что делается по телефону train), есть ли способ тренироваться с полным набором данных?
Амелио Васкес-Рейна
Не уверен, что это хорошая идея или почему вы этого хотите, но вы можете просто подогнать окончательную модель, возвращенную поездом, к полному набору данных.
Момо
16

Я полагаю, что Фрэнк Харрелл рекомендовал бы валидацию, а не перекрестную валидацию. Проверка с помощью начальной загрузки позволит вам проверить модель, вписанную в полный набор данных, и будет более стабильной, чем перекрестная проверка. Вы можете сделать это в R, используя пакет validateХаррелла rms.

См. Книгу «Стратегии регрессионного моделирования» Харрелла и / или «Введение в бутстрап» Эфрона и Тибширани для получения дополнительной информации.

mark999
источник
9
Чтобы опустить следующий миф о «плохом CV», это проблема терминологии - «перекрестная проверка» Харрелла означает N-кратное CV, а «начальная проверка» означает повторную выборку CV. Очевидно, я согласен с тем, что этот второй вариант более стабилен и в целом более хорош, но это также тип перекрестной проверки.
1
mark999 или @mbq, не могли бы вы рассказать о том, как при начальной загрузке можно проверить модель, помещенную в полный набор данных?
Амелио Васкес-Рейна
1
@ user27915816 Ну, в принципе, нет; идея перекрестной проверки заключается в том, что вы проверяете, надежно ли данный метод обучения создает хорошие модели на наборах, очень похожих на финальный, и, если это так, обобщаете это наблюдение до полного набора с молчаливыми предположениями о том, что ничего странного не произойдет и тот метод CV, который вы использовали, не является каким-то предвзятым. Это, конечно, почти всегда достаточно хорошо, тем не менее, вы никогда не можете быть уверены, что модель, построенная на всех ваших данных, не перегружена.
14

Я думаю, что у вас есть куча разных вопросов:

Проблема заключается в том, что, если я использую все точки в моем наборе данных для обучения, я не могу проверить, подходит ли эта новая изученная модель к полному переоснащению!

Дело в том, что вы можете использовать (один) шаг проверки только для одной цели: либо для оптимизации параметров, (x), либо для оценки эффективности обобщения.

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

Итак, вот вопрос для этого поста: является ли хорошей идеей тренироваться с полным набором данных после перекрестной проверки в k-кратном размере? Или лучше вместо этого придерживаться одной из моделей, изученных в одном из перекрестных проверок для αbest?

Использование одной из моделей перекрестной проверки обычно хуже, чем обучение на полном наборе (по крайней мере, если ваша кривая обучения = f (nsamples) все еще увеличивается. На практике это так: если бы это было не так, вы, вероятно, установили бы кроме независимого тестового набора.)

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

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

Вот статья, где мы использовали эту технику:
Beleites, C. & Salzer, R .: Оценка и улучшение стабильности хемометрических моделей в ситуациях с небольшим размером выборки, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

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

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

cbeleites
источник
...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...Можете ли вы объяснить это немного больше? Например, если я использую логистическую регрессию в 10-тысячной перекрестной проверке и в итоге получаю 10 наборов коэффициентов, вы рекомендуете агрегировать оценки коэффициентов для формирования окончательной модели? Если так, как это можно сделать, просто взяв средства?
Жубарб
@cbeleites вы можете уточнить If the d.f. are actually appropriate for the cross validation models. В моем понимании вы утверждаете, что наборы поезда / проверки не очень велики по сравнению с полным набором данных, я прав?
jpcgandre
1
@jpcgandre: Выбор одной из суррогатных моделей для дальнейшего использования - это выбор модели на основе данных, что означает, что вам необходим внешний независимый уровень проверки. И вообще, если у вас нет достаточного количества дел, чтобы вы могли на самом деле проводить статистически значимые сравнения моделей на основе тестирования общего размера выборки, ИМХО вам не следует выбирать. 1k
cbeleites
1
Что еще более важно: суррогатные модели повторной перекрестной проверки имеют один и тот же набор гиперпараметров. То есть они эквивалентны во всем, что вы считаете важным, кроме произвольного выбора учебных и контрольных примеров. Выбор «хорошей» модели, таким образом, фактически должен, прежде всего, выбирать хорошую комбинацию тест / набор тренировок - что, по сути, является тем, чего мы обычно не хотим: мы хотим, чтобы выбор был хорошо обобщающим и, таким образом, работал не только для благоприятных случаев. С этой точки зрения, выбор суррогатной модели из «нормальной» перекрестной проверки для меня не имеет никакого смысла.
cbeleites
1
@jpcgandre: (df) Я утверждаю, что, выбирая сложность модели, подходящую для обучения на набора данных (который, я утверждаю, почти такой же большой, как и весь набор данных), вы можете прийти к уклону к немного слишком ограничительным моделям для обучения на всем наборе данных. Тем не менее, я не думаю, что это должно иметь значение на практике, тем более что мое впечатление в моей области таково, что мы скорее склонны ошибаться в отношении слишком сложных моделей. 11k
cbeleites
6

То, что вы делаете, это не перекрестная проверка, а какая-то стохастическая оптимизация.

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

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

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


источник
2
Спасибо @mbq, но я не уверен, что следую. Я делаю N-кратную перекрестную проверку для каждого значения точки моего поиска по сетке в пространстве гиперпараметров. Средний результат N-кратных сгибов дает мне упомянутое вами приближение, которое я использую для сравнения моделей и выбора моделей, выбирая модель, которая наилучшим образом соответствует набору валидации. Мой вопрос о том, что происходит, когда я тренируюсь с полным набором данных. Я думаю, что изученная модель изменяется (параметры измененной модели меняются), и в принципе у меня нет никакого способа узнать, страдаю ли я от переобучения. β
Амелио Васкес-Рейна
@AmV Если так, хорошо - как я писал, CV уже тестирует сценарий полного набора, вы не можете сказать больше без новых данных. Опять же, вы можете, в лучшем случае, сделать вложенное резюме, чтобы увидеть, нет ли переопределения, налагаемого самим выбором модели (если выбор дает очень хорошее улучшение или данные зашумлены, риск этого довольно велик).