6

我有以下 ROC 曲线:

ROC曲线

它不会以 1.0 结束,因为我的预测包括零,例如

预测 = [0.9, 0.1, 0.8, 0.0]

对于 ROC 曲线,我采用 top-k 预测,首先是 {0.9},然后是 {0.9, 0.8} 等。如果预测中不再有 > 0 的值,则预测不再随着 k 的增加而改变。

所以我不能得到一个真正的负值为零,并且由于误报率为 fp/(fp+tn),曲线在达到 1 之前就结束了。

现在,我是否也应该人为地使用零进行预测,或者如果曲线就这样结束就可以了吗?使用零也感觉不对。还是我错过了什么?

4

2 回答 2

8

ROC 曲线显示了在将阈值设置为不同值时,假阳性和假阴性之间可能的权衡。在一个极端情况下,您可以将阈值设置得如此之低,以至于将所有内容都标记为阳性,从而得到 0 的误报率和 1 的误报率。在另一个极端情况下,您可以将阈值设置得如此之高,以至于将所有内容都标记为作为阴性,给你一个假阴性率 1 和一个假阳性率 0。

虽然这些退化情况在实践中没有用,但它们在理论上仍然是有效的权衡,并且是 ROC 曲线的正常部分。

于 2012-08-31T15:51:27.527 回答
1

是的当然!正如 Antimony 之前提到的,ROC 曲线用于显示假阳性率和真阳性率之间的权衡。我记得,有一次我在数据上训练了一个神经网络,并且在我运行模型的 90% 的时间内,我的误报率都为 0(因为 fp 为 0)。太棒了!因为我的 TPR 大部分时间都是 1,所以我的 ROC 曲线有点奇怪,因为它主要是 y 轴(TPR 轴)上的一些点。

您的模型运行良好,因为您的 FPR 没有超出某些特定值。

让我举个例子,对于特定的输入变量,我的模型如下工作: 预测输出:[0.97, 5.78E-4, 6.15E-4] 实际输出:[1.0, 0.0, 0.0]

您可以看到该模型的预测非常完美,因为第一个值是对应类别 1 的预测值,很容易与其他两个值区分开来。另外,因为其他两个值,我的意思是 [5.78E-4, 6.15E-4],与 0.97 相比非常小。对于每个截止值,0.97 将映射到 1,另外两个值映射到 0。我们可以看到,无论截止值是多少,TPR 都很高,FPR 为零。

于 2016-11-06T02:51:53.653 回答