正确翻译: T :正确

P:正样本    TP:表示正确预测,预测为正样本

True Positive(真正,TP):将正类预测为正类数 
True Negative(真负,TN):将负类预测为负类数 
False Positive(假正,FP):将负类预测为正类数误报 (Type I error) ,没有识别未有(误识)
False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error) ,有识别为没有(漏失)
准确率(Accuracy):ACC=(TP+TN)/(Tp+TN+FP+FN)   (所有样本都被正确分类)
精确率(precision):P=TP/(TP+FP)     ( 宁愿错杀,不可漏掉)
召回率(recall):recall=TP/(TP+FN)  (宁愿漏掉,不可错杀

Recall: 查全率

Precision:查准率(预测出来的正样本正确的比例)

Accuracy:准确率

Precision:查准率

Precision的计算则很容易和Accuracy弄混,Precision表示某一类样本预测有多准,比如说,模型预测出有100个病患,可是实际上这里面只有80个是病患,那么Precision就是80%。顾名思义,即查准的几率为80%。注意:Precision针对的是某一类样本,如果没有说明类别,那么Precision是毫无意义的(有些地方不说明类别,直接说Precision,是因为二分类问题通常说的Precision都是正样本的Precision)。Accuracy则针对的是所有类别的样本,这一点很多人并没有去区分。

Recall:召回率

Recall和Precision一样,脱离类别是没有意义的。说道Recall,一定指的是某个类别的Recall。Recall表示某一类样本,预测正确的与所有Ground Truth的比例。比如说,某批数据有100个人为患者,可是模型只预测出80个人为患者,那么被召回医院就诊的比例就是80%,即Recall是80%。仔细和Precision的计算方法对比就可以发现,Recall和Precision计算中的分子都是一样的,但是Recall计算的时候,分母是Ground Truth(标定正确的数据,又称为标准答案)中某一类样本的数量,而Precision计算的时候,是预测出来的某一类样本数。自然地,可以得到如下有关Recall的计算公式:

:                                                          

IOU:

在多个类别的检测中,算出召回率从0到1时的准确率(同一召回率取最高的准确率),计算准确率的平均值。然后对所有类别求平均就可以得到mAP了。

一般情况下查准高、查全率就低,查全率低、查准率高。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率:

两者都低,那是什么地方出问题了

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

在两者都要求高的情况下,可以用F1来衡量:

F1 = 2 * P * R / (P + R)

查准率(precision):

准确率与查准率的区别:

在正负样本不平衡的情况下,准确率(预测正确的)这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。

ROC曲线:ROC曲线则是从阈值选取角度出发来研究学习器泛化性能的有力工具(针对二分类问题)

观察阈值从0到1,真正利率和假正利率的变化曲线。ROC曲线越靠近左上角,模型的准确性就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。

其纵轴是真正利率,横轴是假正利率(即正确的概率,分别针对正样本集合和负样本集合),即

作用:

1. ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。

2.ROC曲线越靠近左上角,模型的准确性就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。

3、可以无视正负样本不平衡的情形。(由于从实际效果出发)

AUC面积:AUC就是ROC曲线下的面积(面积求和),衡量学习器优劣的一种性能指标。(不均衡样本通常用AUC评价学习器性能,替代查准率等指标)       -------------------------------------针对 二分类系统

反映了分类器对正例的覆盖能力和对负例的覆盖能力之间的权衡。(真正率(即召回率)和假正率之间的关系)FPR为横轴、TPR为纵轴

理想情况下我们会想让假正率越来越小,召回率越来越高,最理想的情况则是fpr = 0,tpr = 1

对于logistics二分类问题,想让召回率变高:减小阈值!

平均精度AP(average precision)    :模型对某一类的效果:就是PR曲线下的面积,这里average

mAP:模型对所有类效果

Precision-Recall曲线:

观察可知,若斜率大点,则说明模型更佳优秀。

AP就是PR曲线与X轴围成的图形面积

多标签图像分类(Multi-label Image Classification)任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean  accuracy,该任务采用的是和信息检索中类似的方法—mAP(mean Average Precision)。mAP虽然字面意思和mean  accuracy看起来差不多,但是计算方法要繁琐得多,以下是mAP的计算方法:

首先用训练好的模型得到所有测试样本的confidence  score,每一类(如car)的confidence   score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence  score和ground  truth  label如下:​​

接下来对confidence  score排序,得到:

然后计算precision和recall,这两个标准的定义如下:

上图比较直观,圆圈内(true   positives + false  positives)是我们选出的元素,它对应于分类任务中我们取出的结果,比如对测试样本在训练好的car模型上分类,我们想得到top-5的结果,即:

在这个例子中,true   positives就是指第4和第2张图片,false   positives就是指第13,19,6张图片。方框内圆圈外的元素(false   negatives和true  negatives)是相对于方框内的元素而言,在这个例子中,是指confidence   score排在top-5之外的元素,即:

其中,false   negatives是指第9,16,7,20张图片,true   negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。

那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。

实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。这个例子的precision-recall曲线如下:

接下来说说AP的计算,此处参考的是PASCAL  VOC  CHALLENGE的计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:​

相应的Precision-Recall曲线(这条曲线是单调递减的)如下:​

AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

F1即表示P-R标准之间的一个平衡点:

准确率,查准率,查全率,ROC曲线,AUC面积相关推荐

  1. matlab计算prc曲线auc面积,ROC曲线和AUC面积计算 matlab

    在网上看到的程序,粘贴在自己的博客中,以备以后用后用到了好查找: function [auc, curve] = ROC(score, target, Lp, Ln) % This function ...

  2. matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值

    根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...

  3. python画出roc曲线 auc计算逻辑_ROC及AUC计算方法及原理

    1.非均衡分类问题 在大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价是不能相提并论的.例如在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件,还有在癌症检测中,宁愿误 ...

  4. ROC曲线 AUC值

    全面了解ROC曲线 一. 初识ROC曲线 1. ROC的前世今生: ROC的全称是"受试者工作特征"(Receiver Operating Characteristic)曲线,  ...

  5. 模型评价指标——混淆矩阵/ROC曲线/AUC曲线

    一.混淆矩阵 TP = True Postive真阳性:FP = False Positive假阳性 :FN = False Negative假阴性:TN = True Negative真阴性 ① 精 ...

  6. python画出roc曲线 auc计算逻辑_Python画ROC曲线和AUC值计算

    前言 ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣.这篇文章将先简单的介绍ROC和AU ...

  7. 查准率,查全率,PR曲线,ROC 曲线的含义

  8. python画出roc曲线 auc计算逻辑_从scikitlearn(sklearn)的多类数据计算AUC和ROC曲线?...

    您需要使用label_binarize函数,然后您可以绘制一个多类ROC. 使用虹膜数据的示例:import matplotlib.pyplot as plt from sklearn import ...

  9. ROC受试曲线AUC[TPR/ FPR/截断点/StratifiedKFold/KFold]

    概念 ROC和AUC定义 ROC全称是"受试者工作特征"(Receiver Operating Characteristic).ROC曲线的面积就是AUC(Area Under t ...

  10. 机器学习分类问题指标理解——准确率(accuracy)、精确率(precision)、召回率(recall)、F1-Score、ROC曲线、P-R曲线、AUC面积

    2020.08.25更新: 修改了ROC曲线中TPR公式的错误. 2020.07.25更新: 修改了混淆矩阵,每一行为实际值,每一列与预测值. 机器学习分类问题指标理解 0. 一个例子 1.准确率(A ...

最新文章

  1. [转]使用rosbridge协议实现安卓跟ros的解耦
  2. (转载)关于IAP与APP互相跳转的实现
  3. 前台获取json未定义问题之两种常用解决办法
  4. Nginx+Fastdfs
  5. 服务器数据库2008怎么备份数据库文件,怎么备份SQL Server2008数据库
  6. flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法
  7. Python DES
  8. jdbc事物提交,回滚不起作用的解决方案
  9. iOS:ODRefreshControl
  10. 微信小程序onReachBottom不触发
  11. VS编程,WPF中,通过C# 创建颜色选择器,颜色拾取器,调色板的一种方法
  12. 五大常用算法学习笔记
  13. cms自动更新php文件,PHPCMS站群管理系统-PHPCMS自动采集-PHPCMS自动更新
  14. 航空公司客户价值数据的分析
  15. android手机访问网站时 出现您未被授权查看该页 您试图访问的 Web 服务器上有一个不被允许访问该网站的 IP 地
  16. c语言中puts的作用,c语言puts函数用法是什么?
  17. XSS 防御方法总结
  18. 不用露脸,现在做自媒体还晚不晚?推荐这3个新手适合做的领域
  19. 计算机播放音乐无声音,笔记本电脑放歌没声音的解决方法
  20. 一.wireshark界面学习

热门文章

  1. C#使用EmguCV库(图像读取、显示、保存)(二)
  2. LZW编码与解码的那点事
  3. LruCache算法原理解析
  4. 1367 二叉树中的列表
  5. Linux下安装压力测试工具hey、参数介绍、实例
  6. micropython按键检测_TM1650按键扫描
  7. 数据结构单链表插入和删除操作
  8. Python调用百度AI接口
  9. slam 常用依赖库CMakeLists.txt 编写
  10. 基于MATLAB的DTMF信号的仿真分析