P/R和ROC是两个不同的评价指标和计算方式,一般情况下,检索用准确率、召回率、F1、AP和mAP,分类、识别等用ROC和AUC(特异性和敏感性是ROC当中的一个部分)。

准确率、召回率、F1、AP和mAP这几个指标需要依次看,不然直接看AP和mAP看不明白。而ROC和AUC可以直接看不需要看前面的指标。

PR曲线和ROC曲线上点都是对预测的数据进行划分,首先都是按照置信度排序,而PR是一个个数据统计过去得到当前点的Precision和Recall,ROC是前百分比被认定为正例后计算的敏感性和1-特异性。

AP:对于Recall >= 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1,我们选取此时Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。此时Aeroplane类别的 AP = (0.14-0)*1 + (0.29-0.14)*1 + (0.43-0.29)*0.5 + (0.57-0.43)*0.5 + (0.71-0.57)*0.5 + (1-0.71)*0 = 0.5

AUC:

目录

准确率、召回率、F1

ROC和AUC


准确率、召回率、F1

信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)准确率(Precision Rate),召回率也叫查全率,准确率也叫查准率,概念公式:

召回率(Recall)      =  系统检索到的相关文件 / 系统所有相关的文件总数

准确率(Precision) =  系统检索到的相关文件 / 系统所有检索到的文件总数

我对召回率和准确率的理解是:

准确率,相当于自己和自己比,我检索(预测)了100个内容,其中正真正确的只有80个,我的准确率就为80%;

召回率,相当于自己和别人(也就是真实值)比,我检索(预测)了100个内容,其中正真正确的只有80个,而相关(正确)的内容却有90个,我还有10个没有找到,那么我的召回率就是8/9 x 100%。

图示表示如下:

注意:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了

这里“准确率高、召回率就低,召回率低、准确率高”这种情况,我是这么理解的。接下来有2个例子,例1不理解没关系(反正我胡诌的,手动笑哭),可以看看例2,例2是西瓜书上的例子。

例一:

假设你有1000万个相关内容,然后我规定一个检索条件,导致只检索到了500万个内容,但是真正相关的只有300万个内容,这是P1=300/500,R1=300/1000。我们从准确率P1可以看出检出的内容大概只有60%是正确的,按照正常的逻辑,我举例就要依据这个依据进行,而且随着逐渐逼近相关内容的总数,那么检索难度也会上升(就好比你做分类,你分对了99%,想让你进一步提升性能,你会发现很难,这就有点类似“越逼近真值,难度越大”),那么我接下来能检索出相关内容的准确率应该顶多就在60%附近(这里都是假设在极大范围内的数据内的测试,拥有一定的统计规律的前提下)。接下来我们放宽检索的条件,我们检索到了800万个内容,其中真正正确的大概率比480万小,我们不妨就选460万,那么这时P2=460/800,R2=470/1000,从结果可以看出P1>P2,R1<R2。

例二:

准确率和召回率是一对矛盾的度量.一般来说,准确率高时,召回率往往偏低;而召回率高时,准确率往往偏低.例如,若希望将好瓜尽可能多地选出来,则可通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了,但这样准确率就会较低;若希望选出的瓜中好瓜比例尽可能高,则可只挑选最有把握的瓜, 但这样就难免会漏掉不少好瓜,使得召回率较低.通常只有在一些简单任务中才可能使召回率和准确率都很高.

下面来看看P和R绘制的P-R曲线,也称P-R图。

咱们继续上面2个例子,并根据上面2个例子画图:

例一(检索):

有1000万个相关内容,然后算法A检索1万条内容,算一个P和R值,然后检索2万条内容,算一个P和R值,然后逐渐递增检索数量,不断计算P和R值,直到所有相关内容都被检索出来(当然不一定都能检索出来,画图也不需要都检索出来),这样就会有很多组P和R值,最后根据这些P和R值画出算法A的P-R曲线。然后算法B,算法C方法相同。

例二(分类):

在很多情形下,我们可根据学习器的预测结果对样例进行排序,排在前面的是学习器认为"最可能 "是正例的样本,排在最后的则是学习器认为"最不可能"是正例的样本。按此顺序逐个把样本作为正例进行预测 ,则每次可以计算出当前的召回率、准确率。以准确率为纵轴、召回率为横轴作图 ,就得到了查准率-查全率曲线 ,简称 " P-R 曲 线"显示该曲线的图称为" P-R图"图。

额外补充一个检测的例子

其实检测也很好理解,和例子二(分类)的例子有点像。具体这里就不展开介绍了,直接参考博客检测中的mAP的理解_mjiansun的专栏-CSDN博客_图像识别map

如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回。

图2.3中"平衡点 "(Break-Event Point , 简称 BEP)是"准确率=召回率"时的取值,如图2.3中学习器C的BEP是0.64 ,而基于BEP的比较,可认为学习器A优于B。但是BEP指标太简单了,所以需要一个更好的评价指标,这是就可以用F1来衡量。

公式基本上就是这样,但是如何算图1中的A、B、C、D呢?这需要人工标注,人工标注数据需要较多时间且枯燥,如果仅仅是做实验可以用用现成的语料。当然,还有一个办法,找个一个比较成熟的算法作为基准,用该算法的结果作为样本来进行比照,这个方法也有点问题,如果有现成的很好的算法,就不用再研究了。

AP和mAP(mean Average Precision),AP就是指PR曲线下方的面积,mAP指多个类别AP的平均值。

ROC和AUC

ROC和AUC是评价分类器的指标(注意这一定是分类的指标,分类也就意味着数量的总量一定,假设总量为C,而分类就是对这C个数据进行分类,不会出现大于C或者小于C个数量的结果。而之前检索指标中“相关”的总数和“检索”的总数是可以不相等的),上面第一个图的ABCD仍然使用,只是需要稍微变换变成了TP,FP,FN,TN,这里的TP+FP+FN+TN应该就是数据总量C。下图的P,N分别是实际的正样本数量和负样本数量,而P',N‘是预测的正样本数量和负样本数量,P+N=P'+N‘=C,TP+FN=P,FP+TN=N,TP+FP=P',FN+TN=N',所以你要自己举例凑数字时,用好这个观念那么凑数字就不麻烦了。比方说P=90,N=10,P'=80,N'=20,这时TP可以取70~80中的任意一个整数,比方说TP=70,那么FP=10,FN=20,TN=0。

关于ROC和AUC注意一点:

分类也是可以用准确率和召回率指标的,不过只能是某一类的准确率或者召回率。要是想算总的准确率,就得先算每一类的准确率,然后将每一类的准确率求和,然后除以类别数。

ROC的全名叫做受试者工作特征曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,敏感性是TPR,特异性是指TNR(TNR:true negative rate,描述识别出的负例占所有负例的比例,计算公式为:TNR= TN / (FP + TN) )。ROC是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。

ROC关注两个指标

True Positive Rate ( TPR )  = TP / [ TP + FN] ,TPR代表能将正例分对的概率

False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR代表将负例错分为正例的概率

在ROC 空间中,每个点的横坐标是FPR,纵坐标是TPR,这也就描绘了分类器在TP(真正的正例)和FP(错误的正例)间的trade-off。ROC的主要分析工具是一个画在ROC空间的曲线——ROC curve(sklearn.metrics.roc_curve — scikit-learn 1.0 documentation)。

这里我是这样理解TPR和FPR的:

预测正例中预测正确的和预测错误的分别和别人比。

错误的理解:

我喜欢举例,我就举了一个例子,让真正例数量上升,假正例数量减少或者不变,然后我发现和图像上展示的结果不太一样,我就很纳闷了。然后看了比人的举例,幡然醒悟,我这样举例变相增强了模型的能力,如果我一直这么举例下去,你会发现模型的真正例越来越多,这显然有违常理呀。所以以后举例不能乱举,一定要依据一定的条件。

正确的举例:

在一个二分类模型中,对于所得到的连续结果,假设已确定一个阈值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阈值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比例,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC。

Receiver Operating Characteristic,翻译为"接受者操作特性曲线",够拗口的。曲线由两个变量1-specificity 和 Sensitivity绘制. 1-specificity=FPR,即假正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。

下表是一个逻辑回归得到的结果。将得到的实数值按大到小划分成10个个数 相同的部分。

Percentile

实例数

正例数

1-特异度(%)

敏感度(%)

10

61797

4879

2.73

34.64

20

61797

2804

9.80

54.55

30

61797

2165

18.22

69.92

40

61797

1506

28.01

80.62

50

61797

987

38.90

87.62

60

61797

529

50.74

91.38

70

61797

365

62.93

93.97

80

61797

294

75.26

96.06

90

61797

297

87.59

98.17

100

61797

258

100.00

100.00

其正例数为此部分里实际的正类数。也就是说,将逻辑回归得到的结 果按从大到小排列,倘若以前10%的数值作为阈值,即将前10%的实例都划归为正类,6180个。其中,正确的个数为4879个,占所有正类的 4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301个负实例被错划为正类,占所有负类的1301 /47713*100%=2.73%,即1-特异度。以这两组值分别作为y值(敏感度)和x值(1-特异度),在excel中作散点图。得到ROC曲线如下(红色曲线与数据无关其只是一个参考,蓝色曲线是ROC曲线):

用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。

于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的Performance。

AUC的计算方式

AUC计算方法总结_mjiansun的专栏-CSDN博客

AUC计算工具:

AUCCalculator 0.2 - A Java program for finding AUC-ROC and AUC-PR

假阴性假阳性

假阳性率:得到了阳性结果,但这个阳性结果是假的。即在金标准判断无病(阴性)人群中,检测出为阳性的几率。(没病,但却检测结果说有病),为误诊率。 FPR=FP/N=FP/(FP+TN)=1-特异性

假阴性率:得到了阴性结果,但这个阴性结果是假的。即在金标准判断有病(阳性)人群中,检测出为阴性的几率。(有病,但却检测结果说没病),为漏诊率。FNR=FN/(TP+FN)=1-TPR

PR曲线和ROC曲线如何抉择问题

PR和ROC都是针对二分类设计的,所以使用多分类时,使用sigmoid函数作为最终的激活函数,单类的精确率和PR ROC是有对应关系的;但如果使用softmax,使用PR及ROC 与 精确率就存在了偏差,精确率是根据argmax的方式,而PR ROC是截断阈值的方式。

当TP,FP,FN都很小,TN很大时,适合选用PR曲线,曲线更为平滑。

当为了展示单个类别的指标时,适合选用PR曲线,能更好的展示该类别的好坏。

当2分类,既要关注阳性类别又要关注阴性类别时,适合选用ROC曲线,这样可以看出特异性和敏感性的变化,更能反应整个机器学习模型能力的好坏。

参考链接:

http://blog.csdn.net/wangzhiqing3/article/details/9058523

东海于吧环保科技有限公司

http://bubblexc.com/y2011/148/

信息检索的评价 - 百度文库

接受者操作特征曲线_百度百科

机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率 | Zhiwei's Blog

准确率,召回率,mAP,ROC,AUC,特异性,敏感性,假阴性,假阳性相关推荐

  1. 准确率,精准率,召回率,真正率,假正率,ROC/AUC

      最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来. 我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介 ...

  2. 准确率,召回率,F值,ROC,AUC

    准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...

  3. 混淆矩阵、准确率、召回率、ROC曲线、AUC

    混淆矩阵.准确率.召回率.ROC曲线.AUC 假设有一个用来对猫(cats).狗(dogs).兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结.假设总共 ...

  4. 一文读懂准确率、精准率、召回率、ROC、AUC、F1值

    准确率,精准率,召回率 分类问题中的混淆矩阵如下 TP: 预测为1,预测正确,即实际1 FP: 预测为1,预测错误,即实际0 FN: 预测为0,预测错确,即实际1 TN: 预测为0,预测正确即,实际0 ...

  5. 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)

    文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...

  6. 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现

    最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...

  7. AP AR mAP ROC AUC(目标检测)

    目标检测之AP AR mAP ROC AUC(Evaluation metrics) 混淆矩阵中 TP.TN.FP.FN Precision查准率和Recall召回率 P-R曲线 AP mAP AR ...

  8. 准确率/召回率/精准率/F值_模型评价

    准确率/召回率/精准率/F值 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择. 在训练数据集上运行模型(算法)并在测试数据集中测试效果, 迭代进行数据模型的修改, 这种方式被称为交 ...

  9. 准确率-召回率 - Precision-Recall

    Precision-Recall 准确率-召回率 本文翻译自 Precision-Recall 更多翻译可以看 Scikit-learn 某部分的中文翻译 用于评估分类器输出质量的 准确率-召回率 指 ...

  10. 【数据挖掘】K-NN 分类 ( 简介 | 分类概念 | K-NN 分类实例 | K-NN 分类准确度评估 | K-NN 分类结果评价指标 | 准确率 | 召回率 )

    文章目录 I . K-NN 简介 II . K-NN 分类 III . K-NN 分类实例 IV . K-NN 分类 准确性评估方法 V . 保持法 VI . kkk-交叉确认法 VII . K-NN ...

最新文章

  1. (初级)数字信号处理目录(不只是目录)
  2. android栈和队列
  3. Xmanager – Passive oracle 安装调用图形界面
  4. 一篇文章指明做JavaWeb项目需要的前置知识+完整项目初解读(萌新必看,十分友好)
  5. Android基础巩固进阶
  6. arma模型matlab代码_DCC GARCH模型
  7. 【Python】基于Python的百度迁徙1——迁入、迁出数据(附代码)
  8. word文档字体段落文档格式标准设置(个人)
  9. 神经网络物联网未来发展趋势怎么样
  10. 人脸服务器如何与门禁系统对接,人脸识别终端门禁系统解决方案
  11. 解决ffmpeg报错Non-monotonous DTS in output stream 0:0;
  12. 杂牌蓝牙在2003系统使用新驱动的破解方法!
  13. c51数字钟c语言程序,51单片机电子时钟C语言程序
  14. 【Visual C 】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲
  15. mysql群发消息_百万级用户量的站内信群发数据库设计
  16. matlab 函数 矩阵,MATLAB常用矩阵函数
  17. 大数据的架构设计与未来
  18. svn没有绿色的对勾处理
  19. ubuntu18.04分辨率只有1024*768,解决方案和踩坑梳理(应该适用其他ubuntu版本)
  20. 数字孪生城市建设标准体系

热门文章

  1. Redis应用项目---抢红包功能(三)
  2. python框架之flak学习笔记
  3. php导入excel 进度条,.NET_进度条在.net导入Excel时的应用实例,本文实例讲述了进度条在.net导 - phpStudy...
  4. 线上线下一体化趋势下,零售品牌如何利用线上营销为营收赋能?
  5. 全倒装超微间距COB(COB微间距)显示主导新型显示技术。
  6. linux切换用户时释放资源,linux 切换用户报Resource temporarily unavailable
  7. 最实用的网上赚钱方法:这个方法真的很实用哦!
  8. NOIP 2017 游记
  9. Arduino开发:网页控制ESP8266三色LED灯闪烁
  10. Bayes | 贝叶斯统计入门杂记