gpt4 book ai didi

python - LightGBM 使用自定义 eval 函数和内置损失函数提前停止

转载 作者:行者123 更新时间:2023-12-04 13:14:52 29 4
gpt4 key购买 nike

我正在使用 LightGBM 进行二进制分类项目。我使用内置的“logloss”作为损失函数。但是,我想使用 early_stopping 在产生最高 Precision_Recall AUC 值时停止迭代。所以我实现了以下自定义 eval 函数:

def f_pr_auc(probas_pred, y_true):
labels=y_true.get_label()
p, r, _ = precision_recall_curve(labels, probas_pred)
score=auc(r,p)
return "pr_auc", score, True

这个自定义 eval 函数运行良好,我有如下更新:

enter image description here

然而,迭代停止在最低 logloss 值而不是最高 pr_auc 值。有没有办法可以禁用 logloss 评估并只评估 pr_auc?

对于不平衡的数据集,最高的 pr_auc 值可能无法在最低的 logloss 下实现。所以我想在达到最高 pr_auc 时停止迭代。

最佳答案

使用 LGB Python API,您必须在参数字典中设置 custom公制选项:

params = {
......
'objective': 'binary',
'metric': 'custom',
......
}

gbm = lgb.train(params,
lgb_train,
feval=f_pr_auc,
valid_sets=lgb_eval)

关于python - LightGBM 使用自定义 eval 函数和内置损失函数提前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61491562/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com