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

[机器学习] 通俗理解机器学习分类模型评估指标-准确率、精准率、召回率

机器学习模型需要有量化的评估指标来评估哪些模型的效果更好。

分类问题的混淆矩阵和各种评估指标的计算公式。将要给大家介绍的评估指标有:准确率、精准率、召回率、F1、ROC曲线、AUC曲线。

一 分类问题图解

举个例子: 我们有10张照片,5张男性、5张女性。如下图:

有一个判断性别的机器学习模型,当使用它来判断「是否为男性」时,会出现4种情况。如下图:

  1. 实际为男性,且判断为男性(正确)
  2. 实际为男性,但判断为女性(错误)
  3. 实际为女性,且判断为女性(正确)
  4. 实际为女性,但判断为男性(错误)

这4种情况构成了经典的混淆矩阵,如下图:

  • TP - True Positive:实际为男性,且判断为男性(正确)
  • FN - False Negative:实际为男性,但判断为女性(错误)
  • TN - True Negative:实际为女性,且判断为女性(正确)
  • FP - False Positive:实际为女性,但判断为男性(错误)

分类评估指标详解

准确率 - Accuracy

虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。

精确率(查准率)- Precision

精确率(P值)是针对我们预测结果而言的,它表示预测为正的样本中有多少是真正的正样本。

精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

人脸识别支付:主要提升精确率,更倾向于不能出现错误的预测。

应用场景:你刷脸支付时就算几次没检测到你的脸,最多会让你愤怒,对银行损失不大,但是如果把你的脸检测成别人的脸,就会出现金融风险,让别人替你买单,对银行损失很大。所以宁愿让你付不了钱,也不会让别人帮你付钱。

召回率(查全率)- Recall

召回率(R值)是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。

召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。

预测地震:主要提升召回率,更倾向于宁愿多预测一些错的也不能漏检。

应用场景:地震预测时宁愿多预测一些错的,也不想漏掉一次地震,预测错误最多会让大家多跑几趟,造成少量损失。只要预测对一次,就会挽回百亿级别的损失,之前所有的损失都值了。

提升精确率是为了不错报、提升召回率是为了不漏报

例子一

你的老板让你做一个地震预测模型(以天为单位记某一天地震为正样本,不地震为负样本),你需要预测接下来100天的地震情况。

假设你知道第50天和51天会地震,其余的1-49和51-100天不会地震。

现在假设你的模型已经做好,但是不能精确率召回率二者不可得兼,摆在你面前的是提升其中的一个率,你应该怎么办?

精确率:分母是预测到的正类,精确率的提出是让模型的现有预测结果尽可能不出错(宁愿漏检,也不能让现有的预测有错)

以地震模型为例说就是宁愿地震了没报,也不能误报地震,比如说为了不错报,只预测了第50天可能发生地震,此时的

1.精确率:1/1=100%

2.召回率:1/2=50%

虽然有一次地震没预测到,但是我们做出的预测都是对的。

召回率:分母是原本的正类,召回率的提出是让模型预测到所有想被预测到的样本(就算多预测一些错的,也能接受)

以地震模型为例说这100次地震,比如说为了不漏报,预测了第30天、50天、51天、70天、85天地震,此时的

1.精确率:2/5=40%

2.召回率:2/2=100%

虽然预测错了3次,但是我们把会造成灾难的2次地震全预测到了。

例子二

假设一共有10篇文章,里面4篇是你要找的。根据你的算法模型,你找到了5篇,但实际上在这5篇之中,只有3篇是你真正要找的。

那么算法的精确率P是3/5=60%,也就是你找的这5篇,有3篇是真正对的。算法的召回率是3/4=75%,也就是需要找的4篇文章,你找到了其中三篇。以精确率还是以召回率作为评价指标,需要根据具体问题而定。

应该如何取舍呢?

假设地震发生没有预测到会造成百亿级别的损失,而地震没发生误报了地震会造成百万级别的损失

显然,这种情况下我们应该接受为了不能漏掉一次地震而多次误报带来的损失,即提升召回率

F1值

可能很多人就会问了,有了召回率和准去率这俩个评价指标后,不就非常好了,为什么要有F值这个评价量的存在呢?我们在评价的时候,当然是希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,通过计算F值来评价一个指标!

我这里给出最常见的F1计算方法,如下:

相关文章:

  • 模板 主席树查询区间k小
  • 【JQ】【基础核心】【选择器】
  • 一次带你掌握MVC和MVVM的区别
  • 为什么参与LiveVideoStackCon 2022 北京站
  • 2022年数学建模国赛(A题/B题/C题)评阅要点
  • 大数据讲课笔记1.3 Linux目录操作
  • NumberBox 步进器
  • PythonGUI编程(3) ---- Options选项 Entry单行文本框 Text多行文本框
  • 源表应用之四探针法测量半导体电阻率
  • qs序列化插件
  • 焊缝质量检测数据集
  • 学习C++图像处理最快最好的途径
  • EasyExcel的使用
  • 操作系统实验一 Linux基本操作
  • 【JavaEE初阶】前端篇:HTML(下篇)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • conda常用的命令
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript创建对象的四种方式
  • java小心机(3)| 浅析finalize()
  • Mithril.js 入门介绍
  • React+TypeScript入门
  • session共享问题解决方案
  • Theano - 导数
  • vue自定义指令实现v-tap插件
  • 前言-如何学习区块链
  • AI算硅基生命吗,为什么?
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $.ajax()参数及用法
  • (12)Hive调优——count distinct去重优化
  • (2)nginx 安装、启停
  • (C++17) optional的使用
  • (libusb) usb口自动刷新
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (论文阅读40-45)图像描述1
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)iOS字体
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***详解账号泄露:全球约1亿用户已泄露
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .axf 转化 .bin文件 的方法
  • .dwp和.webpart的区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core使用ef 6