Сетка поиска с LightGBM - PullRequest
       46

Сетка поиска с LightGBM

0 голосов
/ 18 апреля 2020

Я использую поиск по сетке с 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

отрицательная часть все еще странная для меня, но, по крайней мере, величина несколько ближе к первоначальной стоимости.

Я что-то упустил или это какая-то ошибка ??

...