Для упрощения предположим, что у вас есть только один гиперпараметр.Если вы хотите выполнить перекрестную проверку, вы должны выбрать 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)