小编Kyl*_*ons的帖子

为 LightGBM 提供额外的自定义指标以实现早期停止

我使用训练 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)

其他可能有效但看起来很痛苦的事情:

  1. 在 sklearn API …

python lightgbm

5
推荐指数
1
解决办法
5686
查看次数

标签 统计

lightgbm ×1

python ×1