ROC曲线不平滑、局部有斜线,说明啥

哇,第一次有人邀请我回答问题,好兴奋!———————正经分割线———————我觉得你的curve看起来没问题啊。一,这里你可能混淆了两个变量,一个是test样本的数量,一个是取的threshold的数量。简单来说,你的roc curve 上的每个拐角点/阶梯,就是一个threshold。你取的threshold 越多,你的roc curve就越平滑。这里跟你的test样本数量没有必然联系。二,出现斜线/对角线,表示在你这两个threshold 之间,同时增加了TP和FP,也就是说,没有任何的trade off。一般造成这个情况有两个原因: 你有两个test样本在同一个threshold,但分别为正反例。你取的这两个threshold间距太大了。你可以加入一个中间值看看。还有就是我不知道你用的什么工具画的roc curve。不同的工具,处理这种情况的方法不同,你可以再看看。请给好评哦亲^_^
■网友
我感觉你存在疑惑的原因是因为没有弄清楚ROC 曲线是怎么画出来的。1. 有倾斜是正常的,出现倾斜说明分类器把分类阈值设为当前值时出现了一个正例和一个反例同时被判别为正例。2.即使数据很多,不平滑也是可能出现的时间有点晚了,我用手机不好操作,你可以去我专栏看一篇文章,那篇解答周志华西瓜书习题2.5的文章,看完你应该就明白了。不明白我明天继续补充吧。
■网友
局部有斜线是因为在那个位置增加阈值tp和fp同时增大,此时无论上凸还是下凸都不能客观地反映事实。没有斜线的roc图是因为他的样本分布得太均匀了,以至于不会出现上述情况。阈值提升的步幅大这个问题有几种可能。我觉得最大的可能性还是样本分布太不均匀了,60%的tp出现在第一个fp之前,40%的fp出现在最后一个tp之后,就很能说明问题。当然其他回答提到可能分类器过拟合,也有可能。前段时间刚好看了一篇roc的introduction,就在wiki页面的reference里面,写得很详细,推荐题主去看一看那篇文章同时也推荐了一种画图算法。不要手动去设阈值划分,而是把所有样本的p值算出来,再排序,然后逐个地往里添加(比如“一直画竖线直到出现一个fp”)关于预测值相同的解释。这种情况在所有的假设检验(二分类)里面都存在。一般的,正例和反例会产生自两个不同的分布模型,而且这两个模型需有一定偏离,因此才可被区分。大部分情况下,这两个分布又会在预测器的值域的某一个子集上重叠,唯一的区别是它们的值落在这个区间上的概率不一样。正是这个重叠区间的存在(有一些反例的预测值可能小于等于正例)导致了第一类错误和第二类错误的存在。这个客观存在是解决不掉的,如果过分强调正反样本的区分,又会导致过拟合,失去泛化能力。这也是为什么考察一个分类器的时候,我们关注的是它能否在保证规定的fp以下有足够大的tp。贴一张图在下面ROC曲线不平滑、局部有斜线,说明啥


■网友
数据集比较小的话 ROC 曲线确实会出现锯齿状。你只需要将 plot方法换成 scatter就能明白了。

比如下面我使用LR对伪造数据进行预测的 ROC 曲线:
ROC曲线不平滑、局部有斜线,说明啥

ROC曲线不平滑、局部有斜线,说明啥



■网友
你把测试集对应的预测分数输出出来的话应该会发现很多分数是一样的,所以才会出现这种情况。
■网友
样本太少了吧。
■网友
【ROC曲线不平滑、局部有斜线,说明啥】 泻药,出现这种情况是因为样本太少出现过拟合


    推荐阅读