ROC曲线下精度与面积的关系


16

我为诊断系统构建了ROC曲线。然后非参数地将曲线下的面积估计为AUC = 0.89。当我尝试在最佳阈值设置(最接近点(0,1)的点)上计算精度时,诊断系统的精度为0.8,小于AUC!当我在另一个阈值设置(与最佳阈值相差很远)下检查精度时,我得到的精度等于0.92。是否可以使诊断系统在最佳阈值设置下的准确度低于另一个阈值的准确度,并且也低于曲线下的面积?请参阅所附图片。

在此处输入图片说明


1
您能否指出分析中有多少个样本?我敢打赌它严重不平衡。而且,AUC和准确性完全不是那样翻译的(当您说准确性低于AUC时)。
Firebug

1
269469是负数,37731是正数;根据下面的答案,这可能是问题所在(班级失衡)。
阿里·苏丹

请记住,问题本身不是阶级失衡,而是评估手段的选择。总而言之,在这种情况下,更为合理,或者您可以实现平衡的准确性。一种üC
Firebug

最后一件事,如果您认为答案回答了您的问题,则可以考虑“接受”答案(绿色复选标记)。这不是强制性的,但可以帮助回答问题的人,也可以帮助站点组织(在您这样做之前,该问题一直被视为未回答),以及将来可能会提出相同问题的人们。
Firebug

Answers:


8

确实有可能。关键是要记住,准确性受班级不平衡的影响很大。例如,在您的情况下,由于FPR()接近0,而TPR(=)为0.5,您的精度()仍然很高。 TP=FPFP+Ťñ =TP+TNŤPŤP+Fñ=ŤP+ŤñŤP+Fñ+FP+Ťñ

换句话说,由于您有更多的负样本,因此如果分类器始终预测为0,则FPR和TPR接近0时仍将获得较高的准确性。

所谓的最佳阈值设置(最接近点(0,1)的点)只是最佳阈值的许多定义之一:它不一定会优化精度。

在此处输入图片说明


10

好的,请记住(假阳性率),(真阳性率)和(准确性)之间的关系:T P R A C CFP[RŤP[R一种CC

ŤP[R=真正的积极阳性病例

FP[R=假阳性负面案件

一种CC=ŤP[R阳性病例+1-FP[R负面案件阳性病例+负面案件

因此,可以表示为和的加权平均值。如果负数和正数相同:一种CCŤP[RFP[R

一种CC=ŤP[R+1-FP[R2

但是如果怎么办?然后: 因此,在这种情况下,最大发生在最小ñ-ñ+

一种CCñ-ñ+1-FP[R
一种CCFP[R

参见此示例,负数大于正数1000:1。

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

请参阅,当fpr为0时acc为最大值。

这是ROC,带有注释的准确性。

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

在此处输入图片说明


一种üC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

最重要的是,您可以通过生成伪造模型的方式来优化精度(tpr在我的示例中= 0)。那是因为准确性不是一个好的指标,结果的二分法应该留给决策者。

ŤP[R=1-FP[R

当您的班级不平衡时,优化准确性可能是微不足道的(例如,将所有人预测为多数班)。


一种üC

最重要的一点是:为什么分类准确率较低的分类器的AUC高于准确分类器的AUC?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.