【发布时间】:2020-02-24 14:14:52
【问题描述】:
我没有参数化的 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_)
正如您在“参数”中看到的那样,是我手动选择的值。网格搜索选择完全不同的参数 比默认参数差。 这不是我第一次遇到手动参数化比网格搜索提供更好结果的情况。这可能是什么原因?
最佳参数和得分:
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}
【问题讨论】:
-
请说明确切您的问题是什么 - 性能不好,或者网格搜索不使用您提供的参数?您的标题暗示第一个,而您的文本暗示第二个。如果是第二种,还请提供流程最终选择的参数。
标签: python machine-learning xgboost grid-search