paper 阅读: An introduction to ROC analysis

本文深入探讨了ROC曲线的概念,包括ROC空间、分类器性能、随机猜测、类倾斜及其对类别不平衡的不敏感性。ROC曲线通过权衡真正例率和假正例率来评估分类器性能,而精度等其他指标可能受类别比例影响。文章还讨论了ROC曲线的生成方法,并指出在类别比例变化时,ROC曲线保持不变,但精确度等指标会变化。
摘要由CSDN通过智能技术生成

发布于2005年,附论文链接如下:

https://ccrma.stanford.edu/workshops/mir2009/references/ROCintro.pdf

之前一直都是从各种博客上了解ROC的,最近才看到这一篇paper。 

目录

写在前面

ROC space

先看直接预测类别的

关于随机

ROC曲线

相对分数与绝对分数

类倾斜

高效的生成ROC曲线


写在前面

用 True(T)和 False(F)分别表示预测是正确还是错误。
用 positive(P)和 negative(N)分别表示预测为正例和预测为负例。

TPR = R = \frac{TP}{TP + FN} , [TP] / [正样本数目]

FPR = \frac{FP}{FP+TN},[FP]/[负样本数目]

P = \frac{TP}{TP+FP} , [TP] / [预测为正的数目]

accuracy = \frac{TP+TN}{FP+FN},  [预测正确的数目] / [预测错误的数目]

F-measure = \frac{2}{1/P + 1/R}

分类任务有两类输出:一类是直接输出离散值,即直接预测类别;一类是输出连续值,可以理解为属于正例的概率。

ROC space

ROC曲线是用来权衡收益(true positive)和损失(false positive)的。

先看直接预测类别的

那些直接预测类别的分类器,仅能产生出一对(fpr,tpr),具体的表现在ROC的图上就是一个单独的点。我们知道ROC曲线可以通过卡阈值来得到一堆(fpr,tpr)的pair对,它们的连线就是我们常见的ROC曲线。但是直接预测标签的,只能输出离散值如0/1,这就不能卡不同阈值来得到一堆(fpr,tpr)的pair对了。

一些特殊的点的解释:

(0,0),表示 tpr 和 fpr 均为0,即 TP 和 FP 均为0,也即分类器从不会将样本判为正例,所有的预测类别均是负例。(1,1)表示 tpr 和 fpr 均为1,即 TP 和正样本数目相等,即所有的正例均预测为正,FP 于负样本数目相等,即所有的负例均预测为正,也即分类器给出全是正例的判定。(0,1)表示完美的分类器。

若在ROC曲线的左上半且临近X轴,表明该分类器比较保守,它们仅在置信度很高的情况下判为正例,所以很少产生FP(将负样本预测为正),但是它们的TP比例也很少。例如相对于B,A比较保守,具体表现为A的横纵坐标均小于B的横纵坐标。现实世界的许多场景被大量的负例支配,因此ROC图最左侧的性能变得更加重要。

关于随机

对角线 y=x 表示随机猜测类别的策略。例如若一个分类器以50%的概率随机预测为正类,那么它可以预期得到一半的正类和一半的负类;这产生ROC空间中的点(0.5,0.5)。如果它在90%的概率内预测为正类,那么它可以预期得到90%的阳性正确率,但其假阳性率也将增加到90%,在ROC空间中产生(0.9,0.9),与样本中正负比例不相干,随机意味着一个样本以p的概率预测为正,也即正样本是以p的概率预测为正,这就是 tpr ,负样本以p的概率预测为正,这就是fpr,可见 tpr=fpr=p 。

如果我们否定一个分类器,也就是说,在每一个实例上反转它的分类决策,那么它的真阳性分类就变成假阴性错误,而假阳性就变成真阴性。因此,任何在右下三角中产生点的分类器都可以被否定以在左上三角中产生一个点 。Therefore, any classifier that produces a point in the lower right triangle can be negated to produce a point in the upper left triangle。例如反转后,E就得到B。这种可以反转的性质也是由于分母分别是正样本数目和负样本数目,与预测类别无关。举例如下,可见反转前后两个tpr之和为1,两个fpr之和也为1,原本在右下区域的【tpr < fpr,即 1-tpr > 1-fpr】,反转后就是tpr>fpr,在左上区域。

反转前
预测为正预测为负
正样本ab
负样本cd
反转后
预测为正预测为负
正样本ba
负样本dc

ROC曲线

这里指预测是连续值,并不一定是严格意义上代表概率。由于样本数目有限ROC曲线是阶跃的形式,随着样本数目增多,ROC曲线会变得光滑。PR曲线并不是一直降的(中间可能有反复);ROC曲线是一直上升的(或者说不会存在下降的地方)。

 将预测值逆序排序,先卡一个很大的正数做阈值,这时候分类器不会给出预测正的决策,即图上的点(0,0),随着我们降低阈值到最大的输出值(对应图上的0.9),这时候只有一个样本被判定为正样本,对应图上的(0,0.1)。直至最后我们将阈值降到最小输出值(图上的0.1),这时候所有样本均被判为正,对应图上的(1,1)。貌似在保守区ROC曲线上来看表现的更好,ROC曲线在(0.1,0.5),对应的阈值是0.54(而不是0.5,This is equivalent to saying that the classifier is better at identifying likely positives than at identifying likely negatives),处达到最大accuracy(70%)。

相对分数与绝对分数

分类器不需要产生准确的、校准的概率估计;它只需要产生相对准确的分数来区分正例和负例。

关于完美分类器的理解,上图是采用朴素贝叶斯做分类器的预测结果,我们看ROC曲线,它从(0,0)直接竖直到了(0,1)再水平到了(1,1),按之前所说这就是完美分类器。它能很好的区分正例和负例(确实将正例排在负例之前)。但是我们看 accuracy ,阈值取0.5,10个样本中共预测错了2个样本, accuracy=80%,从 accuracy 来说它并不是完美的?文中认为若预测值能代表正例的概率,那么用 accuracy 来衡量就是合适的,但通常来说预测值并不完全等价于正例的概率。还有一种说法是预测值没有得到很好的校准来使它能表达正例的概率。阈值取0.5得到80%的 accuracy ,若按照先验阈值取6/10=0.6能达到90%的accuracy。

其实从上图可以看到,对于本例,我们是可以卡到一个很好的阈值来使 accuacy 达到100%的,例如0.7。因为 ROC 过(1,1),即 auc=1,代表所有的正例都在所有的负例之前,即前面的全是正例,负例全在后面,排除分界线预测值相同的情况,实际上若分界线预测值相同,auc达不到1(因为计算auc的时候,预测值相同的均分 rank ),所以只要auc=1,从ROC来说是完美分类器,我们就能找到一个阈值,使得 accuracy 能达到 100% 。

类倾斜

ROC曲线对类别不均衡不敏感,具体表现为,改变测试集的正负样本比例并不会改变ROC曲线。我们看看混淆矩阵,正负样本的比例,和上面的一行(+)以及下面的一行(-)有关,任何评估指标若是跨行用到里面的值都会对类倾斜敏感,例如 accuracy , precision , lift 以及 F score 均用到了分布在两行中的值。随着类分布的变化,即使分类器性能没有变化,这些度量也会发生变化。ROC曲线涉及到 tpr 和 fpr ,这俩每一个都是严格的仅从一行中取值,所以不依赖类别比例。

在一些任务中,严重的类倾斜或者类别的比例发生巨大改变的情况并不常见。但是10或100级的类倾斜还是挺常见的。类别的比例发生巨大改变也是有可能的。文中举例,在医疗决策中,流行病可能会导致疾病的发病率随时间增加。在欺诈检测中,每个月和每个地方的欺诈比例差异很大。在很多例子中类别的普遍性或许会有很大的改变,但是类别的本质并不会改变。

Precision and recall 在信息检索中很常见,用于评估检索(分类)性能。在可以假设静态文档集的情况下,通常使用PR曲线;然而,它们也用于诸如网页检索之类的动态环境中,其中与查询无关的网页的数量(N)比P大很多数量级,并且随着网页的创建可能会随着时间的推移而稳步增加。

左侧两幅图使ROC曲线,右侧两幅图是PR曲线,上面两幅图正负比例1:1,下面两幅图the same two classifiers on the same domain, but the number of negative instances has been increased 10- fold.Note that the classifiers and the underlying concept has not changed; only the class distribution is different. a 和 c 几乎一样, b 和 d 的差别还挺大的。

高效的生成ROC曲线

我们可以简单地将测试样本按预测分数 f 递减排序,然后向下移动列表,一次处理一个样本,并在过程中更新TP和FP。以这种方式我们只需要一次线性扫描就能绘制ROC曲线。算法展示在下图,TP 和 FP 均从0开始,每遇到一个正样本就增加 TP ,每遇到一个负样本就增加 FP 。用 n 表示测试样本的数目,则该算法需要 O(nlgn)的时间排序需要O(n)的时间扫描,故总时间复杂度O(nlgn)。

 假设我们有一个测试集,其中有一系列样本,四个负例和六个正例,所有这些样本的预测分数都是f。算法1第1行中的排序没有对这些实例施加任何特定的排序,因为它们的 f 分数相等。那么应该如何绘制ROC曲线呢?乐观的话,对于同分数的样本,我们均把正样本排在前面,此时 ROC 对应于图中的Optimistic;若是悲观的话,对于同分数的样本,我们均把负样本排在前面,对应图中的Pessimistic,任何其它的排序将在由这两个极端形成的矩形内给出一组不同的步骤段。然而,ROC曲线应该代表分类器的预期性能,在缺乏任何其他信息的情况下,它是悲观和乐观段的平均值。该平均值是矩形的对角线,可以在ROC曲线算法中创建,方法是在处理所有相等 f 值的样本之前不绘制ROC点。这就是第7行的fprev变量和if语句所完成的,即若有多个样本预测值相等,且有正样本也有负样本,它们的rank是平分的。

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值