当前位置: 首页 > news >正文

[分类指标]准确率、精确率、召回率、F1值、ROC和AUC、MCC马修相关系数

准确率、精确率、召回率、F1值

定义:

1、准确率(Accuracy)

准确率指分类正确的样本占总样本个数的比例。准确率是针对所有样本的统计量。它被定义为:

 

准确率能够清晰的判断我们模型的表现,但有一个严重的缺陷: 在正负样本不均衡的情况下,占比大的类别往往会成为影响 Accuracy 的最主要因素,此时的 Accuracy 并不能很好的反映模型的整体情况。

例如,一个测试集有正样本99个,负样本1个。模型把所有的样本都预测为正样本,那么模型的Accuracy为99%,看评价指标,模型的效果很好,但实际上模型没有任何预测能力。

2、精确率(Precision)

精确率又称为查准率,是针对预测结果而言的一个评价指标。指在分类正确的正样本个数占分类器判定为正样本的样本个数的比例。精确率是对部分样本的统计量,侧重对分类器判定为正类的数据的统计。它被定义为:

3、召回率(Recall)

召回率指分类正确的正样本个数占真正的正样本个数的比例。召回率也是对部分样本的统计量,侧重对真实的正类样本的统计。它被定义为

Precision 与 Recall 的权衡
精确率高,意味着分类器要尽量在 “更有把握” 的情况下才将样本预测为正样本, 这意味着精确率能够很好的体现模型对于负样本的区分能力,精确率越高,则模型对负样本区分能力越强。

召回率高,意味着分类器尽可能将有可能为正样本的样本预测为正样本,这意味着召回率能够很好的体现模型对于正样本的区分能力,召回率越高,则模型对正样本的区分能力越强。

从上面的分析可以看出,精确率与召回率是此消彼长的关系, 如果分类器只把可能性大的样本预测为正样本,那么会漏掉很多可能性相对不大但依旧满足的正样本,从而导致召回率降低。

那么当不同模型的Recall和Precision各有优势时该如何选择模型?此时可以通过F1 Score来比较。

 

4、F1分数(F1 Score)

F1 Score是精准率和召回率的调和平均值,它同时兼顾了分类模型的准确率和召回率,是统计学中用来衡量二分类(或多任务二分类)模型精确度的一种指标。它的最大值是1,最小值是0,值越大意味着模型越好。 它定义为:

优缺点:

准确率、精确率、召回率、F1 值主要用于分类场景。

准确率可以理解为预测正确的概率,其缺陷在于:当正负样本比例非常不均衡时,占比大的类别会影响准确率。如异常点检测时:99% 的都是非异常点,那我们把所有样本都视为非异常点准确率就会非常高了。

精确率,查准率可以理解为预测出的东西有多少是用户感兴趣的;

召回率,查全率可以理解为用户感兴趣的东西有多少被预测出来了。

一般来说精确率和召回率是一对矛盾的度量。为了更好的表征学习器在精确率和召回率的性能度量,引入 F1 值。

5.  ROC曲线和评价指标AUC

ROC:接受者操作特性曲线(receiver operating characteristic curve,简称ROC曲线),是指在特定刺激条件下,以被试在不同判断标准下所得的虚报概率P(y/N)为横坐标,以击中概率P(y/SN)为纵坐标,画得的各点的连线。

所以需要计算两个值1、虚报概率 FPR; 2、击中概率 TPR

首先利用混淆矩阵计算ROC:

假阳性率(False Positive Rate, FPR)(虚报概率):  横坐标,N是真实负样本的个数,FP是N个负样本中被分类器预测为正样本的个数。 FPR=FP/(FP+TN) 

真阳性率(True Positive Rate, TPR)(击中概率):纵坐标,  TPR=TP / (TP+FN)

ROC曲线特性:当测试集中的正负样本分布发生变化了,ROC曲线可以保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。 

为什么ROC不受样本不平衡的影响呢?

TPR考虑的都是正例,既分母TP+FN是真实正例的数目;FPR考虑的都是负例,分母FP+TN是真实负例的数目。

想一下ROC曲线绘画过程,可以看成以预测为正例的概率进行排序,然后概率由大到小依次把样本预测为正例,每次把一个样本当成正例ROC曲线上就多了一个点(TPR,FPR)。这个过程也可以看成一个由大到小的阈值去筛选概率高的样本作为正例(预测值)。

如果负例增加到10倍,可以假设增加的负样本与原有的负样本保持独立同分布。

TPR:在学习器和上述阈值不变的情况下,我们看一下负例增加前后TPR会不会变化。首先分母不会变。再考虑分子,因为阈值和学习器也不变,那么对于真实的正例来说,预测结果不变,则TPR不变。

FPR:对于FPR来说,分母变为10*(FP+TN),给定学习器和阈值,因为假设增加的数据与原数据独立同分布,那么大于这个阈值的负样本(label为负)也会变为原来的10倍,即10*FP。所以FPR也不变。

上述的讨论是对于ROC中的一个点讨论的,再让阈值动起来的话,那么可以得到ROC上每个点都不变。当然这是理想情况,实际上由于数据噪声等影响,曲线肯定会有轻微扰动,但整体不会有较大的变化。

6、马修斯相关系数 MCC(Matthews correlation coefficient):


MCC 主要用于衡量二分类问题,其综合考虑了 TP, TN, FP, FN, 是一个比较均衡的指标, 对于样本不均衡情况下也可以使用。(由precision、recall、F1的计算公式可以看出这三个指标完全与TN无关,只关心正类而忽略负类的表现。而当类别不平衡时ACC的评估指标无法关注到少数类。)

MCC的取值范围在 [-1, 1] , 取值为1 表示预测与实际完全一致, 取值为0表示预测的结果还不如随机预测的结果, -1 表示预测结果与实际的结果完全不一致。

因此我们看到, MCC 本质上描述了预测结果与实际结果之间的相关系数。

马修斯相关系数公式为:

相关文章:

  • 革新商务数据体验:引领市场的API商品数据接口
  • XSS中级漏洞(靶场)
  • go语言通过切片实现先进后出逻辑
  • 微信小程序的单位
  • 云计算市场,从追求“规模制胜”到走向“用户分化”
  • 创建型模式之原型模式
  • Python自然语言处理库之gensim使用详解
  • Effective objective-c-- 内存管理
  • 二维码门楼牌管理系统技术服务:构建智慧城市的基石
  • 全域电商数据集成管理与采集|API接口的采集与管理
  • sheng的学习笔记-卷积神经网络经典架构-LeNet-5、AlexNet、VGGNet-16
  • 嵌入式软件bug从哪里来,到哪里去
  • php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵
  • Android NDK底层BUG,记录:connect、socket(AF_INET, SOCK_STREAM, 0) 等系统套接字接口函数崩溃问题。
  • 自定义TypeHandler
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [Vue CLI 3] 配置解析之 css.extract
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • Debian下无root权限使用Python访问Oracle
  • es的写入过程
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java IO学习笔记一
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode-27. Remove Element
  • leetcode386. Lexicographical Numbers
  • Map集合、散列表、红黑树介绍
  • Material Design
  • React+TypeScript入门
  • 初探 Vue 生命周期和钩子函数
  • 从零搭建Koa2 Server
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序button引导用户授权
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • gunicorn工作原理
  • PostgreSQL之连接数修改
  • 通过调用文摘列表API获取文摘
  • #FPGA(基础知识)
  • #if 1...#endif
  • (1)bark-ml
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (备忘)Java Map 遍历
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (转)大道至简,职场上做人做事做管理
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .“空心村”成因分析及解决对策122344
  • .Net Redis的秒杀Dome和异步执行
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 托管代码与非托管代码
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景