我需要通过训练分数来纠正 predict_proba 吗?

数据挖掘 分类 可能性 概率校准
2022-02-25 02:33:41

许多算法提供了一个predict_proba函数来指示一个案例属于该类的概率(例如https://scikit-learn.org/stable/modules/generated/sklearn.svm.libsvm.predict_proba.html)。

引用@Media 在解释二进制分类中的答案,输出为 0.5(真)

假设您有一个汽车分类器来区分白色和蓝色汽车。在训练期间,你有 100 张蓝色汽车的图像和 20 张白色汽车的图像。在召回阶段,如果对于任意图像,每个类别都有 50%...

如果蓝色汽车占训练案例的 83%,并且我得到predict_proba一辆蓝色汽车为 0.5,我是取概率为 0.5 还是需要将其修正为 0.83 倍?

如果我确实需要更正,我是乘以因子 (0.5*0.83) 还是除以 (0.5/0.83) 以获得正确的概率?

2个回答

这取决于模型、您的训练数据是否代表测试数据,还可能取决于分类问题的“简单程度”。但简短的回答是(可能)不需要调整。

模型暴露于训练数据的不平衡;大多数模型都会将其纳入其概率分数中,因此要信任给定的概率,需要测试数据具有相似的分布。这就是我们所说的新车是蓝色的“概率”的确切含义。我认为在大多数情况下,您希望训练数据能够代表您的用例中的数据,因此我们确实希望概率能够意识到不平衡。[现在,有时在极度不平衡的情况下,某些模型可能会通过一些调整学习得更好,在这种情况下,您还需要一些“概率校准”后处理,但这通常比简单的乘法或除法更复杂你建议的方法。例如,在逻辑回归中,有'

最后,一些模型隐含地扭曲了他们的分数,所以predict_proba应该持怀疑态度。再次,查找“概率校准”。

如果蓝色汽车占训练案例的 83%,并且我得到一辆蓝色汽车的 predict_proba 为 0.5,我应该将概率设为 0.5 还是需要将其修正 0.83 倍?

首先,您的训练数据集包含 83% 的蓝色汽车这一事实与标签为蓝色的概率为 83% 不同。只有当分类器被校准时才会出现这种情况。sklearn团队实际上记录了他们流行的分类器的未校准性能:

在此处输入图像描述

他们声明:

校准良好的分类器是概率分类器,predict_proba 方法的输出可以直接解释为置信水平。例如,一个经过良好校准的(二元)分类器应该对样本进行分类,以便在它给出的样本中 predict_proba 值接近 0.8,大约为 0.8。80% 实际上属于正类。

如果您希望能够将标签的概率解释为置信区间,则应使用 校准分类器CalibratedClassifierCV您可以在训练完分类器后执行此操作,方法是设置cv=prefit.CalibratedClassifierCV

最后,如果您正在处理不平衡的类,并且您想在训练期间考虑到这一点,请确保利用参数class_weight,以便在训练期间代表性不足的类具有更高的权重。