分类算法中的ROC与PR指标
本文转自:http://blog.csdn.net/xiahouzuoxin/article/details/43165253
做过图像识别、机器学习或者信息检索相关研究的人都知道,论文的实验部分都要和别人的算法比一比。可怎么比,人多嘴杂,我说我的方法好,你说你的方法好,各做各的总是不行——没规矩不成方圆。于是慢慢的大家就形成了一种约定,用ROC曲线和PR曲线来衡量算法的优劣。关于ROC曲线和PR曲线的详细介绍可参考资料:
- ROC Analysis and the ROC Convex Hull
- Tom Fawcett,An introduction to ROC analysis
- Jesse Davis,Mark Goadrich. The Relationship Between Precision-Recall and ROC Curves.,还有一份与这篇文章对应的PPT讲稿
有这3份资料足以,应用分析和理论分析都讲得很不错。
基本概念
- True Positives,TP:预测为正样本,实际也为正样本的特征数
- False Positives,FP:预测为正样本,实际为负样本的特征数(错预测为正样本了,所以叫False)
- True Negatives,TN:预测为负样本,实际也为负样本的特征数
- False Negatives,FN:预测为负样本,实际为正样本的特征数(错预测为负样本了,所以叫False)
接着往下做做小学的计算题:
- TP+FP+FN+FN:特征总数(样本总数)
- TP+FN:实际正样本数
- FP+TN:实际负样本数
- TP+FP:预测结果为正样本的总数
- TN+FN:预测结果为负样本的总数
有些绕,为做区分,可以这样记:相同的后缀(P或N)之和表示__预测__正样本/负样本总数,前缀加入T和F;实际样本总数的4个字母完全不同,含TP(正正得正)表示实际正样本,含FP(负正得负)表示实际负样本。
ROC曲线和PR曲线
True Positive Rate(TPR)和False Positive Rate(FPR)分别构成ROC曲线的y轴和x轴。
- TPR=TP/(TP+FN),实际正样本中被预测正确的概率
- FPR=FP/(FP+TN),实际负样本中被错误预测为正样本的概率
实际学习算法中,预测率100%的话,TPR=100%和FPR=0,所以TPR越大而FPR越小越好。仅用其中一个作为衡量指标可以吗?考虑这么一种情况,一幅图片假如600x480个像素,其中目标(正样本)仅有100个像素,假如有某种算法,预测的目标为包含所有像素600x480,这种情况下TPR的结果是TPR=100%,但FPR却也接近于100%。明显,TPR满足要求但结果却不是我们想要的,因为FPR太高了。
Precision和Recall(有人中文翻译成召回率)则分别构成了PR曲线的y轴和x轴。
- Precision=TP/(TP+FP),预测结果为有多少正样本是预测正确了的
- Recall=TP/(TP+FN),召回率很有意思,这个其实就=TPR,相对于Precision只不过参考样本从预测总正样本数结果变成了实际总正样本数。
同理,Precision和Recall同时考虑才能确定算法好坏。好了,原来一切尽在尽在下图中,
图:Confusion Matrix
既然ROC和PR都是同时要考虑两个指标,一个我好一个你好,到底谁好?画到ROC空间一看便知,如下图,将TPR和FPR分别画在两个坐标轴上,则沿着对角线的方向,离右上角越近,算法效果越好。(由于ROC和PR类似,以下仅讨论ROC空间和ROC曲线。)
图:ROC空间
一个分类算法,找个最优的分类效果,对应到ROC空间中的一个点。通常分类器的输出都是Score,比如SVM、神经网络,有如下的预测结果:
no. | True | Hyp | Score |
---|---|---|---|
1 | p | Y | 0.99999 |
2 | p | Y | 0.99999 |
3 | p | Y | 0.99993 |
4 | p | Y | 0.99986 |
5 | p | Y | 0.99964 |
6 | p | Y | 0.99955 |
7 | n | Y | 0.68139 |
8 | n | Y | 0.50961 |
9 | n | N | 0.48880 |
10 | n | N | 0.44951 |
True表示实际样本属性,Hyp表示预测结果样本属性,第4列即是Score,Hyp的结果通常是设定一个阈值,比如上表就是0.5,Score>0.5为正样本,小于0.5为负样本,这样只能算出一个ROC值,为更综合的评价算法的效果,通过取不同的阈值,得到多个ROC空间的值,将这些值描绘出ROC空间的曲线,即为ROC曲线。
图:ROC曲线绘制
我们只要明白这个基本的点,详细的ROC曲线绘制已经有很多代码了,资料1就提供了Prel直接根据Score绘制ROC曲线的代码,Matlab也有,下载链接:
- Local: prec_rec.m
- Mathworks: prec_rec.m
有了ROC曲线,更加具有参考意义的评价指标就有了,在ROC空间,算法绘制的ROC曲线越凸向西北方向效果越好,有时不同分类算法的ROC曲线存在交叉,因此很多文章里用AUC(即Area Under Curve曲线下的面积)值作为算法好坏的评判标准。关于这里的凸理论可参考文章开头的[资料2]。
与ROC曲线左上凸不同的是,PR曲线是右上凸效果越好,下面是两种曲线凸向的简单比较:
图:算法在ROC空间与PR空间的不同比较
作为衡量指标,选择ROC或PR都是可以的。但是资料3显示,ROC和PR虽然具有相同的出发点,但并不一定能得到相同的结论,在写论文的时候也只能参考着别人已有的进行选择了。
R2 评价指标
准确测量机器学习模型的误差
Accurately Measuring Model Prediction Error
分类算法中的ROC与PR指标相关推荐
- 二分类最优阈值确定_一文搞懂分类算法中常用的评估指标
导读 通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢? 分类算法的评估指标有很多种,选 ...
- 分类算法中常用的评价指标
转自: 分类算法中常用的评价指标 来自网络,备份勿忘! 对于分类器(分类算法),评价指标主要有:1)Precision:2)Recall:3)F-score;4)Accuracy;5)ROC;6)AU ...
- 分类算法如何绘制roc曲线_ROC曲线绘制方法
ROC(Receiver Operating Characteristic)曲线即受试者工作特征曲线.ROC曲线与坐标轴围成的面积被称为AUC(Area Under Curve),这两个指标和敏感性. ...
- 分类算法如何绘制roc曲线_机器学习性能指标之ROC和AUC理解与曲线绘制
一. ROC曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false po ...
- 分类算法如何绘制roc曲线,如何绘制knn模型的ROC曲线
I am using ROCR package and i was wondering how can one plot a ROC curve for knn model in R? Is ther ...
- 目标检测扩(六)一篇文章彻底搞懂目标检测算法中的评估指标计算方法(IoU(交并比)、Precision(精确度)、Recall(召回率)、AP(平均正确率)、mAP(平均类别AP) )
基本在目标检测算法中会碰到一些评估指标.常见的指标参数有:IoU(交并比).Precision(精确度).Recall(召回率).AP(平均正确率).mAP(平均类别AP)等.这些评估指标是在评估 ...
- 炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...
炼数成金数据分析课程---16.机器学习中的分类算法(交叉内容,后面要重点看) 一.总结 一句话总结: 大纲+实例快速学习法 主要讲解常用分类算法(如Knn.决策树.贝叶斯分类器等)的原理及pytho ...
- AI中分类算法与聚类算法
学习数据挖掘的朋友,对分类算法和聚类算法都很熟悉.无论是分类算法还是聚类算法,都有许多具体的算法来实现具体的数据分析需求.很多时候,我们难以判断选择分类或者聚类的场合是什么.我们最直观的概念是,分类和 ...
- 数据挖掘十大算法之分类算法(分类介绍及评价指标)
文章目录 1. 分类相关知识 1.1 分类的概念 1.2 分类的流程 1.3 分类模型评价标准 2. 二分类分类案例 参考文章: 接上篇文章,接下来学习挖掘算法中的分类算法: 首先我们应该知道数据挖掘 ...
最新文章
- 用leangoo怎么做迭代管理?(Sprint Backlog、任务看板、燃尽图)
- 常见面试之机器学习算法思想简单梳理
- mqtt 获取所有topic_MQTT协议解析
- C#中枚举类型的声明与使用举例
- 看起来很美 VS. 是你来检阅我的忧伤了吗?
- Winxp中加密自己的用户目录
- 涨跌因子计算器下载哪里下载_小白计算器软件下载-小白计算器app下载 v1.0 安卓版...
- 1.今日标签:视频价值一千字
- c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题
- Ubuntu 18.04 - 启动时停留在 start bpfilter
- java中redis存储map集合_使用RedisTemplate存储Map集合的一点注意
- eclipse必备的15的个快捷键
- python图书馆管理系统源代码_python代码实现图书管理系统
- Wireless基本概念
- 组态S7-200Smart间PROFINT通信生成GSDML文件
- oracle数据库max使用,Oracle / PLSQL MAX函数
- Windows10配置和挂载联想DE2000H存储服务器
- 机器人 铁血兵团 魂斗罗_【魂斗罗铁血兵团中文版】魂斗罗铁血兵团中文版下载-街机中国...
- IDEA编辑页面html jsp js java无法即时生效
- c# api接口管理
热门文章
- 蓝桥杯之最大体积(数论+完全背包)
- pcs7更改项目计算机名时出错,PCS7 C/S报警问题-工业支持中心-西门子中国
- mysql作为kafka生产者_Kafka之生产者
- 深度学习(3)手写数字识别问题
- linux 文件系统---类型、创建、
- 【图像超分辨率】(SPSR)Structure-Preserving SR with Gradient Guidance
- windows系统修改cmd窗口编码格式
- iOS开发-缓存图片到沙盒--思路
- 基于bert的语义匹配_构建基于BERT的语义搜索系统…针对“星际迷航”
- FPGA嵌入式处理器的选择策略