Мой регрессор Xgboost без параметризации имеет 64.5
R2
Когда я вручную добавляю гиперпараметры, как показано ниже, я получаю 66.4
R2
xgb1 = XGBRegressor(
learning_rate=0.09,
max_depth=4,
min_child_weight=2,
subsample=0.7
)
Однако, когда я выполняю поиск по сетке,ввод гиперпараметров в диапазоне тех, которые я выбрал вручную - R2 только 63
Поиск по сетке:
xgb1 = XGBRegressor()
parameters = {'learning_rate': [0.09, 0.1, 0.2],
'min_child_weight':[1, 2, 3],
'gamma':[0, .1],
'subsample':[.7, .8, .9, 1],
'colsample_bytree':[.8, .9, 1],
'max_depth': [3, 4, 5],
'n_estimators': [100, 120, 200] }
xgb_grid = GridSearchCV(xgb1,
parameters,
cv = 5,
n_jobs = -1,
verbose=True)
xgb_grid.fit(X_train, y_train)
print(xgb_grid.best_score_)
print(xgb_grid.best_params_)
Как видно из «параметров», значенияЧто я выбрал вручную. Поиск по сетке выбирает совершенно разные параметры, которые дают параметры хуже, чем параметры по умолчанию. Это не первый случай, когда ручная параметризация дает лучшие результаты, чем поиск в Grid. Что может быть причиной этого?
Лучшие параметры и оценка:
0.6384582336141522
{'colsample_bytree': 0.8, 'gamma': 0.1, 'learning_rate': 0.2, 'max_depth': 4, 'min_child_weight': 3, 'n_estimators': 120, 'subsample': 0.9}