Я использую XGBoost для задачи прогнозирования временных рядов.Я выполняю gridsearch с перекрестной проверкой временных рядов.Как ни странно, 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}
Существуют ли явные причины, по которымпочему глубина дерева и минимальный вес ребенка так высоки?К сожалению, я не могу выпустить свой набор данных.Я просто ищу общие причины того, почему это может происходить, и если сходящиеся параметры являются разумными.