【问题标题】:How to calculate AUC(Area Under Curve) for voting ensemble classifiers?如何计算投票集成分类器的 AUC(曲线下面积)?
【发布时间】: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值?

【问题讨论】:

    标签: machine-learning roc voting auc ensemble-learning


    【解决方案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 曲线。
    猜你喜欢
    • 2017-01-25
    • 2012-01-29
    • 2014-03-19
    • 2021-10-24
    • 2017-06-05
    • 2018-05-24
    • 2015-04-16
    • 2011-06-24
    相关资源
    最近更新 更多