理解准确率(accuracy)、精度(precision)、查全率(recall)、F1

2023-11-01

Precision又叫查准率,Recall又叫查全率。这两个指标共同衡量才能评价模型输出结果。

TP, TN, FP, FN的定义

在二分类问题中。

Real=1 Real=0
Predict=1 TP FP
Predict=0 FN TN
  • TP: 预测为1(Positive),实际也为1(Truth-预测对了)
  • TN: 预测为0(Negative),实际也为0(Truth-预测对了)
  • FP: 预测为1(Positive),实际为0(False-预测错了)
  • FN: 预测为0(Negative),实际为1(False-预测错了)

总的样本个数为:TP+TN+FP+FN。

Accuracy/Precision/Recall的定义

Accuracy = (预测正确的样本数)/(总样本数)=(TP+TN)/(TP+TN+FP+FN)

Precision = (预测为1且正确预测的样本数)/(所有预测为1的样本数) = TP/(TP+FP)

Recall = (预测为1且正确预测的样本数)/(所有真实情况为1的样本数) = TP/(TP+FN)

如何理解Precision/Recall

假设100癌症训练集中,只有1例为癌症(label=1)。如果模型永远预测y=0,则模型的Precision=99/100,很高。但Recall=0/1=0,非常低。
所以单纯用Precision来评价模型是不完整的,评价模型时必须用Precision/Recall两个值。

如何理解F1

假设我们得到了模型的Precision/Recall如下

Precision Recall
Algorithm1 0.5 0.4
Algorithm2 0.7 0.1
Algorithm3 0.02 1.0

但由于Precision/Recall是两个值,无法根据两个值来对比模型的好坏。有没有一个值能综合Precision/Recall呢?有,它就是F1。

F1 = 2*(Precision*Recall)/(Precision+Recall)

Algorithm F1
Algorithm1 0.444
Algorithm2 0.175
Algorithm3 0.039

只有一个值,就好做模型对比了,这里我们根据F1可以发现Algorithm1是三者中最优的。

分类阈值对Precision/Recall的影响

做二值分类时,我们认为,若h(x)>=0.5,则predict=1;若h(x)<0.5,则predict=0。这里0.5就是分类阈值。

增加阈值,我们会对预测值更有信心,即增加了查准率。但这样会降低查全率。(High Precision, Low Recall)
减小阈值,则模型放过的真例就变少,查全率就增加。(Low Precision, High Recall)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解准确率(accuracy)、精度(precision)、查全率(recall)、F1 的相关文章

随机推荐

  • java中静态代码块详解

    今天在项目中看到这行代码 静态代码块 很久没用静态代码块了 今天来复习一下 依旧按照为什么 是什么 怎么用 的思想 去学习 为什么 先说说代码中为什么要使用这种写法吧 还记得静态代码块的特点吗 随着类的加载而执行 而且只执行一次 对 没错
  • 求求你们了,MyBatis 批量插入别再乱用 foreach 了,5000 条数据花了 14 分钟。。...

    近日 项目中有一个耗时较长的Job存在CPU占用过高的问题 经排查发现 主要时间消耗在往MyBatis中批量插入数据 mapper configuration是用foreach循环做的 差不多是这样 由于项目保密 以下代码均为自己手写的de
  • Windows获取CPU、内存和磁盘使用率脚本

    获取CPU使用率脚本 vbs 另存为cpu vbs On Error Resume Next Set objProc GetObject winmgmts root cimv2 win32 processor cpu0 Wscript Ec
  • C语言:输出1000~3000年中所有的闰年,每5年换一行

    C语言 输出1000 3000年中所有的闰年 每5年换一行 题目 分析 代码 题目 编写程序 输出1000 3000年中所有的闰年 每5年换一行 分析 判断闰年的条件为 能被4整除但不能被100整除 或者能被400整除 代码 include
  • 《Vision Transformers: State of the Art and Research Challenges》论文翻译阅读

    作者 Bo Kai Ruan Hong Han Shuai Wen Huang Cheng 概要 Transforme在自然语言处理中取得了巨大的成功 由于Transformer的自注意机制具有强大的能力 研究人员开发vision tran
  • C++ 聚合类(Aggregate Class)

    C 聚合类 Aggregate Class 文章目录 C 聚合类 Aggregate Class 概述 聚合类定义 聚合类的特性 value initialized 聚合类的初始化方法 union 聚合 总结 概述 该篇文章是用于梳理在学习
  • 安装mysql中遇到的错误:

    1 安装报错 Install Remove of the Service Denied 解决方案如下 2 安装报错 The service already exists 解决方案如下 3 安装报错 Can t create test fil
  • 真机上,微信小程序弹出层中使用textarea组件无法显示文本的问题

    真机上 微信小程序弹出层中使用textarea组件无法显示文本的问题 解决思路 文章链接 最近开发微信小程序发现了一个BUG 最后莫名奇妙地解决了 隐隐约约地感觉和微信小程序地textarea组件的z index层级有关 没有去深究其中原理
  • 【前端知识之Vue】diff算法流程

    前言 本系列主要整理前端面试中需要掌握的知识点 本节介绍diff算法流程以及相关例子 如果想看源码推荐YK菌的 Vue源码 图解 diff算法 与 虚拟DOM snabbdom 最小量更新原理解析 手写源码 updateChildren哦
  • IntelliJ IDEA-配置文件位置

    关于配置文件的位置 一旦开始使用IDEA之后 就需要做很多的配置相关工作 使得IDEA越来越符合你的个人习惯 让你使用起来得心应手 而这些配置信息 都保存在C盘 比如我的就会默认保存在如图所示的位置 C Documents and Sett
  • flutter loading前一个界面关闭后一个界面的loading

    import package flutter cupertino dart import package flutter material dart import package flutter easyloading flutter ea
  • H5 架构和原生架构的区别

    1 App 的 3 种开发方式 表面上看 手机 App 都是同样的东西 就是手机上的应用程序 点击图标就能运行 但是它们的底层技术不一样 按照开发技术 App 可以分成三大类 原生应用 简称 nativeApp Web 应用 简称 WebA
  • 阿里云轻量应用服务器mysql远程连接教程

    阿里云轻量应用服务器mysql远程连接教程 打开轻量应用服务器控制台 打开防火墙 点击添加规则 打开服务器命令行 可以使用Xshell等软件 在阿里云控制台开放3306端口后后在linux系统中也要开放3306端口 在服务器中开放防火墙33
  • esp32搭建lvgl

    platformio 下载两个库 TFT eSPI lv arduino 3 0 1对应lvgl 7 2 7 5对应lvgl6 pio libdeps tft espi user Setup h 驱动芯片选择 颜色顺序 分辨率选择 不同芯片
  • Nginx反向代理配置流式响应

    Nginx 是通过缓存响应内容来处理请求的 也就是说 当 Nginx 接收到完整的响应后 才会将其发送给客户端 所以默认不支持流式响应 这里讲讲 Nginx 反向代理中怎么配置流式响应 一 使用背景 最近使用 Egg js 搭建自动化部署服
  • MyEclipse提示过期,MyEclipse Subscription Expired解决方案

    一 错误描述 某一天打开MyEclipse 突然发现出现如下提示框 1 错误日志 Thank you for choosing MyEclipse Your license expired 1091 days ago To continue
  • @Valid和@Validated在service层的应用及问题汇总

    1 背景 实际开发中 很多时候要对参数校验 比如为空等 除了要在接口的入口处使用 很多普通方法也需要检查 比如service方法 那么如何在service上使用这个参数校验呢 2 使用方式 步骤一 在service接口上加上 Validat
  • [CF1149C](Tree Generator)

    题意 给出一颗树的括号序 有m个操作 每次交换两个括号 保证交换后括号序仍然合法 输出每次操作后 包括未操作时 树的直径 solution 首先转化题目 对于一棵树的括号序 我们找到一段子串 满足将其中匹配的括号消去后剩下的括号最多 那么剩
  • STM32 Flash操作(擦写)过程中器件复位导致数据丢失问题

    1 问题描述 产品在运行过程中需要保存一些断电不丢失的数据 为此将数据保存在STM32内部的flash中 但是测试人员在测试的过程中 修改了数据参数 直接断电重启机器 并没有等待flash的操作时间 导致原有的数据丢失 2 原理分析 本产品
  • 理解准确率(accuracy)、精度(precision)、查全率(recall)、F1

    Precision又叫查准率 Recall又叫查全率 这两个指标共同衡量才能评价模型输出结果 TP TN FP FN的定义 在二分类问题中 Real 1 Real 0 Predict 1 TP FP Predict 0 FN TN TP 预