PR,ROC,AUC计算方法

受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。接受者操作特性曲线就是以虚报概率为横轴,击中概率为纵轴所组成的坐标图,和被试在特定刺激条件下由于采用不同的判断标准得出的不同结果画出的曲线。

ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。

1.ROC曲线能很容易地查出任意界限值时的对疾病的识别能力。
2.选择最佳的诊断界限值。ROC曲线越靠近左上角,试验的 准确性就越高。最靠近左上角的ROC曲线的点是错误最少的最好 阈值,其假阳性和假阴性的总数最少。
3.两种或两种以上不同诊断试验对疾病识别能力的比较。在对同一种疾病的两种或两种以上诊断方法进行比较时,可将各试验的ROC曲线绘制到同一坐标中,以直观地鉴别优劣,靠近左上角的ROC曲线所代表的受试者工作最准确。亦可通过分别计算各个试验的ROC曲线下的面积(AUC)进行比较,哪一种试验的 AUC最大,则哪一种试验的诊断价值最佳。
ROC曲线
1.ROC曲线绘制。依据专业知识,对疾病组和参照组测定结果进行分析,确定测定值的上下限、 组距以及截断点(cut-off point),按选择的组距间隔列出累积 频数分布表,分别计算出所有截断点的敏感性、 特异性和假阳性率(1-特异性)。以 敏感性为纵坐标代表 真阳性率,(1- 特异性)为横坐标代表 假阳性率,作图绘成ROC曲线。
2.ROC曲线评价 统计量计算。ROC曲线下的面积值在1.0和0.5之间。在AUC>0.5的情况下,AUC越接近于1,说明诊断效果越好。AUC在 0.5~0.7时有较低准确性,AUC在0.7~0.9时有一定准确性,AUC在0.9以上时有较高准确性。AUC=0.5时,说明诊断方法完全不起作用,无诊断价值。AUC<0.5不符合真实情况,在实际中极少出现。
3.两种诊断方法的统计学比较。两种诊断方法的比较时,根据不同的试验设计可采用以下两种方法:①当两种诊断方法分别在不同受试者身上进行时,采用成组 比较法。②如果两种诊断方法在同一受试者身上进行时,采用配对比较法。

一,简介

对训练出的分类器的分类效果的评估,常见有精确度(accuracy),PR(precision- recall), precision等,一般来说训练样本数量越大,则的储的

用的就是分类器的精确度(accuracy),在某些如推荐或信息获取领域还会组合使用precision-recall作为评价指标。因为 你用于训练分类器的样本本身就是总体的一个抽样,所以这些指标的数值也仅仅是一种统计上的反映,如果你做多次抽样训练,跟别的随机变量一样,它一样会有期 望、方差、置信区间这些概念。理论上说,训练样本量越大,你得到的这些指标的可信度就越高(即它们以某个概率落在的置信区间越窄)。不幸的是,实际中你未 必会有那么多的样本,所以机器学习工作者设计出很多种方法来应对数据量不足情况下分类器的训练与评估,如k步交叉检验、留1法、boostrap等等

分类、检索中评价的指标比较多,precision,recall,accuracy,F1,ROC,PRcurve

二,ROC介绍

很多时候,我们希望对一个二值分类器的性能进行评价,AUC正是这样一种用来度量分类模型好坏的一个标准。现实中样本在不同类别上的不均衡分布(class distribution imbalance problem),使得accuracy这样的传统的度量标准不能恰当的反应分类器的性能。举个例子:测试样本中有A类样本90个,B 类样本10个。若某个分类器简单的将所有样本都划分成A类,那么在这个测试样本中,它的准确率仍为90%,这显示是不合理的。为了解决上述问题,人们从医疗分析领域引入了一种新的分类模型performance评判方法——ROC分析。在介绍ROC之前,首先讨论一下混淆矩阵(Confusion matrix)。

混淆矩阵是监督学习中的一种可视化工具,主要用于比较分类结果和实例的真实信息(outcom vs.  ground truth)。矩阵中的每一行代表实例的预测类别,每一列代表实例的真实类别。在混淆矩阵中,每一个实例可以划分为四种类型之一,True Positive\False Positive\False Negative\True Negetive(TP\FP\FN\TN),如图1所示。其中,Positive代表预测实例来自正类,Negetive代表预测实例来自负类;True代表预测正确,False代表预测错误。

Confusion Matrix

图1:Confusion Matrix

由混淆矩阵可以计算一系列的评价指标,如accurancy、precision、recall等等。

fp rate = FP/N        tp rate = TP/P

precision = TP/(TP + FN)       recall = TP/P

accuracy = (TP + TN) / (P + N)

F-measure = 2/( 1/precision + 1/recall)

几个参数的解释:

precision和recall是从信息检索来的定义,

precision为查准率-----指得是检测的相关文献量检出文献总量的比率,是衡量信息检索系统检出文献的准确                                        度的尺度。

recall 为查全率------检测出的相关文献量检索系统中相关文献总量的比率,是衡量信息检索系统检出相关文                                     献能力的尺度

可以通过一个例子来解释

一个7类的混淆矩阵,每类样本数量为100

confus =

 69            2              4              6           1          14           4
        3             70            6              2           7           6            6
        4              6             66             2           5           6          11
        2              2             18            51          9          12          6
4              8              1               2          80         3           2
7              6               3              7           2           67        8
11            6               7              5           7           6          58

accuracy = 0.6586

numcorrect = 461

precision =0.6900    0.7000    0.6286    0.6800    0.7207    0.5877    0.6105

recall =0.6900    0.7000    0.6600    0.5100    0.8000    0.6700    0.5800

F =0.6900    0.7000    0.6439    0.5829    0.7583    0.6262    0.5949

confus矩阵中每一行和等于该类的样本和=100;但是每一列就不是100了,每一列其实的意义,就是信息检索的返回的所有结果

假设我们用类别3的标签进行搜索,那么会返回confus中第3列的所有数据,没问题吧?因为分到第3类的确实是这些数据,一共有105个,因为有其他的类也分到这个类中了呗。

所以第三类的查准率=检索出的相关文档数目(66)/检索返回的所有的文档数目(105)=0.6288=precision(3)。

查全率那就是检索出的文档数目(66)/数据库中的第三类的所有文档数目(检索出的第三类+没有检索出的第三类=confus第三行的和=100)=0.66=recall(3)。


三,ROC原理介绍

回到ROC上来, 百度百科对roc的解释如下:ROC曲线指受试者工作特征曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大(AUC area  under roc curve),诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。

ROC关注两个指标:

true positive rate ( TPR = TP / [TP + FN] ) ------正例分对的概率

false positive rate ( FPR = FP / [FP + TN] ) ------负例错分的概率

直观上,TPR代表能将正例分对的概率,FPR代表将负例错分为正例的概率,FPR 预测的是正例,但是实际上是负例。这部分在负例中占得比例。也就是将负例错分为正例的概率。

在ROC 空间中,每个点的横坐标是FPR,纵坐标是TPR,这也就描绘了分类器在TP(真正的正例)和FP(错误的正例)间的trade-off。ROC的主要分析工具是一个画在ROC空间的曲线——ROC curve。我们知道,对于二值分类问题,实例的值往往是连续值,我们通过设定一个阈值,将实例分类到正类或者负类(比如大于阈值划分为正类)。因此我们可以变化阈值,根据不同的阈值进行分类,根据分类结果计算得到ROC空间中相应的点,连接这些点就形成ROC curve。ROC curve经过(0,0)(1,1),实际上(0, 0)和(1, 1)连线形成的ROC curve实际上代表的是一个随机分类器。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。如图2所示。

ROC Curve

图2 ROC Curve

四,AUC介绍

用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。

计算ROC curve的AUC值的代码可以在这找到。


五,ROC中最优P-0的计算

p_0为一个阈值,通过这个阈值来分类,保证TPR同时代价要比FPR尽量小,具体操作再去查看论文吧,


六,Precision-Recall Corve曲线的画法

不过Precision-Recall Corve对于每一类的画法还是很有讲究的,我们知道对于二类问题,像是检索中的问题,最后的查全率、查准率基本都是最后计算一对值就行了,但是就一对值,一个点是画不出曲线来的,所以在实际的曲线过程中,是这样的:

1、首先得分为正负两类,多类问题真对每一类都可以映射过去

2、按照决策值(分类问题每一个样本肯定会有一个支持分类的概率或者置信度等等,像是libsvm的dec_values的矩阵),按照从小到大的顺序进行排序

3、然后分别计算全部样本、全本样本-1、全部样本-2、...........、一直计算完毕,每一次都会有查全率查准率,就可以曲线了,这里我说的很粗糙,详细的可以查看我的代码,当然也有函数参考的别人的,也做了说明。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值