我在用XGBoost处理一个时间序列预测问题我一直在用时间序列交叉验证进行网格搜索。奇怪的是,gridsearch在大量树和最小子权重上反复收敛。
这是我的密码
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
tscv = TimeSeriesSplit(n_splits=3, max_train_size = 1500)
model = xgboost.XGBRegressor()
grid_search = GridSearchCV(model,
param_grid = param_grid,
cv = tscv.split(X_scaled),
n_jobs = -1,
scoring = 'explained_variance',
verbose=True)
grid_search.fit(X_scaled, y)
print (grid_search.best_params_)
我的参数网格是
param_grid = {'learning_rate': [0.01, 0.1],
'max_depth': [4,8,12],
'min_child_weight': [3,5,10,20,35,50],
'subsample': [0.5, 0.75],
'colsample_bytree': [0.5, 0.75],
'n_estimators': [100, 300],
}
网格搜索收敛于
{'colsample_bytree': 0.5, 'learning_rate': 0.01, 'max_depth': 12, 'min_child_weight': 50, 'n_estimators': 300, 'subsample': 0.5}
为什么树深和最小子重都这么高,有什么明确的原因吗?不幸的是我不能发布我的数据集我只是想知道为什么会发生这种情况,以及收敛参数是否合理。