机器学习 | 评估原理——准确率、精确率、召回率、F1值

Hi,大家好,我是半亩花海。接着上次的模型评估与交叉验证继续更新《白话机器学习的数学》这本书的学习笔记,在此分享准确率、精确率、召回率、F1值相关评估原理。本章的基于前几节已建立的模型进行评估知识的学习,欢迎大家交流学习!

目录

一、引言

二、准确率(精度,Accuracy)

三、精确率(Precision)

四、召回率(Recall)

五、F1值(F-Measure)


一、引言

看到这个标题,我们应该会很容易想到运用 Yolov5 框架训练模型完后会出现很多末评估的图片,如下图所示,那么它们的具体含义是什么呢?显然,和本文讲述的模型评估相关知识密切相关。


二、准确率(精度,Accuracy)

准确率的计算公式如下:

在上一篇文章《机器学习 | 评估原理——模型评估与交叉验证-CSDN博客》中,我们已经知道了精度的计算公式即如上式所示。

一般来说,只要计算出这个 Accuracy 值,基本上就可以掌握分类结果整体的精度了。但是有时候只看这个结果会有问题,所以还有别的指标。 比如下面这个例子,假设图中的圆点是 Positive 数据、叉号是 Negative 数据,我们来考虑一下数据量极其不平衡的情况。

假设有 100 个数据,其中 95 个是 Negative。那么,哪怕出现模型把数据全部分类为 Negative 的极端情况,Accuracy 值也为 0.95,也就是说模型的精度是 95%。既然 Positive 相对少很多,那么即使模型把数据全部分类为 Negative,它的精度也会很高。但是不管精度多高,一个把所有数据都分类为 Negative 的模型,肯定不能说它是好模型对吧?

遇到这种情况,仅看整体的精度根本看不出来问题。所以要引入别的指标。这些指标稍微有点复杂,结合具体的数据来看更好理解,所以我们用如下图所示的例子来说明。


三、精确率(Precision)

精确率的计算公式如下:

在“二、准确率”中的例子中,这看上去对 Positive 数据分类得不够好。首先我们来看另一个指标——精确率(Precision)

这个指标只关注 TP 和 FP根据表达式来看,它的含义被分类为 Positive 的数据中,实际就是 Positive 的数据所占的比例

我们实际地代入数值来计算看看。

这个值越高,说明分类错误越少。 拿这个例子来说,虽然被分类为 Positive 的数据有 3 个,但其中只有 1 个是分类正确的。所以计算得出的精确率为 0.333,属实很低


四、召回率(Recall)

召回率的计算公式如下:

把精确率分母上的 FP 换成 FN 就是它了。这个指标只关注 TP 和 FN。根据表达式来看,它的含义Positive 数据中,实际被分类为 Positive 的数据所占的比例

我们再来算算它的值。

这个值越高,说明被正确分类的数据越多。拿这个例子来说,虽然 Positive 数据共有 5 个,但只有 1 个被分类为 Positive。所以计算得出的召回率也很低

基于这两个指标来考虑精度是比较好的。 精确率和召回率都很高的模型就认为是一个好模型,但是在实际情况下,精确率和召回率会一个高一个低,需要我们取舍


五、F1值(F-Measure)

F1值的计算公式如下:

在之前的学习中,我们已经学习了准确率(Accuracy)、精确率(Precision)和召回率(Recall),有没有这样一个值能够综合考虑这两个值呢?如果只是简单地计算平均值并不算很好的方法。

假设现在有两个模型,它们的精确率和召回率如下数据所示。

模型 B 的召回率是 1.0,也就是说所有的 Positive 数据都被分类为 Positive 了,但是精确率也实在是太低了。如果将所有的数据都分类为 Positive,那么召回率就是 1.0。但是这样一来,Negative 数据也会被分类为 Positive,所以精确率会变得很低

看一下两个模型的平均值,会发现模型 B 的更高。但它是把所有数据都分类为 Positive 的模型,精确率极低,仅为 0.02,并不能说它是好模型

所以就出现了评定综合性能的指标 F 值。下面表达式中的 Fmeasure 就是 F 值,Precision 是前面说的精确率,Recall 是召回率。(ps:其实也有很多人把 F 值的表达式变形,写成下面这样,二者是相同的)

                                                                

精确率和召回率只要有一个低,就会拉低 F 值,该指标考虑到了精确率和召回率的平衡。计算一下前面两个模型的 F 值我们便会对这个说法理解得更加透彻。

和简单取平均值时得到的结果不同,模型 A 的 F 值更高。 这说明该指标考虑到了精确率和召回率的平衡。


另外,除 F1 值之外,还有一个带权重的 F 值指标,如下式所示。

式中,\beta 指的是权重我们可以认为 F 值指的是带权重的 F 值,当权重为 1 时才是刚才介绍的 F1 值带权重的 F 值更通用

F1 值在数学上是精确率和召回率的调和平均值(ps:关于调和平均值,其实并不需要太深入地了解,大家大致地了解清楚即可)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

User-Agent(UA)注入

在CTF(Capture The Flag)竞赛中,User-Agent(UA)注入是一种利用Web应用程序安全漏洞的攻击方式,特别是在应用程序基于User-Agent字符串来执行某些逻辑或数据库查询时。User-Agent注入通常涉及到在HTTP请求头…

一篇文章掌握Python爬虫的80%

转载:一篇文章掌握Python爬虫的80% Python爬虫 Python 爬虫技术在数据采集和信息获取中有着广泛的应用。本文将带你掌握Python爬虫的核心知识,帮助你迅速成为一名爬虫高手。以下内容将涵盖爬虫的基本概念、常用库、核心技术和实战案例。 一、Python 爬虫…

react中useReducer钩子函数的使用

1.代码展示 import { useReducer } from "react"// 1.定义reducer函数,根据不同action返回不同状态 function reducer(state, action) {console.log(state, action);switch (action.type) {case "INC":return state 1break;case "DEC&qu…

Kconfig 详述

Kconfig 简介 Kconfig 严格来讲是一种编程语言,它拥有自己的语法及结构。正是这些语法和结构组成了menuconfig在用户眼前不同的表现形式。 Kconfig 文件用于定义各种配置选项,例如是否启用某个设备驱动、特定的文件系统支持、网络协议等。每个选项都有…

速记Java八股文——Java 虚拟机篇

前言 分类汇总 10 常见的 Java 虚拟机篇 经典后端面试题,并对题目进行了精炼总结,旨在帮助大家高效记忆,在面试中游刃有余,不至于陷入词穷的窘境。 Java 虚拟机篇 调优命令有哪些? jps:列出当前用户的Java…

【算法】道格拉斯

一、引言 道格拉斯算法是一种用于曲线拟合的数学方法,特别是在处理曲线插值问题时非常有用。道格拉斯-普克算法(Douglas-Peucker Algorithm),简称D-P算法,是一种用于简化多边形或折线的高效算法,由David Do…

01 Python环境安装

1.进入官网选择合适的版本,进行下载。Welcome to Python.org,提供了支持不同操作系统的安装包,目前最新版本为Python3.12,但在学习阶段一般不推荐大家使用最新版本的软件,因为对于其他软件需要该环境时,还不…

超13万律师使用的工具,启信宝推出“司法大数据”功能

合合信息旗下的启信宝,作为行业领先的商业查询APP,依托其3亿企业及机构的实时动态数据,涵盖工商、股权、司法、知识产权等多维度信息,推出了“司法大数据”功能。 随着大数据、人工智能技术的发展,律师行业已转型为开…

python——joblib进行缓存记忆化-对计算结果缓存

问题场景 在前端多选框需要选取多个数据进行后端计算。 传入后端是多个数据包的对应路径。 这些数据包需要按一定顺序运行,通过一个Bag(path).get_start_time() 可以获得一个float时间值进行排序,但由于数据包的特性,这一操作很占用性能和时…

Antd Vue3中 下拉框漂浮脱离bug

查阅资料后找到解决方法&#xff1a; <a-select :getPopupContainer"(triggerNode) > { return triggerNode.parentNode || document.body } " ><a-select-option v-for"(item, index) in List" :key"index" :value"item.id&q…

pkix报错

pkix报错 ----> aliehs-service-log‖2024-03-08 16:19:46.952‖http-nio-8030-exec-6‖com.aliehs.utils.CommonUtil.doGet‖ doGet Exception, url:https://e.ali.com/cgi-bin/token?grant_typeclient_credential&appidwx44e047da3a4ada49&secret1dc98a6babf3fd…

格尔支持websocket配置方案

1.格尔配置策略为反向代理&#xff0c;应用侧需要配置为wss协议 2.客户端浏览器设置(80版本)&#xff0c;弹窗“您的连接不是私密连接”&#xff0c;点击继续前往也是该页面&#xff0c;在快捷方式&#xff0c;目标后面加上--ignore-certificate-errors --allow-running-insec…

物联网服务器搭建及部署详细说明:掌握 Node.js、MongoDB、Socket.IO 和 JWT 的实用指南

关键知识点目录 1. 环境准备 1.1 硬件要求 1.2 软件要求 2. 搭建步骤 3. 数据处理与存储 3.1 数据存储 3.2 数据实时处理 3.2.1 安装 Socket.IO 3.2.2 修改服务器代码 4. 安全性 4.1 身份验证与授权 4.2 加密通信 4.2.1 生成自签名证书&#xff08;开发环境&#…

uniapp+vue微信小程序项目中实现手机号授权登录

效果图: 实现方式: <button open-type="getPhoneNumber" class="btn-normal" @getphonenumber="getPhoneNumber">手机号授权登录</button> open-type 有效值 值说明平台差异说明getPhoneNumber获取用户手机号,可以从@getphone…

LeetCode Hot100 将有序数组转换为二叉搜索树

给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被视为正确…

在react中使用wangeditor富文本

官方文档 wangeditor5在线文档 依赖安装&#xff08;react框架&#xff09; yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangeditor/editor-for-react # 或者 npm install wangeditor/editor-for-react --save在React 中使用wangEditor …

编写java程序,自动监控程度,dump内存文件

步骤 1&#xff1a;编写 Java 程序 首先&#xff0c;编写一个 Java 程序&#xff0c;当内存使用达到 11GB 时生成 heap dump 文件&#xff0c;并以日期命名。将以下代码保存为 MemoryMonitor.java 文件&#xff1a; import com.sun.management.HotSpotDiagnosticMXBean; impo…

SpringBoot整合jasypt加密和解密yml配置文件

使用场景 在微服务架构中&#xff0c;配置管理是一个重要的问题。通常&#xff0c;我们会在配置文件中存放一些敏感信息&#xff0c;如数据库连接字符串、API 密钥等。这些敏感信息如果明文存储在配置文件中&#xff0c;存在较大的安全隐患。为了提高安全性&#xff0c;我们需…

Linux安装与配置

下载VMware 首先我们需要下载一个叫VMware的软件&#xff1a; 进入官方下载&#xff0c;地址&#xff1a;https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html选择与自己电脑版本适配的VMware版本【 输入许可证密钥 MC60H-DWHD5-H80U9-6V85…

Python | “IndexError: tuple index out of range” 【已解决】

Python | “IndexError: tuple index out of range” 【已解决】 IndexError: tuple index out of range 深度解析与实战指南 在Python编程中&#xff0c;IndexError: tuple index out of range是一个常见的错误&#xff0c;它发生在尝试访问元组&#xff08;或其他可索引的数…