我创建了一个预测 1 或 0 的网络。我现在正在研究该网络的 ROC 曲线,我必须找到 TN、FN、TP、FP。当我的网络的输出 >= 0.5 且期望输出为 1 时,我将其分类为真阳性。当它 >=0.5 且所需输出为 0 时,我将其归类为“误报”。这是正确的做法吗?只是想确定我的理解是否正确。
最佳答案
这完全取决于您如何使用网络,因为真/假正/负只是分析分类结果的一种形式,而不是网络的内部结构。根据您所写的内容,我假设您有一个具有一个输出节点的网络,该网络可以在 [0,1]
中产生值。如果您以这种方式使用您的模型,如果该值大于 0.5,那么您假设输出为 1
,否则为 0
,那么是的,您是正确的。一般来说,您应该考虑输出的“解释”是什么,并简单地使用 TP、FN 等的定义,其可概括如下:
your network
truth 1 0
1 TP FN
0 FP TN
我提到“解释”,因为事实上你总是使用一些函数g(output)
,它返回预测的类别号。在你的例子中,它只是g(output) = 1 iff output >= 0.5
。但在多类问题中,它可能是 g(output) = argmax(output),但它不一定是这样,特别是“绘制”(当两个或多个神经元具有相同的值时)怎么样?值(value))。为了计算真/假阳性/阴性,您应该始终只考虑最终分类。因此,您正在衡量模型的质量、学习过程以及这种“解释”g
。
还应该注意的是,“正类”和“负类”的概念通常是不明确的。在诸如检测某些物体/事件之类的问题中,很明显,“出现”是积极事件,“缺乏”是消极事件,但在许多其他问题中 - 例如性别分类,没有明确的解释。在这种情况下,人们应该仔细选择使用的指标,因为其中一些指标偏向于正面(或负面)示例(例如精度既不考虑真负例,也不考虑假负例)。
关于machine-learning - 对网络的输出进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574613/