将多类模型的类概率转换为 0-100 范围内的分数

Posted

技术标签:

【中文标题】将多类模型的类概率转换为 0-100 范围内的分数【英文标题】:Convert Class Probabilities of a multiclass model to scores in range 0-100 【发布时间】:2019-12-25 21:33:22 【问题描述】:

我想做的是根据三类分类模型的预测生成 0-100 的分数。 例如。 3 类逻辑回归模型的 predict_proba 给了我 3 个概率 x、y、z,如下所示 -

0 1 2

xyz

现在,我想根据这些概率生成 0-100 的分数,其中 0 更接近第 0 类,而 100 更接近第 2 类。

【问题讨论】:

你好!即使我也有类似的问题..您找到解决方案了吗? 是的。我找到了一种解决方法来做到这一点。现在,我将我的 0-100 分数划分为 3 个区间,即 0-32、33-66、67-100。现在,如果第 1 类的概率最高,则分数将在 33-66 之间。现在,将是 33 还是 66 取决于其他 2 个类别的概率。 【参考方案1】:

试试这个:

prob['P']=(prob['1']*1+prob['2']*2)/2

prob['0'] 乘以 0,所以你不需要它。

例子:

prob['0']=0.5, prob['1']=0.5, prob['2']=0==>prob['P']=0.25

prob['0']=0.75, prob['1']=0.25, prob['2']=0==>prob['P']=0.125

prob['0']=0.1, prob['1']=0.2, prob['2']=0.7==>prob['P']=0.8

prob['0']=0, prob['1']=0, prob['2']=1==>prob['P']=1

【讨论】:

嘿,Roee,这种方法效果很好。但是,如果您对此有一些数学上的理由,那就太好了。此外,在某些情况下它会失败。例如,当我们分别有 0、1 和 2 的概率为 0.34、0.33、0.33 时。我希望这个分数在 (0,35) 范围内,但我得到大约 49 分。 将其视为加权算术平均值 - 权重是类大小。如果你有相同的概率 - 你会得到 0.5 左右的分数 - 这是有道理的,因为你在 0 到 100 之间 - 没有一个职业足够强。 感谢您的回复。加权算术平均值听起来不错,但为什么我们还要保持分母为 2。它一定是 3。不应该吗? 由于概率总和为 1,这是一种特殊情况 - 通常,您除以权重之和,在这种情况下,您除以 1。除以 2 是归一化。当您将 a-100% 的机会乘以 2 的值时,将获得最大值 - 这意味着您必须将其除以 2,因为它是最大分数。

以上是关于将多类模型的类概率转换为 0-100 范围内的分数的主要内容,如果未能解决你的问题,请参考以下文章

《信用评分卡模型分数校准》

具有概率或置信度的 Keras CNN 的 SVC 分类器以区分未经训练的类

分类--阈值

scikit-learn:将多输出决策树转换为 CoreML 模型

使用 OpenCV 在多类分类中获取 SVM 分类分数

精度分数错误:分类指标无法处理多类和连续目标的混合[重复]