ROC图中的对角线?

机器算法验证 机器学习
2022-04-21 16:02:02

我使用了 R ROCR 包来生成 ROC 图。我可以在我的情节中看到一条对角线。但是,我看到其他人生成的 ROC 曲线只有水平线和垂直线。

为什么我会得到这样的情节?在合法的 ROC 图中是否可能有对角线?

我在文献中看到的 ROC 曲线是这样的:

在此处输入图像描述

我生成的 ROC 图是:

在此处输入图像描述

2个回答

是的,这是“合法的”。如果从一个阈值跃迁到下一个阈值会同时增加误报和误报的数量,则结果是一条对角线。可能发生的两个原因:

  1. 您有 2 个具有相同阈值但具有不同基本事实的观测值
  2. 两个阈值之间的分辨率足够大 - 在这种情况下,您还可以检查两者之间的阈值。

假设您有以下结果:

score label
1.000 positive
0.900 negative
0.900 positive
0.900 negative
0.500 negative
0.200 positive

为可能的阈值 1.0、0.9、0.5、0.2 手动绘制 ROC 曲线,您得到一个倾斜的部分。

原因是重复分数

当心,那里有一些糟糕的 ROC 实现。我似乎只有一些样本值(通常您可以识别这一点,因为它们具有非常均匀的步长),并且我已经看到了简单地对数据进行排序然后获取第 n 个对象的实现 - 忽略重复的分数。如果输入数据是按标签预排序的,这会导致结果比预期的要好得多。这可以通过使用所有分数均为 0 的数据集来检测 - 唯一正确的结果是对角线和 0.5 的 AuC