文档章节

机器学习 F1-Score, recall, precision

Airship
 Airship
发布于 2017/08/16 07:55
字数 943
阅读 44
收藏 0
点赞 0
评论 0

机器学习,模式识别中,我们做分类的时候,会用到一些指标来评判算法的优劣,最常用的就是识别率,简单来说,就是 

Acc=Npre/Ntotal


这里的 Npre表示预测对的样本数,Ntotal表示测试集总的样本数。

 

识别率有的时候过于简单, 不能全面反应算法的性能,除了识别率,还有一些常用的指标,就是我们要介绍的 
F1-score, recall, precision.

在介绍这些概念之前,我们先来看一个二分类的问题,给定一组训练集: 

D={(xi,yi)|xiRn,yi∈{0,1}}Ni=1


这里假定 yi=1 对应正样本,yi=0 对应负样本。假设我们建立了一个分类模型 H, 对每一个输入的样本 xi会输出一个预测值 H(xi), 那么将预测值 H(xi) 与样本对应的实际值yi做比较,会得到以下四种情况:

 

H(xi)=1,yi=1
H(xi)=1,yi=0
H(xi)=0,yi=1
H(xi)=0,yi=0

第一种情况,预测为正,实际也为正,我们称为 true positive (TP),第二种情况,预测为正,实际为负,我们称为 false positive (FP),第三种情况,预测为负,实际为正,称为false negative (FN),最后一种情况,预测为负,实际也为负,称为 true negative (TN),每一个样本只可能属于这四种情况中的某一种,不会有其它的可能。 
很显然,给定一个测试集,我们可以得到如下的关系: 

Npre=TP+TN

 

Ntotal=TP+TN+FP+FN


如果我们定义一个测试集中,正样本个数为P, 负样本个数为N, 那么我们可以知道:P=TP+FNN=TN+FP 
所以,我们常用的识别率 acc 其实就等于 

Acc=TP+TNTP+TN+FP+FN=TP+TNP+N

, 
进一步,我们可以定义 recall ,precision, F1-score 如下所示: 

Recall=TPTP+FN=TPP

 

Precision=TPTP+FP

 

F1=2TP2TP+FN+FP=2⋅PrecisionRecallPrecision+Recall

 

可以看到,recall 体现了分类模型H对正样本的识别能力,recall 越高,说明模型对正样本的识别能力越强,precision 体现了模型对负样本的区分能力,precision越高,说明模型对负样本的区分能力越强。F1-score 是两者的综合。F1-score 越高,说明分类模型越稳健。

比如我们常见的雷达预警系统,我们需要对雷达信号进行分析,判断这个信号是飞行器(正样本)还是噪声 (负样本), 很显然,我们希望系统既能准确的捕捉到飞行器信号,也可以有效地区分噪声信号。所以就要同时权衡recall 和 precision这两个指标,如果我们把所有信号都判断为飞行器,那 recall 可以达到1,但是precision将会变得很低(假设两种信号的样本数接近),可能就在 0.5 左右,那F1-score 也不会很高。

有的时候,我们对recall 与 precision 赋予不同的权重,表示对分类模型的偏好:

 

Fβ=(1+β2)TP(1+β2)TP+β2FN+FP=(1+β2)⋅PrecisionRecallβ2⋅Precision+Recall

 

可以看到,当 β=1,那么Fβ就退回到F1了,β 其实反映了模型分类能力的偏好,β>1 的时候,precision的权重更大,为了提高Fβ,我们希望precision 越小,而recall 应该越大,说明模型更偏好于提升recall,意味着模型更看重对正样本的识别能力; 而 β<1 的时候,recall 的权重更大,因此,我们希望recall越小,而precision越大,模型更偏好于提升precision,意味着模型更看重对负样本的区分能力。

参考来源: 
https://en.wikipedia.org/wiki/Receiver_operating_characteristic 
https://en.wikipedia.org/wiki/F1_score

 

本文转载自:http://blog.csdn.net/matrix_space/article/details/50384518

共有 人打赏支持
Airship
粉丝 34
博文 852
码字总数 18996
作品 0
南京
高级程序员
【算法周】你可以没房没车,但你需要知道这些指标!

欢迎关注哈希大数据微信公众号【哈希大数据】 考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成...

哈希大数据
06/22
0
0
机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(四)

  上一节三节讲述了真实数据(csv表格数据)的一个实战操作的总流程,然而这个处理是一个回归模型,即目标是一些连续的值(medianhousevalue)。当目标是一些有限的离散值得时候(比如数字0...

fjl_csdn
01/10
0
0
吴恩达 DeepLearning.ai 课程提炼笔记(3-1)结构化机器学习项目 --- 机器学习策略(1)

以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第三部分《结构化机器学习项目》第一周课程“机器学习策略(1)”关键点的笔记。本次笔记并没有涵盖所有视频课程的内容。在阅读以下...

大树先生
2017/10/18
0
0
吴恩达《Machine Learning Yearning》总结(1-10章)

1.为什么选择机器学习策略 案例:建立猫咪图像识别app 系统的优化可以有很多的方向: (1)获取更多的数据集,即更多的图片; (2)收集更多多样数据,如处于不常见的位置的猫的图,颜色奇异...

youaremyall
06/11
0
0
scikit-learn的主要模块和基本使用

转载自:简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latestarticles) 引言 对于一些开始搞机器学习算法有害怕下手的小朋友,该如何快速入门,这让人挺挣扎的。 在从事数据科学的人...

罗兵
2016/02/10
0
0
推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

1、准确率与召回率(Precision & Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量...

_两只橙_
01/13
0
0
ROC曲线与AUC值及其铺垫

简单介绍 ROC曲线Receiver Operating Characteristic curve(受试者工作特征曲线) AUC值 Area Under Curve score (曲线下面积值),也就是ROC曲线之下与坐标轴围成的面积。 这两个指标一般作...

香橙云子
2017/11/27
0
0
自然语言处理中常用的评价标准----准确率,召回率,F值

为了能够更好的评价IR系统的性能,IR有一套完整的评价体系,通过评价体系可以了解不同信息系统的优劣,不同检索模型的特点,不同因素对信息检索的影响,从而对信息检索进一步优化。 由于IR的...

踏雪凌冰
2014/10/30
0
0
Coursera吴恩达《构建机器学习项目》课程笔记(1)-- 机器学习策略(上)

我的CSDN博客地址:红色石头的专栏 我的知乎主页:红色石头 我的知乎专栏:红色石头的机器学习之路 欢迎大家关注我!共同学习,共同进步! 《Structuring Machine Learning Projects》(构建...

红色石头
2017/11/16
0
0
构建机器学习算法的方法和建议

构建一个机器学习算法的推荐方法为: 1.从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法 2.绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择...

wqhlmark64
01/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部