XGBoost:如何调整二元分类器的概率以匹配训练数据?

数据挖掘 机器学习 Python xgboost 概率校准
2021-10-01 06:41:44

训练和测试数据的阳性率约为 1%,但模型预测只有 0.1% 左右为阳性。

该模型是一个 xgboost 分类器。

我试过校准,但没有太大改善。我也不想选择阈值,因为最终目标是输出概率。

我想要的是模型具有许多与实际数据中的正数相似的分类正数。

1个回答

第一个(也是最简单的)选项是确保您的模型在 probabilites 中进行了校准在 Python 中,这意味着您应该在拟合方法中传递选项 binary:logistic。

另一种方法是将模型的输出转换为概率。有不同的方法。

这可以通过某种回归技术来找到概率与输出之间的关系来实现。Python 的等渗回归应该适用于此目的。但是,如果没有关于您的分数分布的更多信息,它可能无法正常工作。

这也可以通过platt scaling实现:将输出转换为具有阈值的二进制预测(0 和 1),然后对这些新变量校准逻辑回归。这相对容易做到,但根据我的经验,它不一定能很好地解决非线性关系的不平衡问题。

最后,有一些方法可以根据您的模型纠正输出对于逻辑回归,这意味着更改您的偏差变量,以使总体预测比例与您的数据集相匹配。这也可以用来对抗罕见事件的影响(见此我发现这对逻辑回归很有效。但是,我不确定它是否直接适用于 XGBoost,但值得一试。