从列联表计算ROC曲线下面积的公式是什么?

机器算法验证 奥克
2022-02-17 01:21:25

例如,如果我的表是:

                True Value (gold standard)
                   Positive  | Negative |
         |        |          |          |
Test     | Pos    |    A     |     B    |   
Result   |        |          |          |
         | Neg    |    C     |     D    |
         |        |          |          |
2个回答

在一般情况下:你不能

ROC 曲线显示灵敏度和特异性如何在每个可能的阈值下变化。已在单个阈值处计算了一个列联表,而有关其他阈值的信息已丢失。因此,您无法根据此汇总数据计算 ROC 曲线。

但是我的分类器是二元的,所以我只有一个阈值

二元分类器并不是真正的二元分类器。尽管它们可能只公开最终的二元决策,但我所知道的所有分类器都依赖于一些底层的定量估计。

  • 二叉决策树?尝试构建回归树。
  • 分类器 SVM?做一个支持向量回归。
  • 逻辑回归?访问原始概率。
  • 神经网络?改为使用最后一层的数字输出。

这将使您有更多的自由来选择最佳阈值,以获得满足您需求的最佳分类。

但我真的很想

你真的不应该。具有很少阈值的 ROC 曲线显着低估了曲线下的真实面积 (1)。具有单点的 ROC 曲线是最坏的情况,任何与连续分类器的比较都是不准确和误导的。

只要给我答案!

好吧,好吧,你赢了。对于一个点,我们可以将 AUC 视为两个三角形 T 和 U 的总和:

具有单个 (SP, SE) 对和两个三角形的 ROC 曲线

我们可以根据列联表(您定义的 A、B、C 和 D)获取它们的区域:

T=1×SE2=SE2=A2(A+C)U=SP×12=SP2=D2(B+D)

获取 AUC:

AUC=T+U=A2(A+C)+D2(B+D)=SE+SP2

总结

您可以从混淆矩阵技术上计算二元分类器的 ROC AUC。但以防万一我不清楚,让我最后再说一遍:不要这样做!

参考

(1) DeLong ER、DeLong DM、Clarke-Pearson DL:比较两个或多个相关接收器操作特性曲线下的面积:一种非参数方法。生物识别 1988,44:837-845。 https://www.jstor.org/stable/2531595

当我声称所有这些都是阴性时,灵敏度 (y) = 0, 1 - 特异性 (x) = 0。如果我根据测试结果声称阳性/阴性,则 y =A/(A+C), x =B/(B+D)。当我说它们都是正数时,y = 1 和 x = 1。

基于坐标为 (0,0) (A/(A+C), B/(B+D)) (1,1), (以 (y,x) 顺序) 的三个点,很容易计算用三角形面积公式计算曲线下面积。

最终结果:面积 =AB+2AD+2CD(A+C)(B+D)? 需要验证。