ROC,AUC,Precision,Recall,F1的介绍与计算
1. 基本概念
1.1 ROC与AUC
ROC曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,ROC曲线称为受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve),AUC(Area Under Curve)是ROC曲线下的面积。在计算ROC曲线之前,首先要了解一些基本概念。在二元分类模型的预测结果有四种,以判断人是否有病为例:
- 真阳性(TP):诊断为有,实际上也有病。
- 伪阳性(FP):诊断为有,实际却没有病。
- 真阴性(TN):诊断为没有,实际上也没有病。
- 伪阴性(FN):诊断为没有,实际却有病。

1.2 Precision、Recall与F1
对于二分类问题另一个常用的评价指标是精确率(precision)与召回率(recall)以及F1值。精确率表示在预测为阳性的样本中,真正有阳性的样本所占的比例。精确率的定义为P=\frac {TP} {TP+FP}。召回率表示所有真正呈阳性的样本中,预测为阳性所占的比例。召回率的定义为R=\frac {TP} {TP+FN},F1值是精确率和召回率的调和均值,公式为F1=\frac {2PR} {P+R}。精确率和召回率都高时,F1值也会高。通常情况下,Precision与Recall是相互矛盾的。
2. 曲线介绍
2.1 ROC曲线
ROC曲线坐标系如下图所示,虚线为随机猜测的概率,即猜对跟猜错的概率是一样的。理想情况下,我们是希望FPR为0,没有一个假阳性,TPR为1,即全为真阳性,此时所有样本都被正确分类,点位于左上角(0,1)位置处,没有一个分错的数据,这是最完美的情况,实际情况中基本不可能。如果点位于虚线下方,例如C点,说明分类错误的多,分类正确的少,此时不是我们想要的。如果点位于虚线上方,例如C \prime点,说明分类错误的少,分类正确的多,此时是我们想要的,因此我们希望ROC曲线尽可能的靠近左上角。对于一个特定的分类器和测试数据集,只能得到一个分类结果,即ROC曲线坐标系中的一点,那么如何得到一条ROC曲线呢?分类问题中我们经常会得到某个样本是正样本的概率,根据概率值与阈值的比较来判断某个样本是否是正样本。在不同的阈值下可以得到不同的TPR和FPR值,即可以得到一系列的点,将它们在图中绘制出来,并依次连接起来就得到了ROC曲线,阈值取值越多,ROC曲线越平滑。
AUC为ROC曲线下的面积,它的面积不会大于1,由于ROC曲线一般都处于直线y=x的上方,因此AUC的取值范围通常在(0.5,1)之间。由于ROC曲线不能很好的看出分类器模型的好坏,因此采用AUC值来进行分类器模型的评估与比较。通常AUC值越大,分类器性能越好。


2.2 P-R曲线
在P-R曲线中,Recall为横坐标,Precision为纵坐标。在ROC曲线中曲线越凸向左上角约好,在P-R曲线中,曲线越凸向右上角越好。P-R曲线判断模型的好坏要根据具体情况具体分析,有的项目要求召回率较高、有的项目要求精确率较高。P-R曲线的绘制跟ROC曲线的绘制是一样的,在不同的阈值下得到不同的Precision、Recall,得到一系列的点,将它们在P-R图中绘制出来,并依次连接起来就得到了P-R图。两个分类器模型(算法)P-R曲线比较的一个例子如下图所示:

2.3 ROC与P-R对比
从公式计算中可以看出,ROC曲线中真阳性率TPR的计算公式与P-R曲线中的召回率Recall计算公式是一样的,即二者是同一个东西在不同环境下的不同叫法。当正负样本差距不大的情况下,ROC曲线和P-R的趋势是差不多的,但是当负样本很多的时候,ROC曲线效果依然较好,但是P-R曲线效果一般。
ROC,AUC,Precision,Recall,F1的介绍与计算的更多相关文章
- Precision,Recall,F1的计算
Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...
- 机器学习--如何理解Accuracy, Precision, Recall, F1 score
当我们在谈论一个模型好坏的时候,我们常常会听到准确率(Accuracy)这个词,我们也会听到"如何才能使模型的Accurcy更高".那么是不是准确率最高的模型就一定是最好的模型? 这篇博文会向大家解释 ...
- ROC,AUC,Precision,Recall,F1的介绍与计算(转)
1. 基本概念 1.1 ROC与AUC ROC曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,ROC曲线称为受试者工作特征曲线 (receiver operatin ...
- BERT模型在多类别文本分类时的precision, recall, f1值的计算
BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...
- ROC,AUC,PR,AP介绍及python绘制
这里介绍一下如题所述的四个概念以及相应的使用python绘制曲线: 参考博客:http://kubicode.me/2016/09/19/Machine%20Learning/AUC-Calculat ...
- 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy
针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy 真实结果 1 ...
- TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area,
TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area, https://www.zhihu.com/question/30643044 T/ ...
- ROC AUC
1.什么是性能度量? 我们都知道机器学习要建模,但是对于模型性能的好坏(即模型的泛化能力),我们并不知道是怎样的,很可能这个模型就是一个差的模型,泛化能力弱,对测试集不能很好的预测或分类.那么如何知道 ...
- 一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC
参考资料:https://zhuanlan.zhihu.com/p/46714763 ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到).其实,理解它并不是非常难 ...
随机推荐
- PHP 写文件的例子
$contents = "All the content"; $dir = 'c:'; $file_path = $dir . "\\content.txt"; ...
- Linux 文件授权
Linux用户权限 在Linux操作系统中,root的权限是最高的,相当于windows的administrator,拥有最高权限,能执行任何命令和操作,在Linux系统中,通过UID来区分用 ...
- 集成 dubbo 微服务
微服务架构近年来非常的火,阿里 的dubbo 是其中的一种解决方案. dubbo 的微服务主要分为以下几部分: 1.注册中心 2.服务提供者 3.消费者 4.监控平台 1.一般流程服务提供者向注册中心 ...
- 师弟推荐软件-/mathpix
将公式扫描为latex:https://mathpix.com/api.html mathtype与latex转换:http://www.mathtype.cn/jiqiao/zhuanhua-gon ...
- 基础练习 回形取数 (循环 + Java 输入输出外挂)
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方 ...
- MV人物抹去
填充为背景 Music Video is one type of Video Processing.视频剪辑反向复原:视频图像分类:TensorFlow图像分类教程 改起个什么名字 视频分类数据集 ...
- (广搜)Fire Game -- FZU -- 2150
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/I Fire Game Time Limit:1000MS ...
- 引用数据类型(Scanner类、Random类)
Scanner类 Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固 ...
- html5之range
第一次以这种方式做笔记,希望可以加强自己对新知识的理解,更希望能得到更多朋友的指正. 言归正传: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 ...
- Linqpad工具
下载地址: http://www.linqpad.net/ 可以通过连接数据库,直接测试LINQ语句,并可以转化为Lamda .SQL语句. 非常好用的小工具,记录一下.