Выполните перекрестную проверку на обучающем или проверочном разделе для настройки параметров - PullRequest
0 голосов
/ 25 сентября 2018

У меня большой набор данных, который разделен на три блока (train-validate-test).И я хочу выполнить перекрестную проверку (CV), поскольку у меня большой набор данных, выполнение CV по всему набору данных займет слишком много времени.Какой раздел подходит для выполнения резюме?Я видел учебники, в которых используется только разделение обучения, а другие используют только разделение проверки, в то время как другие используют весь набор данных.

Спасибо за любые разъяснения или помощь.

1 Ответ

0 голосов
/ 25 сентября 2018

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

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

РЕДАКТИРОВАТЬ:

Если вы используете scikit-learnвот псевдокод для гипотетического model с гиперпараметром C:

from sklearn.model_selection import GridSearchCV

# X_train, X_test are the train and test features
# Y_train, Y_test are the corresponding labels/values to predict.
# model is some scikit-learn regression or classification model

# Create a parameter grid
param_grid = {'C': [0.1, 1, 5, 15, 100]}

# Do two fold CV. You can do other types of CV as well by passing
# a cross-validation generator
estimator = GridSearchCV(model, cv=2, param_grid=param_grid)
# Do the cross validation procedure explained below
estimator.fit(X_train, Y_train)

Что происходит, когда вы запускаете метод подгонки, так это то, что вы разбиваете тренировочный набор (X_train, Y_train) на два,Затем вы тренируете модель с C=0.1, используя первую половину данных, и оцениваете производительность во второй половине.В этом случае первая половина является обучающим набором, а вторая половина является проверочным набором.После этого вы повторяете процедуру, но используете вторую половину в качестве тренировочного набора и первую половину в качестве проверочного набора.Исполнение затем усредняется и сохраняется.

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

score = estimator.score(X_test, Y_test)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...