为什么我的 ROC 曲线是这样的(对吗?)

机器算法验证 机器学习 物流 数据可视化
2022-04-03 06:08:20

我为多元逻辑回归生成了 ROC 曲线。它看起来正确吗?

这就是我所做的:

  1. 解决θ0+θ1X1+θ2X2...=Y为了θs
  2. 遍历所有输入Xi并计算预测Yi对于各种截止值(阈值)从01, 递增0.01
  3. 对于每一个Xi和预测的Yi, 与原作比较Yi得到假阳性(FP)、假阴性(FN)、真阳性(TP)和真阴性(TN)
  4. 计算Sensitivity=TP/(TP+FN)Specificity=TN/(FP+TN)对于所有这些值并将它们存储在两个不同的向量中。
  5. 绘制 ROC 曲线Sensitivityv/sSpecificity如下所示

请有人能告诉我这里出了什么问题吗?

ROC曲线

1个回答

ROC曲线101

ROC 曲线可视化分类器对各种保守主义水平的预测性能(通过置信度分数衡量)。简单来说,它说明了您为提高真阳性率而付出的假阳性率的代价。保守性通过置信度分数的阈值来控制,以分配正面和负面标签。

x 轴可以解释为分类器自由主义的衡量标准,描述了其误报率(1-特异性)。y 轴表示检测阳性的能力,描述分类器的真实阳性率(灵敏度)。一个完美分类器的 ROC 曲线经过(0,1),这意味着它可以正确分类所有的正例,而不会出现一个误报这导致恰好曲线下的面积1.

直观地说,一个更保守的分类器(将较少的东西标记为积极的)比一个更自由的分类器具有更高的精度和更低的灵敏度。当阳性预测的阈值降低时(例如,所需的阳性置信度分数降低),假阳性率和灵敏度都单调上升。这就是为什么 ROC 曲线总是单调增加的原因

绘制 ROC 曲线

正如您所说,您不需要计算各种阈值的预测。计算 ROC 曲线是根据您的分类器(例如您的逻辑回归模型)产生的排名来完成的。

使用该模型对每个测试点进行一次预测。你会得到一个置信度分数的向量,我们称之为Y^. 使用此向量,您可以生成完整的 ROC 曲线(或至少对其进行估计)。不同的价值观Y^ 你的门槛。由于您使用逻辑回归,因此置信度得分Y^是概率,例如[0,1].

现在,只需遍历排序值并随时调整 TP/TN/FP/FN,您就可以逐点计算 ROC 曲线。ROC 曲线中的点数等于Y^,假设在预测中没有联系。

要绘制最终结果,请使用以零阶保持 (ZOH) 绘制的函数,而不是点之间的线性插值,例如 MATLABstairsstaircase.plotR。在计算曲线下面积 (AUC) 时也要记住这一点。如果您使用线性插值而不是 ZOH 来计算 AUC,您实际上会得到凸包下的区域 (AUCH)。