Почему бы не обучить окончательную модель полным данным после выполнения тестовых данных на основе настройки гиперпараметра и данных проверки на основе выбора модели?

9

Под всеми данными я имею в виду поезд + тест + проверка

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

Апурва Абхишех
источник
2
Вы НИКОГДА не должны исправлять свои гиперпараметры, используя свои тестовые данные. Вы просто испортили весь свой эксперимент, удалив слепую контрольную группу (набор тестов).
JahKnows
@JahKnows После того, как я закончу настройку гиперпараметров для модели, я не понимаю вреда, за исключением того, что я не буду знать, насколько хорошо он обобщает другой набор данных. Как я испортил свой эксперимент? я что-то пропустил?
Апурва Abhishekh

Ответы:

8

Вопрос неверен. Многие люди делают то, что вы говорите, они «не могут» делать.

Фактически, реализация поиска по сетке в широко развернутом пакете sklearn делает именно это. Если только refit=Falseон не переучит окончательную модель, используя все данные.

Я думаю, что для некоторых гиперпараметров это может быть не очень желательно, потому что они относятся к объему данных. Например, рассмотрим min_samples_leafтактику предварительного сокращения дерева решений . Если у вас есть больше данных, предварительное сокращение может работать не так, как вы хотите.

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

Приложение: @NeilSlater говорит ниже, что некоторые люди проводят задержку над CV. Другими словами, они разбивают поезд-тест, а затем выполняют выбор модели на тренировке. По его словам, они переобучаются с использованием оригинального тренировочного комплекта, но не тестирующего. Затем набор тестов используется для выполнения окончательной оценки модели. Лично я вижу в этом три недостатка: (а) это не решает проблему, о которой я говорил, некоторые гиперпараметры зависят от объема обучения, так как вы все равно переобучаетесь, (б) при тестировании многих моделей я предпочитаю более сложные такие методы, как вложенная перекрестная проверка, так что никакие данные не расходуются впустую, и (c) задержка - ужасный метод, позволяющий сделать вывод о том, как модель будет обобщаться, когда у вас мало данных.

Рикардо Круз
источник
Эта функция заключается в повторном использовании перекрестной проверки, но все же не рекомендуется повторно использовать тестовые данные, потому что у вас есть только предположения из перекрестной проверки и никакого измерения производительности. Любая ошибка или параметр проблемы (например, пример, который вы приводите) могут сделать модель незаметно хуже.
Нил Слэйтер
@NeilSlater Я не понимаю, что вы сказали здесь: «Эта функция касается повторного использования перекрестной проверки»
Рикардо Крус,
«feature» -> refitопция функции GridSearchCV. Он не подходит для того, чтобы включать в себя данные об испытаниях (они даже не видят эти данные).
Нил Слэйтер
@NeilSlater, вы можете легко проверить код для себя, если не верите мне (здесь) . Если refit = True, то «подойдет лучшая оценка, используя весь набор данных».
Рикардо Крус
1
@NeilSlater, это не мой опыт, но я добавил ваш опыт в мой комментарий, чтобы другие могли извлечь из этого пользу. Спасибо.
Рикардо Крус
1

Да, ты можешь.

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

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

Илья Женин
источник
1
Проблема с включением данных испытаний в соответствии с этим предложением заключается в том, что теперь у вас нет измерения того, насколько хорошо модель обобщается. Да, вы можете ожидать, что это будет обобщать лучше. Тем не менее, вы не знаете , потому что вы удалили свою способность измерить его. Я предлагаю добавить это предостережение и объяснить, почему иногда это по-прежнему нормально (например, при получении новых данных вы можете рассматривать это как новый набор тестов и создавать новое измерение во времени, надеясь при этом воспользоваться преимуществами лучшей модели). - это риск, хотя)
Нил Слэйтер
@NeilSlater: я понимаю, что я удалил свою способность измерить, насколько хорошо он будет обобщать другой набор данных. Но если у меня есть и тест, и удержание, даже после настройки гиперпараметра, я смогу снова тренировать свою модель на тренировке + тест, у меня все равно останется удержание, чтобы проверить, обобщает ли моя модель. Я знаю, что это отличается от того, что я спросил. Но я просто хочу узнать ваше мнение.
Апурва Abhishekh
1
@ApoorvaAbhishekh: Если у вас был еще один несвязанный набор данных, то да, вы можете использовать его в качестве нового набора тестов для новой модели, обученной по new_train = {старый поезд, старый резюме, старый тест}. Тогда вы получите меру обобщения. Хотя вы должны быть осторожны, чтобы не использовать его чрезмерно - если выяснится, что есть проблема с новым комбинированным набором (например, ранняя остановка должна измениться из-за большего количества данных), вы также не можете использовать его как новый набор cv. , , если у вас нет еще одного удержания в резерве. , ,
Нил Слэйтер
@NeilSlater В теории вам нужен новый набор данных, чтобы узнать производительность. На практике вы можете быть уверены, что ваша модель работает хорошо, так как вы работали с ней очень долго и знаете, чего ожидать. Но обычно у вас также есть другие данные для проверки работоспособности модели, например, в компьютерном зрении - немаркированные данные. Это не правильно, но это тоже работает. Конечно, это крайний случай, но я хочу сказать, что это может сработать. У меня всегда есть тестовый набор, который я не смешиваю с тренировками.
Илья
1

Ответ на этот вопрос зависит от используемого вами алгоритма обучения (технологии). Например, я видел некоторые подходы в ансамблевой классификации, где в конце объединяются наборы обучения и проверки (но не тестирования). Очень важно знать, что даже валидация используется главным образом для определения гиперпараметров, некоторые из этих гиперпараметров могут зависеть от используемых данных для обучения. Например, в проверке DNN, используемой для того, чтобы знать, когда следует остановиться, поскольку переоснащение может произойти в результате постоянной настройки параметров (весов) сети, нам нужен способ узнать, когда следует остановиться. Без проверенного набора вы будете ходить вслепую в тренировочном процессе. С другой стороны, если вы используете точно такое же количество итераций, как указано выше, существует высокая вероятность того, что вы не выиграете от этих дополнительных выборок. Тестовый набор не должен касаться вообще, как указано выше, без тестового набора у вас не будет никакого способа оценить вашу модель. Это азартная игра, вы НЕ МОЖЕТЕ поставить какую-либо модель или решение без оценки ее точности относительно истинного распределения данных (которое представлено данными тестирования).

Башар Хаддад
источник
Я имел в виду, что после обучения на данных поезда, настройки гиперпараметров на данных проверки и выбора модели на основе данных испытаний, могу ли я обучить свою модель на основе полных данных. Или я могу объединить данные обучения и данные проверки после того, как я закончу с настройкой гиперпараметра, и оценить точность, используя данные испытаний. Извиняюсь за неправильную запись. Исправили это сейчас.
Апурва Abhishekh