我使用训练 API 在 LightGBM 中运行二元分类,并希望停止自定义指标,同时仍跟踪一个或多个内置指标。不过,尚不清楚这是否可能。
在这里我们可以禁用默认binary_logloss指标并仅跟踪我们的自定义指标:
import lightgbm as lgb
def my_eval_metric(...):
...
d_train = lgb.Dataset(...)
d_validate = lgb.Dataset(...)
params = {
"objective": "binary",
"metric": "custom",
}
evals_result = {}
model = lgb.train(
params,
d_train,
valid_sets=[d_validate],
feval=my_eval_metric,
early_stopping_rounds=10,
evals_result=evals_result,
)
Run Code Online (Sandbox Code Playgroud)
如果我们使用metric默认值,我们也会跟踪binary_logloss,但我们将停止两个指标,而不仅仅是我们的自定义指标:
params = {
"objective": "binary",
# "metric": "custom",
}
Run Code Online (Sandbox Code Playgroud)
我们可以first_metric_only 在 中设置params,但现在我们只会停止,因为binary_logloss显然,这是第一个指标:
params = {
"objective": "binary",
"first_metric_only": True,
}
Run Code Online (Sandbox Code Playgroud)
其他可能有效但看起来很痛苦的事情: