糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 准确率 召回率 mAP ROC AUC 特异性 敏感性 假阴性 假阳性

准确率 召回率 mAP ROC AUC 特异性 敏感性 假阴性 假阳性

时间:2021-08-31 04:12:17

相关推荐

准确率 召回率 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.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个个数 相同的部分。

其正例数为此部分里实际的正类数。也就是说,将逻辑回归得到的结 果按从大到小排列,倘若以前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曲线,这样可以看出特异性和敏感性的变化,更能反应整个机器学习模型能力的好坏。

参考链接:

/wangzhiqing3/article/details/9058523

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

/y/148/

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

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

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

如果觉得《准确率 召回率 mAP ROC AUC 特异性 敏感性 假阴性 假阳性》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。