Я использую поиск по сетке с LGBM. В документации python skilearn упоминается, что если параметры оценки сохранены как None, следует использовать процедуру оценки у оценщика.
Если None, метод оценки оценщика имеет вид used.
В следующем коде я попытался оценить среднюю оценку для подгонки
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)
Y = pd.Series(data.target)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=42)
folds = KFold(5, random_state=42)
lgb.cv(params, lgb.Dataset(X_train, Y_train), folds=folds, metrics=['rmse'], verbose_eval=99)
, которая дает вывод
cv_agg's rmse: 0.19164 + 0.0356263
Теперь я попробую с поиск по сетке с помощью LGBMRegressor
mdl = lgb.LGBMRegressor(metric='rmse')
grid = GridSearchCV(mdl,{})
grid.fit(X_train, Y_train)
print(grid.best_score_)
, который дает
0.8408851007985249
, это, кажется, какой-то метод случайной оценки, который трудно расшифровать. Это прекрасно работает, если я изменяю оценку на официальную оценку поиска по сетке rmse
grid = GridSearchCV(mdl,{}, scoring='neg_root_mean_squared_error')
grid.fit(X_train, Y_train)
print(grid.best_score_)
, что дает
-0.18737172831883972
отрицательная часть все еще странная для меня, но, по крайней мере, величина несколько ближе к первоначальной стоимости.
Я что-то упустил или это какая-то ошибка ??