轉自 https://blog.csdn.net/sinat_28576553/article/details/80258619

四个基本概念
TP、True Positive   真阳性:预测为正,实际也为正

FP、False Positive  假阳性:预测为正,实际为负

FN、False Negative 假阴性:预测与负、实际为正

TN、True Negative 真阴性:预测为负、实际也为负。

【一致判真假,预测判阴阳。】

以分类问题为例:

首先看真阳性:真阳性的定义是“预测为正,实际也是正”,这个最好理解,就是指预测正确,是哪个类就被分到哪个类。对类A而言,TP的个位数为2,对类B而言,TP的个数为2,对类C而言,TP的个数为1。

然后看假阳性,假阳性的定义是“预测为正,实际为负”,就是预测为某个类,但是实际不是。对类A而言,FP个数为0,我们预测之后,把1和2分给了A,这两个都是正确的,并不存在把不是A类的值分给A的情况。类B的FP是2,"3"和"8"都不是B类,但却分给了B,所以为假阳性。类C的假阳性个数为2。

最后看一下假阴性,假阴性的定义是“预测为负,实际为正”,对类A而言,FN为2,"3"和"4"分别预测为B和C,但是实际是A,也就是预测为负,实际为正。对类B而言,FN为1,对类C而言,FN为1。

具体情况看如下表格:

  A B C 總計
TP 2 2 1 5
FP 0 2 1 3
FN 2 1 1 4

精确率和召回率

计算我们预测出来的某类样本中,有多少是被正确预测的。针对预测样本而言。

针对原先实际样本而言,有多少样本被正确的预测出来了。

套用网上的一个例子:

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

精确率 = 700 / (700 +200 + 100) = 70%

召回率 = 700 / 1400 =50%

可以吧上述的例子看成分类预测问题,对于“鲤鱼来说”,TP真阳性为700,FP假阳性为300,FN假阴性为700。

Precison=TP/(TP+FP)=700(700+300)=70%

Recall=TP/(TP+FN)=700/(700+700)=50%

将上述例子,改变一下:把池子里的所有的鲤鱼、虾和鳖都一网打尽,观察这些指标的变化。

精确率 = 1400 / (1400 +300 + 300) = 70%

召回率 = 1400 / 1400 =100%

TP为1400:有1400条鲤鱼被预测出来;FP为600:有600个生物不是鲤鱼类,却被归类到鲤鱼;FN为0,鲤鱼都被归类到鲤鱼类去了,并没有归到其他类。

Precision=TP/(TP+FP)=1400/(1400+600)=70%

Recall=TP/(TP+FN)=1400/(1400)=100%

其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数

作为预测者,我们当然是希望,Precision和Recall都保持一个较高的水准,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是正确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高,此时我们可以引出另一个评价指标—F1-Score(F-Measure)。

 F1-Score

F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标,用于测量不均衡数据的精度。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种加权平均,它的最大值是1,最小值是0。(出自百度百科)

数学定义:F1分数(F1-Score),又称为平衡F分数(BalancedScore),它被定义为精确率和召回率的调和平均数。

更一般的,我们定义Fβ分数为:

除了F1分数之外,F0.5分数和F2分数,在统计学中也得到了大量应用,其中,F2分数中,召回率的权重高于精确率,而F0.5分数中,精确率的权重高于召回率。

 Micro-F1和Macro-F1
最后看Micro-F1和Macro-F1。在第一个多标签分类任务中,可以对每个“类”,计算F1,显然我们需要把所有类的F1合并起来考虑。

这里有两种合并方式:

第一种计算出所有类别总的Precision和Recall,然后计算F1。

例如依照最上面的表格来计算:Precison=5/(5+3)=0.625,Recall=5/(5+4)=0.556,然后带入F1的公式求出F1,这种方式被称为Micro-F1微平均。

第二种方式是计算出每一个类的Precison和Recall后计算F1,最后将F1平均。

例如上式A类:P=2/(2+0)=1.0,R=2/(2+2)=0.5,F1=(2*1*0.5)/1+0.5=0.667。同理求出B类C类的F1,最后求平均值,这种范式叫做Macro-F1宏平均。

分类问题的几个评价指标(Precision、Recall、F1-Score、Micro-F1、Macro-F1的更多相关文章

  1. 机器学习:评价分类结果(F1 Score)

    一.基础 疑问1:具体使用算法时,怎么通过精准率和召回率判断算法优劣? 根据具体使用场景而定: 例1:股票预测,未来该股票是升还是降?业务要求更精准的找到能够上升的股票:此情况下,模型精准率越高越优. ...

  2. 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy

    针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy   真实结果 1 ...

  3. 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)

    一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...

  4. 通过Precision/Recall判断分类结果偏差极大时算法的性能

    当我们对某些问题进行分类时,真实结果的分布会有明显偏差. 例如对是否患癌症进行分类,testing set 中可能只有0.5%的人患了癌症. 此时如果直接数误分类数的话,那么一个每次都预测人没有癌症的 ...

  5. 深度学习分类问题中accuracy等评价指标的理解

    在处理深度学习分类问题时,会用到一些评价指标,如accuracy(准确率)等.刚开始接触时会感觉有点多有点绕,不太好理解.本文写出我的理解,同时以语音唤醒(唤醒词识别)来举例,希望能加深理解这些指标. ...

  6. 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/ ...

  7. 机器学习中的 precision、recall、accuracy、F1 Score

    1. 四个概念定义:TP.FP.TN.FN 先看四个概念定义: - TP,True Positive - FP,False Positive - TN,True Negative - FN,False ...

  8. Precision,Recall,F1的计算

    Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...

  9. 【tf.keras】实现 F1 score、precision、recall 等 metric

    tf.keras.metric 里面竟然没有实现 F1 score.recall.precision 等指标,一开始觉得真不可思议.但这是有原因的,这些指标在 batch-wise 上计算都没有意义, ...

随机推荐

  1. L364 Should Your Resume Be One Page or Two?

    Should Your Resume Be One Page or Two? Conventional wisdom suggests that you should keep it short: A ...

  2. java版数据结构与算法 (1综述)

    很大部分转载自 https://blog.csdn.net/singit/article/details/54898316 数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元 ...

  3. 【原创项目】GC Server 更新

    GC Server 是自己2年前开坑的一个项目,主要是为coder提供方便,内含轻便编译器(不含代码编辑器,就是你把.c/.cpp代码文件放到指定目录下然后打开程序编译),还有各种各样的有助于提升智力 ...

  4. UITextField属性及方法说明

    /初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(, , , )] //设置 ...

  5. BT详解

    bittorrent是一个文件分发协议,它使用url来定位文件而且跟web服务无缝集成.当有多个人同时下载同一个文件时,下载者之间可以互相上传自己已有的那部分文件,让一个文件支持很多人同时下载却只增加 ...

  6. CentOS Linux 升级内核步骤和方法(转)

    当前系统为CentOS Linux release 6.0 (Final),内核版本为2.6.32-71.el6.i686.由于最近内核出现最新的漏洞(linux kernel 又爆内存提权漏洞,2. ...

  7. cocos2dx-lua中handler解析

    先看一段代码: local c=c or {} function c:onTouch() print "test in onTouch" end function handler( ...

  8. Redis须知重点

    一.为什么使用 Redis? 我觉得在项目中使用 Redis,主要是从两个角度去考虑:性能和并发. 当然,Redis 还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他 ...

  9. JDK无法卸载问题解决

    在控制面板卸载JDK时,显示正在收集删除文件,进度条满了之后就闪退了,但JDK还在,试了几次都是如此. 后来,发现微软官方出了“修复阻止程序安装或删除的问题”的应用,可以自动修复包括阻止你安装或删除程 ...

  10. 常见模块(七) re模块

    首先明白正则表达式和re模块的关系:正则:是一种规则,这种规则在任何一种语言中都严格按照此规则进行匹配.正则匹配的就是字符串,从字符串的左边往右边匹配re: re是python语言中的利用正则规则的一 ...