为什么使用 catboost 进行二元分类的自定义 eval_metric 的 approxes 变量包含负值?

问题描述 投票:0回答:1

为了使用 catboost 创建用于二元分类的个人评估函数,我使用了此处提到的示例:如何为 catboost 创建自定义评估指标?

但是,我在“approxes”数组中有负值作为评估函数的输入,并且不大于 0.5,因此当我们使用“expit(y_pred).astype(int)”将这个初始数组转换为整数数组时,所有值为 0,这适用于所有迭代。

我不明白为什么当我进行二元分类时我会有负值。

当我使用“F:beta”评估函数(或其他)时,它工作正常,并且学习按照我的预期进行。

或者这是我对事物正常运作方式的误解?

提前感谢您的反馈。

我在调试模式下运行程序,并对作为“evaluate”函数输入提供的“approxes”数组中的值进行统计。 但获得的最大值为 0.25,最小值降至 -1.25。

我期望的值介于 0 和 1 之间。

binary classification metrics evaluation catboost
1个回答
0
投票

经过更多研究,我解决了我的问题。

如果有人遇到同样的问题,我会发布答案,而不是删除我的问题。

这是我对近似内容的误解。近似值为负值是正常的。您需要应用 sigmoid(使用 expit 或手动)它来切换到 0 和 1 之间的值。我提供的链接中的示例似乎不起作用。但现在对我来说没关系。

© www.soinside.com 2019 - 2024. All rights reserved.