Использование набора для проверки возможности обобщения модели

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

_Обучение

_Проверка

_Тестирование

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

Мой код:

dt = DecisionTreeClassifier(random_state=12)
max_depth = [int(d) for d in np.linspace(1,20,20)]
max_features = ['log2', 'sqrt','auto']
criterion = ['gini', 'entropy']
min_samples_split = [2, 3, 50, 100]
min_samples_leaf = [1, 5, 8, 10]
grid_param_dt = dict(max_depth=max_depth, max_features=max_features, min_samples_split=min_samples_split, min_samples_leaf=min_samples_leaf, criterion=criterion)
gd_sr_dt = GridSearchCV(estimator=dt, param_grid=grid_param_dt, scoring='accuracy', cv=10)

gd_sr_dt.fit(x_train, y_train)
best_parameters_dt = gd_sr_dt.best_params_
print(best_parameters_dt)

и я получаю настройку гиперпараметров, как показано ниже:

{'criterion': 'gini', 'max_depth': 9, 'max_features': 'log2', 'min_samples_leaf': 10, 'min_samples_split': 50}

Как использовать набор для проверки возможности обобщения модели с этими гиперпараметрами?


person Nguyễn Thành Trung    schedule 06.01.2021    source источник


Ответы (1)


Этот вопрос до сих пор не ясен. Однако, если вы имеете в виду, что вам нужен набор данных для проверки, вы уже это делаете. С каждой комбинацией возможных параметров вы создаете 10 складок (через GridSearchCV), что означает 10 наборов данных вне складки, которые в основном используются для оценки возможности обобщения модели с использованием выбранных параметров на невидимых данных.

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

  • Получение лучшей модели с наименьшей ошибкой в ​​сгибе: выбрав model = gd_sr_dt.base_estimator_ и затем протестировав набор данных проверки preds = model.predict (X_val).
  • Возьмите ансамбль моделей, показавших лучшую производительность: при этом вы возьмете среднее значение прогнозов каждой модели, сгенерированных в каждом сгибе.
person ALI HAIDAR    schedule 06.01.2021