XGBoost 概率分布趋于极端

数据挖掘 机器学习 xgboost 概率校准
2022-03-15 08:26:29

我正在使用一个XGBoost分类器进行风险预测,我看到即使它有非常好的二元分类结果,概率输出也主要在以下0.05或以上0.95(比如其中的 60%)。

我已经尝试过校准方法(来自sklearnAPI),但它只是稍微减少了问题。

我的数据集有 1800 个训练点,我在大约 500 个数据点上对其进行了测试。这是相当平衡的。我还使用贝叶斯优化来调整模型的超参数。我的模型有 19 个功能。

有谁知道获得更规律分布概率的解决方案?问题是否在于我的数据点太少?我应该以不同的方式设置我的超参数吗?我的功能太多/太少了吗?

1个回答

由于您看到概率集中在 0 和 1 附近(正如梯度提升中所预期的那样),请确保您没有使用 Platt 校准;等渗校准是一个更好的选择,或者如果你愿意离开 sklearn,beta 校准听起来很有希望。请记住,所有这些校准方法都应使用单独的训练集。此外,请查看校准图(这可能表明 Platt 不合适,并且还会指示下一段是否可能)。

还有一种(轻微的)可能性是这些分数实际上是经过良好校准的:例如,如果数据是在两个集群中生成的,并且每个集群的点均匀地选择类,其中一个集群中的概率接近 0,而另一个集群中的概率接近 1,那么“正确”的答案就是这些概率,树会找到这些集群。

在不实际校准它们的情况下获得“更规则分布的概率”的一种方法是使您的模型更加保守,使用更少的树和/或更低的学习率、更多的正则化等,但这可能会损害模型的性能。