我知道,ROC曲线是用来评估分类器的性能的。但是是否可以为回归模型生成 ROC 曲线?如果是,如何?
如何创建 ROC 曲线来评估回归模型的性能?
你不能,真的。
(二元)分类任务有一小部分可能的结果:您要么正确检测/拒绝某事,要么没有。ROC 曲线衡量这些之间的权衡(特别是假阳性率和真阳性率之间)。在这种情况下,没有“接近但不完全正确”的概念,但通常有一个“旋钮”你可以转动以增加你的真阳性率(以牺牲更多的假阳性为代价),反之亦然反之亦然。
回归通常(*)进行连续预测。有这么多可能的结果,该模型几乎不可能做出准确的预测(想象一下将亚马逊的年销售额预测到一美分——这不会发生)。也没有 TP/FP 权衡。
相反,人们使用损失函数来衡量回归模型的性能,该损失函数描述了一定数量的错误的好坏。例如,一个常见的损失函数是均方误差:。这对大错误进行了很多惩罚,但对较小错误的容忍度更高。
* 在某些情况下,可以通过添加决策规则将回归转换为分类问题。例如,逻辑回归尽管有名字,但经常被用作分类器。“裸”逻辑回归输出是示例(即特征向量)属于正类的概率:。
但是,您可以使用决策规则将该示例分配给一个类。显而易见的决策规则是将其分配给更有可能的类别:如果概率至少为一半,则为正类,否则为负类。的例子是正类,你可以转动 TP/FP旋钮并生成 ROC 曲线。
综上所述,对于大多数回归任务,您要预测一些连续的东西,ROC 分析是一个奇怪的选择。
我没有足够的声誉来对马特的评论发表评论,这就是为什么我通过“答案”添加一些东西。也许我错了,但是如果您有二元结果(y 变量),您可以使用回归作为分类器,例如 logit/probit 模型。正如马特所说的那样,您的“旋钮”将是您选择查看 y*(例如线性回归的连续预测)为 y = 1 的阈值。您可以将此阈值用于 ROC .
编辑:我同意马特回答的 (*) 编辑。
示例:有一个连续变量 x 和一个二元变量 y。您可以做的是 y 在 x 上的正态回归。然后,您根据每个个体的 x 计算模型的预测,将这些预测称为 y*。比你寻找一个阈值 c 来做类似
你可以使用这个 c 进行 ROC 分析。(抱歉我的格式不好,这是我在这里的第一篇文章)
正如其他人所提到的,您无法计算线性回归模型的 AUC,因为没有真阳性或假阳性。
然而,AUC 与排名有关,更具体地说,是随机选择的正样本排名高于随机选择的负样本的概率。我们的预测当然是数字的,因此可以进行排名,不存在正面或负面观察的想法,但对于随机选择的一对预测,会有明显的正面和负面,因为一个值将高于另一个,这在我们的基本真实值(不包括相同值对)中也是如此。因此,每对预测可以通过它们是否与在基本事实中观察到的顺序相同来评估为正确/错误的排名。
重复此操作以获得足够数量的预测并获取正确评估的平均数量将为您提供类似于 ROC AUC 的“排名准确度”。排名准确度为 1 意味着,如果您按照预测值对数据点进行排序,它们的顺序将与按照真实值对它们进行排序的顺序完全相同。排名准确度为 0 意味着这两个序列将完全相反。需要注意的重要一点是,预测值的实际误差可能很大,并且该指标不一定能捕捉到这一点,例如,如果您的所有预测都恰好是其真实值的 100 倍,您将观察到最大排名准确度为 1。
Rendle 等人使用了这种评估连续预测的排名方法。在BPR:来自隐式反馈的贝叶斯个性化排名 (2009) [ Arxiv ] 中得出他们的优化标准。该论文的第 4.1.1 节在数学上演示了 AUC 和这种方法之间的类比。
一个有趣的指标,如果最终值不如它们的相对值重要(例如在预期输出通常是有序列表的推荐中),则很有用。