【发布时间】:2017-10-15 22:54:39
【问题描述】:
这个问题是关于ROC曲线的,但是可以推广到Precision-Recall曲线。
您可能知道,行曲线是使用假阳性率 (FPR) 和真阳性率 (TPR) 绘制的,其中:
TPR = tp / (tp + fn ) // tp= true positives, fn = false negatives
FPR = fp / (fp + tn ) // fp = false positives, tn = true negatives
但是如果分母之一是 0 怎么办? TPR 的最优值为 1,而FPR 为 0(实际上 ROC 空间中的最优值是(0,1))。
如果我们使用 ROC 曲线来计算分类系统中的最佳阈值,这一点尤其重要。
例如,在我的情况下,我的系统对于特定配置永远不会返回 fp 或 tn,因此 FPR 始终以 0 作为分母
更新说明:
我正在使用 T-F/P-N 和 ROC 曲线来确定我的分类器的阈值。特别是,我为数据集中 w.r.t 中最相似元素的顶部-k 上的给定截止值计算这些值。给定的查询。因此,如果我们仅考虑 top-1 元素,则仅在非常相似的对象上计算 T-F/P-N,因此分类器不返回负数是非常现实的。结果,阈值非常严格,但分类器非常精确。诸如“很多次我不知道该回答什么,但当我回答时,我几乎 100% 地给出了正确答案”。
当然,如果我们增加k,就会出现负数并且阈值会增加。结果,分类器回答的频率更高,但错误结果的概率更高。
所以我认为我会保留k 作为调整参数,具体取决于所考虑的应用:如果我们想要一个非常精确的分类器,我们将设置一个小的k,否则如果我们考虑误报,我们可以选择一个更大的k。
我的申请:
我的应用是图片的相似度缓存:当收到查询时,系统会检查是否有“足够相似”的缓存图片。如果是,则返回相同的结果,否则查询后端系统。 “足够相似”是门槛。为了确定一个好的阈值,我们选择数据集图像的一个子集,在这个问题中称为“查询”。为了确定阈值,如上所述,作为第一种方法,我选择 top-1 元素,即与 w.r.t 最相似的图像。整个数据集中的查询(设置图像之一)。这是为每个查询完成的。从那里,我使用 ROC 曲线计算阈值,如上所述。因此,如果我们使用n 查询,我们将获得n 预测。
如果我们使用这种方法,得到的阈值是非常严格的,因为我们考虑到 top-1 元素,平均距离非常小(而且非常精确),因此我们得到了一个严格的阈值。
如果我们使用 top-k 方法(比如k=10),我们会选择最相似的顶部k 图像,并执行与上述相同的方法。阈值变大,我们有更多的缓存命中,但误报的概率也更高。在这种情况下,我们获得k*n 预测。如果我们将k 设置为大小为m 的整个数据集,我们将获得k*m 预测。
我希望这能澄清我之前的更新
【问题讨论】:
-
没有 FP 和没有 TN 表明你没有反例,只有正面。我不太确定在这种情况下还有什么需要优化的......只需使用虚拟分类器将所有内容预测为正面?
-
所以基本上你实际上有一种三元分类器,可以说“肯定”、“否定”或“不打电话”,对吗?
-
实际上我没有得到“我为数据集中前 k 个最相似元素的给定截止值计算这些值”。截止是在决策阈值上,而不是在数据点上。
-
@Calimo 再次感谢您的评论。我再次更新了我的问题,解释了我的应用程序和 top-k 概念,我希望能澄清一切。
标签: information-retrieval roc precision-recall