如何计算投票集成分类器的 AUC(曲线下面积)?

Posted

技术标签:

【中文标题】如何计算投票集成分类器的 AUC(曲线下面积)?【英文标题】:How to calculate AUC(Area Under Curve) for voting ensemble classifiers? 【发布时间】:2018-01-28 02:51:00 【问题描述】:

例如,我有 3 个阈值分类器 c1,c2,c3 和 10 个用于二进制分类的实例(标记为 0/1),那么我可以得到形状为(10,3)的得分矩阵 S,S[i,j]是第j个分类器给出的第i个实例的分数,当设置阈值时,我可以通过将分数与阈值进行比较来得到预测的标签。

现在我对 c1,c2,c3 合奏使用投票方法。据我所知,计算 AUC 值需要投票集成分类器给出的分数。然而,在投票之后,集成分类器只给出预测的标签。这种情况下如何计算AUC值?

【问题讨论】:

【参考方案1】:

正如您所说,AUC 需要概率估计的阈值。你如何创建你的模型并不重要——不管它是否是 ensemlbe,重要的是你需要一个输出 P(y|x) 的模型。对于常规合奏(每个成员具有相同的权重),它很简单:

P(y|x) = 1/3 [ P1(y|x) + P2(y|x) + P3(y|x) ]

这就是您应用阈值的对象(因此 ROC/AUC 是基于它的)。

【讨论】:

谢谢回复。最终的 P(y|x) 正是我所需要的,但您提供的公式似乎适用于平均集成案例。如果用于投票合奏,我们将获得相同的平均和投票合奏的 AUC 值,这让我感到困惑。这个怎么理解? 当你说“投票”时,你如何分配“投票”?没有单一的方法可以做到这一点。例如,sklearn 中的 VotingClassifier 有两个选项 - 软(我描述的那个)和硬,由于逐步特征,这对于 ROC 之类的东西非常不利,你会有 P(y=1|x) = # k: argmax y Pk(y|x) = 1 / 3 这是我要分配的硬投票。好吧,使用 P(y|x) 计算 AUC 似乎太困难了。有没有其他方法可以得到 AUC? AUC 不是度量,AUC 字面意思是某个曲线下的积分,但通常是 ROC 曲线的 AUC,没有 P(y|x) 就无法计算 ROC 曲线。

以上是关于如何计算投票集成分类器的 AUC(曲线下面积)?的主要内容,如果未能解决你的问题,请参考以下文章

从分类精度计算曲线下面积

药物代谢动力学中对数梯形法如何计算AUC

AUC与ROC

ROC,AUC,Precision,Recall,F1的介绍与计算(转)

r 使用ggplot / normal plot计算并绘制接收器工作特性曲线下的面积(AUC)(ROC)。

详解支持向量机-基于SVM的ROC曲线和AUC面积菜菜的sklearn课堂笔记