Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

Berkeley Computer Vision page
Performance Evaluation

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


True Positives, TP:预测为正样本,实际也为正样本的特征数
False Positives,FP:预测为正样本,实际为负样本的特征数
True Negatives,TN:预测为负样本,实际也为负样本的特征数
False Negatives,FN:预测为负样本,实际为正样本的特征数

图如下所示,里面绿色的半圆就是TP(True Positives), 红色的半圆就是FP(False Positives), 左边的灰色长方形(不包括绿色半圆),就是FN(False Negatives)。右边的 浅灰色长方形(不包括红色半圆),就是TN(True Negatives)。这个绿色和红色组成的圆内代表我们分类得到模型结果认为是正值的样本

这里写图片描述

Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

信息检索、分类、识别、翻译等领域两个最基本指标是

召回率(Recall Rate)=系统检索到的相关文件 / 系统所有相关的文件总数,衡量的是检索系统的查全率

这里写图片描述

准确率(Precision Rate)=系统检索到的相关文件 / 系统所有检索到的文件总数,衡量的是检索系统的查准率

图示表示如下:

P&R

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。
这里写图片描述

注意准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:
这里写图片描述

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

综合评价指标(F-Measure)

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-Measure是Precision和Recall加权调和平均

F =(a^2 +1)/(1/P + a^2/R)= (a^2+1)*P*R / (a^2*P +R)

当参数a=1时,就是最常见的F1:

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

这里写图片描述

有时候我们对精确率和召回率并不是一视同仁,比如有时候我们更加重视精确率。我们用一个参数β来度量两者之间的关系。如果β>1, 召回率有更大影响,如果β<1,精确率有更大影响。自然,当β=1的时候,精确率和召回率影响力相同,和F1形式一样。含有度量参数β的F1我们记为Fβ, 严格的数学定义如下:

这里写图片描述

很容易理解,F1综合了P和R的结果。
F1 测量不均衡数据的精度。
R2 分数测量回归的精度。
更多R2的介绍见
准确测量机器学习模型的误差
Accurately Measuring Model Prediction Error

E值 是Precision和Recall加权平均值,b>1表示更重视P

E =1-(b^2 +1)/(1/P + b^2/R)=1- (b^2+1)*P*R / b^2*P +R)

不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

准确率 = 700 / (700 + 200 + 100) = 70%
召回率 = 700 / 1400 = 50%
F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

正确率 = 1400 / (1400 + 300 + 300) = 70%
召回率 = 1400 / 1400 = 100%
F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%     

由此可见,准确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

灵敏性与假阴性率(漏诊率),特异性与假阳性率(误诊率)

灵敏度(也称真阳性率,sensitivity)=真阳性人数/(真阳性人数+假阴性人数)*100%。

指正确判断病人的程度,也即实际有病而被正确诊断的百分比。

这里写图片描述

特异度(也称真阴性率,specificity)=真阴性人数/(真阴性人数+假阳性人数))*100%。

这里写图片描述

指正确判断非病人的程度,也即实际无病而被正确诊断为无病的百分比。
这里写图片描述

ROC和AUC

ROC和AUC是评价分类器的指标

这里写图片描述

回到ROC上来,ROC的全名叫做Receiver Operating Characteristic。
ROC关注两个指标

True Positive Rate ( TPR )  = TP /(TP + FN)

TPR代表能将正例分对的概率

 False Positive Rate( FPR ) = FP /(FP + TN)

FPR代表将负例错分为正例的概率

纵轴:真正率(击中率)true positive rate ,TPR,称为灵敏度。所有实际正例中,正确识别的正例比例。

横轴:假正率(虚报率)false positiverate, FPR,称为(1-特异度)。所有实际负例中,错误得识别为正例的负例比例。

在ROC 空间中,每个点的横坐标是FPR,纵坐标是TPR,这也就描绘了分类器在TP(真正的正例)和FP(错误的正例)间的trade-off。

以召回率为y轴,以特异性为x轴,我们就直接得到了RoC曲线。从召回率和特异性的定义可以理解,召回率越高,特异性越小,我们的模型和算法就越高效。也就是画出来的RoC曲线越靠近左上越好。如下图左图所示。从几何的角度讲,RoC曲线下方的面积越大越大,则模型越优。所以有时候我们用RoC曲线下的面积,即AUC(Area Under Curve)值来作为算法和模型好坏的标准。

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

Roc曲线用来评价分类器的性能。通过测试分类结果可以计算得到TPR和FPR的一个点对。再通过调整这个分类器分类的阈值(从0.1到0.9),阈值的设定将实例分类到正类或者负类(比如大于阈值划分为正类)。因此根据变化阈值会产生不同效果的分类,得到多个分类结果的点,可以画出一条曲线,经过(0, 0),(1, 1)。

曲线在对角线左上方,离得越远说明分类效果好。如果出现在对角线右下方,直观的补救办法就是把所有的预测结果反向,即:分类器目的是识别正例,但效果差,所以把分类器输出结果正负颠倒,把输出的正例当成负例,把负例当成正例。就得到一个好的分类器。从源头上说,分类器越差越好。

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

P/R和ROC是两个不同的评价指标和计算方式,一般情况下,检索用前者,分类、识别等用后者

以精确率为y轴,以召回率为x轴,我们就得到了PR曲线。仍然从精确率和召回率的定义可以理解,精确率越高,召回率越高,我们的模型和算法就越高效。也就是画出来的PR曲线越靠近右上越好。


这里写图片描述

这里写图片描述

准确率(Precision) = TP/(TP+FP)

反映了被分类器判定的正例中真正的正例样本的比重

虚警概率(False Alarm)FA = FP / (TP + FP) = 1Precision

反映被判为正例样本中,有多少个是负例

召回率(Recall)=TP/(TP+FN) = 1 - FN/P

也称为 True Positive Rate, 反映了被正确判定的正例占总的正例的比重

漏警概率(Missing Alarm)MA = FN/(TP + FN) = 1 – TP/P = 1 - Recall

反映有多少个正例被漏判了

F-measure or balanced F-score

F = 2 *  召回率 *  准确率/ (召回率+准确率)

这就是传统上通常说的F1 measure

灵敏度(也称真阳性率)sensitivity = TP/(TP + FN);True Positive Rate ( TPR )  = TP /(TP + FN)

指正确判断病人的程度,也即实际有病而被正确诊断的百分比。
即实际上有病而按该筛检标准被正确地判为有病的百分率

(假阴性率)False Negative Rate(FNR) = FN/(TP + FN) = 1-sensitivity
                         = 1-TPR

假阴性率也称为漏诊率,即实际有病,但根据该筛选标准被定为非病者的百分率。

特异性(真阴性率)specificity = TN /(FP + TN)
True Negative Rate(TNR) = TN/(TP + TN)

即实际无病按照该诊断标准被正确地判为无病的百分率。

假阳性率False Positive Rate (FPR) = FP/(FP + TN)= 1-specificity
                                  =1- TNR

假阳性也称为误诊率,即实际无病,但根据诊断标准被定为有病的百分率

这里写图片描述

综上所述, Recall(召回率)和 sensitivity(灵敏性)是同一个概念,其他无相同点。

关于分类算法中的ROC与PR指标参考下文
http://blog.csdn.net/jiandanjinxin/article/details/51841726


MATLAB实现

AUC计算

ROC 计算

Precision-Recall and ROC Curves

Matlab code for Precision/Recall, ROC, Accuracy, F-Measure

本文参考主页
精确率与召回率,RoC曲线与PR曲线
http://bookshadow.com/weblog/2014/06/10/precision-recall-f-measure/
http://blog.csdn.net/marising/article/details/6543943
http://blog.sina.com.cn/s/blog_4dff58fc010176ax.html
http://blog.sina.com.cn/s/blog_49ea41a20102w4kd.html
http://blog.csdn.net/wangran51/article/details/7579100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的常用经典命令(持续更新)

找工作笔试面试那些事儿(16)—linux相关知识点(1) 找工作笔试面试那些事儿(17)—linux测试题 vim编辑器操作命令大全-绝对全 - CSDN博客 Linux进阶资源 Command line one-liners the-art-of-command-line Linux工具快速教程 快乐的 Linux 命令行 Linux Tutorial UNIX Tutoria…

【caffe-Windows】cifar实例编译之model的使用

本文讲解如何对网上下载的一个图片利用训练好的cifar模型进行分类 第一步 上一篇文章训练好以后会得到两个文件 从网上查阅资料解释来看&#xff0c;第一个caffemodel是训练完毕得到的模型参数文件&#xff0c;第二个solverstate是训练中断以后&#xff0c;可以用此文件从中断…

Python 命令汇总

python 库windows安装 兵种&#xff1a;python程序员。 等级&#xff1a;二级。 攻击&#xff1a;较高。 防御&#xff1a;普通。 价格&#xff1a;低。 天赋&#xff1a;胶水&#xff0c;我方有c程序员时&#xff0c;速度可达到c程序员的80%。 天赋&#xff1a;成熟&…

【PTVS+Theano+CPU/GPU】在windows下使用VS安装theano深度学习工具

唉。好不容易折腾完毕caffe&#xff0c;突然发现caffe比较适合搭建卷积神经网络&#xff0c;而对于DBN和LSTM的搭建好像比较麻烦&#xff0c;相关教程没有找到&#xff0c;手头上又有一个theano的代码想调试看看&#xff0c;所以入坑了。 准备工具&#xff1a; VS2013:链接&a…

人工神经网络——【BP】反向传播算法证明

第一步&#xff1a;前向传播 【注】此BP算法的证明仅限sigmoid激活函数情况。本博文讲道理是没错的&#xff0c;毕竟最后还利用代码还核对了一次理论证明结果。 关于更为严谨的BP证明&#xff0c;即严格通过上下标证明BP的博客请戳这里 简单的三层网络结构如下 参数定义&…

【caffe-Windows】微软官方caffe之 matlab接口配置

前言 按照微软的官方地址配置可能会出现一个问题caffe_.mexw64找不到引用模块问题&#xff0c;或者在matlab里面压根找不到caffe_这个函数&#xff0c;下面会提到这两个问题。还是按照步骤来吧 【PS1】有GPU同样按照下述步骤&#xff0c;进行即可 【PS2】文章在matlab2013a、…

【混淆矩阵】matlab画混淆矩阵

主要借鉴此博客代码&#xff1a;http://blog.csdn.net/sherry_gp/article/details/50560003 但是这个博主的代码达不到我想要的效果&#xff0c;所以修改了一下 我想要实现的效果是&#xff1a;给定一列的预测标签&#xff0c;以及这一列标签的哪一部分理应属于哪一部分标签。…

【caffe-Windows】mnist实例编译之model的生成

其实这个和cifar的实例基本相同&#xff0c;只不过数据转换的方法不一样 【说明&#xff0c;此博客按照我自己的路径设置的相关操作&#xff0c;读者如果自行选择其他路径&#xff0c;记得在bat和prototxt等文件修改路径】 第一步 下载数据集THE MNIST DATABASE of handwrit…

吉布斯采样——原理及matlab实现

原文来自&#xff1a;https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code/ 【注】评论区有同学指出译文理论编码有误&#xff0c;请参考更官方的文献&#xff0c;个人当时仅验证过红色字体部分理论与维基百科中二位随机变量吉…

【matlab知识补充】conv2、filter2、imfilter函数原理

原文地址&#xff1a;http://www.ilovematlab.cn/thread-293710-1-1.html -------------------------------------conv2函数---------------------------------------- 1、用法 Cconv2(A,B,shape); %卷积滤波 复制代码A:输入图像&#xff0c;B:卷积核假设输入图像A大…

显示mnist手写数字

前言 可视化什么的&#xff0c;总是好的 方法一 其实也就是用到了Ruslan Salakhutdinov and Geoff Hinton提供的工具包 % Version 1.000 % % Code provided by Ruslan Salakhutdinov and Geoff Hinton % % Permission is granted for anyone to copy, use, modify, or distr…

【caffe-Windows】mnist实例编译之model的使用-classification

仿照cifar10的模型使用&#xff0c;本文对mnist的训练方式做了部分修改 【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式) 第一步 按照前面的model生成方法的前两步骤制作数据集&#xff…

误差error,偏置bias,方差variance的见解

更新日志&#xff1a;2020-3-10 谢谢ProQianXiao的指正。偏差-方差的确是在测试集中进行的。 之前的误解是&#xff0c;偏差和方差的计算是同一个模型对不同样本的预测结果的偏差和方差&#xff1b;而实际上是不同模型对同一个样本的预测结果的偏差和方差。 这时候就要祭出网…

【caffe-Windows】以mnist为例lmdb格式数据

前言 前面介绍的案例都是leveldb的格式&#xff0c;但是比较流行和实用的格式是lmdb&#xff0c;原因从此网站摘取 它们都是键/值对&#xff08;Key/Value Pair&#xff09;嵌入式数据库管理系统编程库。虽然lmdb的内存消耗是leveldb的1.1倍&#xff0c;但是lmdb的速度比level…

【caffe-Windows】mnist实例编译之model的使用-matlab

前言 针对上一个caffe文章留下的matlab手写数字识别的问题&#xff0c;感谢caffe中文社区的 ghgzh 的提示&#xff0c;原文请看&#xff1a;caffe中文社区 第一步 手写图片的制作方法我就不说了&#xff0c;直接把我自己画的几个数字放到云盘先&#xff1a; 三通道图像以及…

【caffe-Windows】训练自己数据——数据集格式转换

前言 看了mnist和cifar的实例&#xff0c;是不是想我们现实中一般都是一张张的图片&#xff0c;和实例里面都不一样呢&#xff1f;那么如何来进行训练呢&#xff1f;为了能够简便点&#xff0c;我们就不自己去采集数据集了&#xff0c;因为第一自己采集的数据集量可能不够&…

【caffe-windows】Linux至Windows平台的caffe移植

1、前言 主要参考两篇博客以及很多论坛解决细节问题&#xff1a; http://www.cnblogs.com/trantor/p/4570097.html https://initialneil.wordpress.com/2015/01/11/build-caffe-in-windows-with-visual-studio-2013-cuda-6-5-opencv-2-4-9/ 移植环境&#xff1a;Windows7…

【caffe-matlab】权重以及特征图的可视化

前言 移植了各种caffe&#xff0c;是时候进行下一步操作了&#xff0c;先拿可视化下手吧。大部分内容可能跟网上的方法不一样&#xff0c;大家看完我的博客最好去网上看看大牛们的博客&#xff0c;万一被我误导了&#xff0c;就罪过了o(╯□╰)o&#xff0c;开更.............…

【caffe-matlab】使用matlab训练caffe及绘制loss

前言 此博客主要介绍如何利用matlab一步一步训练caffe模型&#xff0c;类似使用caffe.exe 的train命令。 国际惯例&#xff0c;参考博客&#xff1a; http://caffe.berkeleyvision.org/tutorial/interfaces.html http://www.cnblogs.com/denny402/p/5110204.html 抱怨一…

【caffe-matlab】目标检测R-FCN算法于Windows下配置

前言 首先谢谢好友推荐的这篇论文及代码&#xff0c;前面学习的caffe可能比较浅显&#xff0c;想要深入caffe就可以从这个代码下手了&#xff0c;配置方法还是挺简单的&#xff0c;但是可能会出现部分问题。在作者的论文中有github的地址。注意&#xff0c;本文只介绍如何配置…