如果ROC曲线中的假阳性率不是以1.0结尾,这样可以吗?

时间:2012-08-31 14:54:01

标签: machine-learning information-retrieval false-positive roc

我有以下ROC曲线:

ROC Curve

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

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

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

所以我无法得到零的真正负值,并且由于误报率为fp /(fp + tn),因此曲线在达到1之前结束。

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

2 个答案:

答案 0 :(得分:6)

ROC曲线显示在将阈值设置为不同值时,误报和误报之间可能的权衡。在一个极端情况下,您可以将阈值设置得如此之低,以至于您将所有内容标记为正数,使您的误报率为0,误报率为1.另一方面,您可以将阈值设置得如此之高以至于您标记了所有内容为负数,给出假阴性率为1,误报率为0。

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

答案 1 :(得分:1)

是的,当然! 作为之前提到的锑,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为零。