#python #gridsearchcv #xgbregressor
Вопрос:
Я использую R^2 (от sklearn.metrics) в качестве функции подсчета очков, но когда поиск по сетке заканчивается, он набирает лучшую оценку -282,3. Перед тем как попытаться настроить параметры для этой модели, я запустил XGBRegressor на своих обучающих данных с набором (как я думал) разумных параметров и получил оценку R^2 0,62, и при запуске поиска по сетке я убедился, что эти начальные параметры включены в диапазоны, в которые я прошел. Я в замешательстве относительно того, почему это происходит, и был бы признателен за некоторые разъяснения и, если возможно, за обходной путь. Я читал в нескольких разных местах, что API оценки всегда минимизирует значения (поэтому оценки отрицаются), но я не уверен, как это повлияет на меня, потому что R^2 может быть отрицательным, если модель плохо соответствует данным.
Я включаю приведенный ниже код, хотя и не думаю, что это необходимо для ответа на вопрос.
params = { 'max_depth': [2, 4, 6],
'n_estimators': [100, 500, 1000],
'colsample_bytree': [0.2, 0.6, 0.8],
'min_child_weight': [3, 5, 7],
'gamma': [0.3, 0.5, 0.7],
'subsample': [0.4, 0.6, 0.8]}
model = XGBRegressor()
grid = GridSearchCV(estimator=model,
param_grid=params,
scoring='r2',
verbose=1)
start = time.time()
grid.fit(X, y)
end = time.time()
print(end-start)
print("Best parameters:", grid.best_params_)
print("Best Score (R2): ", (grid.best_score_))
Для справки, это модель, которую я использовал до попытки поиска по сетке, которая дала мне оценку R^2 0,62:
regressor = XGBRegressor(colsample_bytree=0.6, gamma=0.3, max_depth=4, min_child_weight=5, n_estimators=100, subsample=0.8, objective='reg:squarederror')
Заранее спасибо!