了解ROC曲线


57

我在理解ROC曲线时遇到问题。

如果我从训练集的每个唯一子集构建不同的模型并使用它来产生概率,ROC曲线下的面积是否有任何优势/改善?例如,如果具有值{ 一个b b b b },和我建立模型通过使用一个从第一-第四值ÿ的和8-9值ÿ和构建使用剩余火车数据的模型B。最后,产生概率。任何想法/意见将不胜感激。y{a,a,a,a,b,b,b,b}AayyB

这是用于我的问题的更好解释的r代码:

Y    = factor(0,0,0,0,1,1,1,1)
X    = matirx(rnorm(16,8,2))
ind  = c(1,4,8,9)
ind2 = -ind

mod_A    = rpart(Y[ind]~X[ind,])
mod_B    = rpart(Y[-ind]~X[-ind,])
mod_full = rpart(Y~X)

pred = numeric(8)
pred_combine[ind]  = predict(mod_A,type='prob')
pred_combine[-ind] = predict(mod_B,type='prob')
pred_full          = predict(mod_full, type='prob')

所以我的问题是,的ROC曲线下面积pred_combineVS pred_full


3
一个更好的例子将大大改善这个问题。
mpiktas 2014年

我的理解是您想通过选择一些特定样本来增加AUC?如果这是您的目的,那么我坚信这种有偏见的样本选择方法是完全错误的,至少在您的目的是为分类性能找到一个好的衡量标准的情况下。
rapaio

Answers:


174

我不确定是否有问题,但是由于标题要求解释ROC曲线,因此我将尝试。

ROC曲线用于查看分类器将正例和负例分开的程度,并确定将其分开的最佳阈值。

为了能够使用ROC曲线,您的分类器必须进行排名 -也就是说,它应该能够对示例进行排名,以使排名较高的示例更有可能是正面的。例如,逻辑回归输出概率,这是可用于排名的分数。

绘制ROC曲线

给定数据集和排名分类器:

  • 按分数从高到低的顺序排列测试示例
  • (0,0)
  • x
    • x1/pos
    • x1/neg

posneg

这张精美的gif动画图片应更清楚地说明此过程

建立曲线

yx

ROC下面积

roc下的区域

ROC曲线下方的区域(阴影部分)自然显示了曲线与基线的距离。基线为0.5,完美分类器为1。

您可以在以下问题中了解有关AUC ROC的更多信息:AUC代表什么?它代表什么?

选择最佳阈值

我将简要概述选择最佳阈值的过程,有关更多详细信息,请参见参考资料。

要选择最佳阈值,您可以将ROC曲线的每个点视为一个单独的分类器。这个微型分类器使用得分得到的分数作为+和-之间的边界(即,将当前分数之上的所有分数归为+)。

根据我们数据集中的pos / neg分数-在50%/ 50%的情况下平行于基线,您可以构建ISO精度线,并选择精度最高的线。

这是一张图片,说明了这一点,有关详细信息,我再次邀请您参考

选择最佳阈值

参考


感谢您的好评!很抱歉,我无法接受您的回答,看来我需要拥有15个以上的声誉:(
Tay Shin

只是好奇,您的步长将取决于分类器正确产生的正/负标签数量?即在gif中,步长向上为.1,如果您有一个额外的正标签(代替负标签),那么“曲线”最终将在垂直轴上变为1.1(或者我可能遗漏了一些东西) ?)。那么,在这种情况下,您的步长需要较小吗?
kyphos 2015年

不,步长取决于数据集中正/负示例的数量,而不取决于分类器的准确性。
阿列克谢·格里戈列夫

2
@gung理解。阿列克谢(Alexey):我认为应该是:正面肯定和错误正面,而不是正面和负面的例子。您可能可以看到我的答案版本,该版本已由gung还原。谢谢
Escachator

3
@AlexeyGrigorev,喜欢您给的答复并投票。我不确定是否有两个ROC定义。我在这里指的是ROC定义(en.wikipedia.org/wiki/Receiver_operating_characteristic),x轴应为假阳性率,即(预测数为正,但应为负)/(总数的#否),我认为在参考文献中,我认为x轴未绘制假阳性率,这不考虑(总阴性数)?
林马
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.