为什么 AUC =1 即使分类器错误分类了一半的样本?

机器算法验证 机器学习 奥克
2022-02-12 00:44:46

我正在使用一个返回概率的分类器。为了计算 AUC,我使用的是 pROC R-package。分类器的输出概率为:

probs=c(0.9865780,
0.9996340,
0.9516880,
0.9337157,
0.9778576,
0.8140116,
0.8971550,
0.8967585,
0.6322902,
0.7497237)

probs显示属于“1”类的概率。如图所示,分类器已将所有样本分类为“1”类。

真正的标签向量是:

truel=c(1, 1, 1, 1, 1, 0, 0, 0, 0, 0)

如图所示,分类器错误分类了 5 个样本。但是,AUC 是:

pROC::auc(truel, probs)
Area under the curve: 1

你能解释一下为什么会这样吗?

3个回答

其他答案解释了正在发生的事情,但我认为一张照片可能会很好。

您可以看到类完全分离,因此 AUC 为 1,但在 1/2 处设置阈值会产生 50% 的错误分类率。

问题

AUC 是根据类别成员的概率对示例进行排名的能力的度量。因此,如果所有概率都高于 0.5,如果所有正面模式的概率都高于所有负面模式,那么 AUC 仍然可以为 1。在这种情况下,将有一个高于 0.5 的决策阈值,这将使错误率为零。请注意,因为 AUC 仅测量概率的排名,它不会告诉您概率是否经过良好校准(例如,没有系统偏差),如果概率的校准很重要,那么请查看交叉熵度量。

样本根本没有“错误分类”。示例的0排名严格低于1示例。AUROC 正在做它定义的事情,即测量随机选择1的排名高于随机选择的0. 在此示例中,这始终是正确的,因此它是概率为 1 的事件。

Tom Fawcett 有一篇很棒的关于 ROC 曲线的说明性文章。我建议从那里开始。

汤姆·福塞特。“ROC 分析简介”。模式识别字母。2005 年。