准确率,召回率,mAP,ROC,AUC,特异性,敏感性,假阴性,假阳性
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.5AUC:
目录
准确率、召回率、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,特异性,敏感性,假阴性,假阳性相关推荐
- 准确率,精准率,召回率,真正率,假正率,ROC/AUC
最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来. 我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介 ...
- 准确率,召回率,F值,ROC,AUC
准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...
- 混淆矩阵、准确率、召回率、ROC曲线、AUC
混淆矩阵.准确率.召回率.ROC曲线.AUC 假设有一个用来对猫(cats).狗(dogs).兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结.假设总共 ...
- 一文读懂准确率、精准率、召回率、ROC、AUC、F1值
准确率,精准率,召回率 分类问题中的混淆矩阵如下 TP: 预测为1,预测正确,即实际1 FP: 预测为1,预测错误,即实际0 FN: 预测为0,预测错确,即实际1 TN: 预测为0,预测正确即,实际0 ...
- 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)
文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...
- 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现
最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...
- AP AR mAP ROC AUC(目标检测)
目标检测之AP AR mAP ROC AUC(Evaluation metrics) 混淆矩阵中 TP.TN.FP.FN Precision查准率和Recall召回率 P-R曲线 AP mAP AR ...
- 准确率/召回率/精准率/F值_模型评价
准确率/召回率/精准率/F值 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择. 在训练数据集上运行模型(算法)并在测试数据集中测试效果, 迭代进行数据模型的修改, 这种方式被称为交 ...
- 准确率-召回率 - Precision-Recall
Precision-Recall 准确率-召回率 本文翻译自 Precision-Recall 更多翻译可以看 Scikit-learn 某部分的中文翻译 用于评估分类器输出质量的 准确率-召回率 指 ...
- 【数据挖掘】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 ...
最新文章
- (初级)数字信号处理目录(不只是目录)
- android栈和队列
- Xmanager – Passive oracle 安装调用图形界面
- 一篇文章指明做JavaWeb项目需要的前置知识+完整项目初解读(萌新必看,十分友好)
- Android基础巩固进阶
- arma模型matlab代码_DCC GARCH模型
- 【Python】基于Python的百度迁徙1——迁入、迁出数据(附代码)
- word文档字体段落文档格式标准设置(个人)
- 神经网络物联网未来发展趋势怎么样
- 人脸服务器如何与门禁系统对接,人脸识别终端门禁系统解决方案
- 解决ffmpeg报错Non-monotonous DTS in output stream 0:0;
- 杂牌蓝牙在2003系统使用新驱动的破解方法!
- c51数字钟c语言程序,51单片机电子时钟C语言程序
- 【Visual C 】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲
- mysql群发消息_百万级用户量的站内信群发数据库设计
- matlab 函数 矩阵,MATLAB常用矩阵函数
- 大数据的架构设计与未来
- svn没有绿色的对勾处理
- ubuntu18.04分辨率只有1024*768,解决方案和踩坑梳理(应该适用其他ubuntu版本)
- 数字孪生城市建设标准体系
热门文章
- Redis应用项目---抢红包功能(三)
- python框架之flak学习笔记
- php导入excel 进度条,.NET_进度条在.net导入Excel时的应用实例,本文实例讲述了进度条在.net导 - phpStudy...
- 线上线下一体化趋势下,零售品牌如何利用线上营销为营收赋能?
- 全倒装超微间距COB(COB微间距)显示主导新型显示技术。
- linux切换用户时释放资源,linux 切换用户报Resource temporarily unavailable
- 最实用的网上赚钱方法:这个方法真的很实用哦!
- NOIP 2017 游记
- Arduino开发:网页控制ESP8266三色LED灯闪烁
- Bayes | 贝叶斯统计入门杂记