为什么一个不太准确的分类器的 AUC 比一个更准确的分类器的 AUC 高?

机器算法验证 机器学习 分类 奥克 贝叶斯网络
2022-02-05 20:39:26

我有两个分类器

  • A:朴素贝叶斯网络
  • B:树(单连接)贝叶斯网络

在准确率和其他指标方面,A 的表现比 B 差。但是,当我使用 R 包 ROCR 和 AUC 进行 ROC 分析时,结果 A 的 AUC 比 B 的 AUC 高。这是为什么发生?

真阳性(tp)、假阳性(fp)、假阴性(fn)、真阴性(tn)、敏感性(sen)、特异性(spec)、阳性预测值(ppv)、阴性预测值(npv)和A 和 B 的准确度 (acc) 如下。

+------+---------+---------+
|      |    A    |    B    |
+------+---------+---------+
| tp   | 3601    | 769     |
| fp   | 0       | 0       |
| fn   | 6569    | 5918    |
| tn   | 15655   | 19138   |
| sens | 0.35408 | 0.11500 |
| spec | 1.00000 | 1.00000 |
| ppv  | 1.00000 | 1.00000 |
| npv  | 0.70442 | 0.76381 |
| acc  | 0.74563 | 0.77084 |
+------+---------+---------+

除了边缘(不包括 tp、fn、fn 和 tn)上的 sens 和 tie(spec 和 ppv)外,B 似乎比 A 表现更好。

当我计算 sens(y 轴)与 1-spec(x 轴)的 AUC 时

aucroc <- auc(roc(data$prediction,data$labels));

这是AUC比较。

+----------------+---------+---------+
|                |    A    |    B    |
+----------------+---------+---------+
| sens vs 1-spec | 0.77540 | 0.64590 |
| sens vs spec   | 0.70770 | 0.61000 |
+----------------+---------+---------+

所以这是我的问题:

  • 当 B 在准确性方面“似乎”优于 A 时,为什么 A 的 AUC 优于 B?
  • 那么,我如何真正判断/比较 A 和 B 的分类性能呢?我的意思是,我是否使用 AUC 值?我是否使用 acc 值,如果是,为什么?
  • 此外,当我对 A 和 B 应用适当的评分规则时,B 在对数损失、二次损失和球面损失方面优于 A(p < 0.001)。这些对判断 AUC 的分类性能有何影响?
  • A 的 ROC 图看起来非常平滑(它是一个弯曲的弧线),但 B 的 ROC 图看起来像一组连接线。为什么是这样?

根据要求,这里是模型 A 的图。

A型朴素贝叶斯网

这是模型 B 的图。

B型常规贝叶斯网络

这是 A 和 B 的概率分布的直方图。(间隔设置为 20)。

直方图

这是 B 与 A 的概率的散点图。

散点图

3个回答

不正确的评分规则,例如正确分类的比例、敏感性和特异性不仅是任意的(在选择阈值时)而且是不正确的,即它们具有最大化它们会导致虚假模型、不准确的预测和选择错误特征的属性. 他们不同意正确评分(对数似然;对数评分规则;Brier 评分)规则和指数(半正确评分规则 - ROC 曲线下面积;一致性概率;Wilcoxon 统计量;Somers'秩相关系数);这让我们对正确的评分规则更有信心。cDxy

  1. 当 B 在准确性方面“似乎”优于 A 时,为什么 A 的 AUC 优于 B?

    精度在阈值 0.5 处计算。而 AUC 是通过添加为所有可能的阈值计算的所有“准确性”来计算的。当计算所有阈值时,ROC 可以看作是这些精度的平均值(预期值)。

  2. 那么,我如何真正判断/比较 A 和 B 的分类性能?我的意思是,我使用 AUC 值吗?我使用 acc 值吗?为什么?

    这取决于。ROC 曲线告诉你你的模型在多大程度上区分了这两个类别,无论阈值在哪里。准确性是一种通常在类在训练集和测试集上保持相同平衡并且分数实际上是概率时效果很好的度量。如果违反此假设,ROC 会为您提供更多关于模型将如何表现的提示(但这只是一个想法)。

  3. 此外,当我对 A 和 B 应用适当的评分规则时,B 在对数损失、二次损失和球面损失方面优于 A(p < 0.001)。这些如何衡量关于 AUC 的分类性能的判断?

    我不知道。您必须更好地了解您的数据是关于什么的。每个模型能够从您的数据中理解什么。然后再决定哪个是最好的妥协。发生这种情况的原因是没有关于分类器性能的通用指标。

  4. A 的 ROC 图看起来非常平滑(它是一个弯曲的弧线),但 B 的 ROC 图看起来像一组连接线。为什么是这样?

    这可能是因为贝叶斯模型为您提供了这两个类之间的平滑过渡。这转化为许多阈值。这意味着 ROC 曲线上有很多点。由于在输入空间的较大区域上具有相同值的预测,第二个模型可能产生较少的值。基本上,第一条ROC曲线也是由线组成的,唯一的区别是相邻的小线太多了,你把它看成一条曲线。

当 B 在准确性方面“似乎”优于 A 时,为什么 A 的 AUC 优于 B?

首先,虽然截止值 (0.5) 相同,但 A 和 B 之间根本没有可比性。事实上,它看起来与您的直方图完全不同!看 B:你所有的预测都 < 0.5。

第二,为什么B这么准确?因为阶级不平衡。在测试 B 中,您有 19138 个负例和 6687 个正例(我不清楚为什么 A 中的数字不同:可能缺少值?)。这意味着,通过简单地说一切都是负面的,我已经可以达到相当不错的准确率:精确 19138 / (19138 + 6687) = 74%。请注意,除了类之间存在不平衡这一事实之外,这完全不需要任何知识:即使是最愚蠢的模型也可以做到这一点!

这正是测试 B 在 0.5 阈值时所做的……您(几乎)只得到负面预测。

A 更是鱼龙混杂。虽然它的准确度略低,但请注意,它的灵敏度在这个截止值时要高得多......

最后,您无法将准确性(一个阈值的性能)与 AUC(所有可能阈值的平均性能)进行比较。由于这些指标衡量不同的事物,因此它们不同也就不足为奇了。

那么,我如何真正判断/比较 A 和 B 的分类性能呢?我的意思是,我使用 AUC 值吗?我使用 acc 值吗?为什么?

此外,当我对 A 和 B 应用适当的评分规则时,B 在对数损失、二次损失和球面损失方面优于 A(p < 0.001)。这些对判断 AUC 的分类性能有何影响?

你必须思考:你真正想做的是什么?什么是重要的?最终,只有您可以根据您对问题的了解来回答这个问题。也许 AUC 是有道理的(当您真正考虑它时,它很少真正做到,除非您不想自己做出决定但让其他人这样做 - 如果您正在制作一个供他人使用的工具,那最有可能),也许准确度(如果你需要一个二进制,去不去的答案),但可能在不同的阈值,可能是其他一些更连续的措施,也许是弗兰克哈雷尔建议的措施之一......如前所述,没有普遍的问题这里。

A 的 ROC 图看起来非常平滑(它是一个弯曲的弧线),但 B 的 ROC 图看起来像一组连接线。为什么是这样?

回到您在直方图上显示的预测。A 为您提供连续或几乎连续的预测。相反,B 主要只返回几个不同的值(正如您可以从“尖峰”直方图看到的那样)。

在 ROC 曲线中,每个点对应一个阈值。在 A 中,你有很多阈值(因为预测是连续的),所以曲线是平滑的。在 B 中,您只有几个阈值,因此曲线看起来从一个 SN/SP “跳跃”到另一个。

当敏感性仅发生变化时,您会看到垂直跳跃(阈值仅对正例产生差异),当特异性仅发生变化时会看到水平跳跃(阈值仅对负例产生差异),当阈值的变化影响两个类时,您会看到对角线跳跃。