为什么Precision高Recall就低——F1 score

2023-11-18

梳理一下公式

sensitivity = recall

 

Precision和Recall虽然从计算公式来看并没有什么必然的相关性关系,但是,在大规模数据集合中,这2个指标往往是相互制约的。理想情况下做到两个指标都高当然最好,但一般情况下,Precision高,Recall就低,Recall高,Precision就低。所以在实际中常常需要根据具体情况做出取舍。

对于搜索应用,在保证召回率的条件下,尽量提升精确率。即减少假阳性率、搜索出无关的信息。

对于癌症检测、地震检测、金融欺诈等,则在保证精确率的条件下,尽量提升召回率。减少假阴性率、漏检、。

所以,很多时候我们需要综合权衡这2个指标,这就引出了一个新的指标F-score。这是综合考虑Precision和Recall的调和值。

当β=1时,称为F1-score,这时,精确率和召回率都很重要,权重相同。当有些情况下,我们认为精确率更重要些,那就调整β的值小于1,如果我们认为召回率更重要些,那就调整β的值大于1。

举个例子:癌症检查数据样本有10000个,其中10个数据祥本是有癌症,其它是无癌症。假设分类模型在无癌症数据9990中预测正确了9980个,在10个癌症数据中预测正确了9个,此时真阳=9,真阴=9980,假阳=10,假阴=1。

那么:
Accuracy = (9+9980) /10000=99.89%

recall = 9/10=90%

Precision=9/(9+10)= 47.36%

F1-score=2×(47.36% × 90%)/(1×47.36%+90%)=62.07%

F10-score=101× (47.36% × 90%)/(100×47.36%+90%)=89.2%

F0.5-score=(1+0.25)× (47.36% × 90%)/(0.25×47.36%+90%)=52.32%

F0.1-score=(1+0.01)× (47.36% × 90%)/(0.01×47.36%+90%)=47.58%

可以看到,当召回率更重要时,当β升高,F-score逼近于召回率。

当精确率更重要时,当β降低时,F-score逼近于精确率。

参考文献

https://blog.csdn.net/saltriver/article/details/74012163

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

为什么Precision高Recall就低——F1 score 的相关文章

  • 测量java短时运行线程执行时间

    我目前正在开发某种数据库基准测试应用程序 基本上 我想做的是使用线程模拟一定数量的客户端 这些客户端在特定时间段内对数据库重复相同的操作 例如 读取操作 在此期间 我想在每个线程中测量从数据库获取答案的平均延迟 我的第一选择是依赖 Thre
  • 使用 .* 宽度说明符调用 sprintf 时出现奇怪警告

    对于以下代码 https godbolt org z WcGf9hEs3 https godbolt org z WcGf9hEs3 include
  • C++除法精度不够如何提高结果精度

    我正在研究莱布尼茨问题 如图所示https www hackerrank com challenges leibniz https www hackerrank com challenges leibniz这里 计算 1 1 3 1 5 1
  • 在 C++ 中设置默认浮点打印精度

    我想在比较过程中控制双精度数的精度 然后使用 C 恢复到默认精度 我打算使用setPrecision 设置精度 那么将精度设置回默认值的语法 如果有 是什么 我正在做这样的事情 std setPrecision math log10 m F
  • Delphi中的浮点运算是确定性的吗?

    Delphi中的浮点运算是确定性的吗 IE 对于使用 Delphi Win32 编译器编译的同一个可执行文件进行相同的浮点数学运算 我是否会得到与使用 Win64 编译器 OS X 编译器 iOS 编译器或 Android 编译器相同的结果
  • C++ 中的最小浮点正值

    C 中乘法逆元仍然有限的最小正值是多少 试过numeric limits
  • 如何确定给定的 int64_t 是否可以无损存储在 double 中?

    我想确定给定的 64 位整数是否可以无损存储在双精度数中 现在我有这个代码 static cast
  • 如何获得最大可能的精度? (Python - 十进制)

    我正在使用Decimal https docs python org 2 library decimal html用于需要精度的操作的类 我想使用 最大可能 的精度 我的意思是 程序运行的系统可以处理的精确度 要设置一定的精度很简单 imp
  • 如何使用“%f”将双精度值填充到具有正确精度的字符串中

    我正在尝试使用 a 来填充带有双精度值的字符串sprintf像这样 sprintf S f val 但精度被截断至小数点后六位 我需要大约 10 位小数来保证精度 如何才能做到这一点 宽度 精度 宽度应包括小数点 8 2表示8个字符宽 点前
  • 给定精度的快速双精度数到字符串转换

    我需要以给定的精度将双精度数转换为字符串 String format 3f value or DecimalFormat 可以完成这项工作 但基准测试表明它很慢 甚至Double toString在我的机器上转换 100 万个数字大约需要
  • 精确存储大整数

    在R软件中 a lt 123456789123456789123456789 sprintf 27f a 1 123456789123456791337762816 000000 我得到了错误的答案 我想要准确的a value 为什么系统显
  • 大浮点和的精度

    我正在尝试对正递减浮点数的排序数组求和 我发现对它们求和的最佳方法是开始从最低到最高将数字相加 我编写此代码是为了提供一个示例 但是 从最高数字开始的总和更精确 为什么 当然 1 k 2之和应该是f 1 644934066848226 in
  • 是否可以在不诉诸任意精度数据类型的情况下消除浮点错误?

    我想知道在特定条件下是否可以在不诉诸任意精度数据类型的情况下消除浮点错误 问题是常见的 语言是 Ruby 但它适用于任何语言 f 1829 82 gt 1829 82 f 12 0 gt 152 485 f 12 0 round 2 gt
  • 我应该如何比较这些双打以获得所需的结果?

    我这里有一个简单的示例应用程序 我在其中进行乘法和加法double变量 然后将它们与预期结果进行比较 在这两种情况下 结果都等于预期结果 但当我进行比较时 它失败了 static void Main string args double a
  • SQL Server:使用数字文字进行计算

    我用浮点计算做了一些测试 以尽量减少精度损失 我偶然发现了一个现象 我想在这里展示并希望得到解释 当我写作时 print 1 0 1 0 60 0 结果是 60 0024000960 当我编写相同的公式并进行显式转换时float print
  • 截断浮点数而不向上舍入

    我有一个浮点数 我想将其截断为 3 位 但我不想向上舍入 例如 转换1 0155555555555555 to 1 015 not 1 016 我将如何在 Ruby 中做到这一点 您还可以转换为 BigDecimal 并对其调用 trunc
  • Keras 服装回调。生成精确召回时,我在 _flow_index 中收到错误

    我正在使用 Keras 训练二元分类器 我想在每个时期后生成 precision score 和 recall score 以便更深入地分析训练 在互联网上我找到了教程 帮助 例如 https medium com thongonary h
  • 如何在C++中生成高精度的随机双数?

    我正在尝试生成一系列高精度的双随机数 例如 0 856365621 小数点后有 9 位数字 我从网上找到了一些方法 但是 它们确实生成了双随机数 但精度没有我要求的那么好 只有小数点后6位 那么 我可以知道如何实现我的目标吗 在 C 11
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • MySQL使用long类型数字过滤varchar类型时返回额外记录

    一个简单的表格 CREATE TABLE tbl type test uid varchar 31 NOT NULL DEFAULT 0 value varchar 15 NOT NULL DEFAULT PRIMARY KEY uid E

随机推荐

  • java:面向对象(多态的主板示例)。

    需求 电脑运行实例 电脑运行基于主板 我们写这样一个代码 class MainBoard public void run System out println mainboard run class DuoTaiDemo4 public s
  • 玩转格式转换——.xml->.txt

    一个帅气的boy 你可以叫我 loVe 个人主页 l Ve的个人主页 如果对你有帮助的话希望三连 支持一下博主 VOC数据集转YOLO数据集 1 前言 2 分析xml txt数据 3 转换过程 4 最后结果对比 1 前言 最近学习Yolo
  • 友元成员函数使用时的注意事项

    友元成员函数的注意事项 友元的概念 友元 的概念其实是针对于类的私有成员来说的 一个类的由于封装的缘故 类体中私有成员是不可以被外界访问的 无论是继承也好 都是无法访问类内私有成员的 但是正是有那么一些人 愿意打破陈规破例访问类体内的私有成
  • linux下c/c++开发工具集

    clang llvm组合 lldb debugger 代码补全vim clang complete linux开发花环境 vim eclipse kscope kate kdevelop emacs win虚拟机 source insigh
  • Python excel数据处理之公式---openpyxl

    有些时候excel中直接通过公式进行计算比较方便 这样会比较简洁 并且下面代码也解决了excel读取单元格内容时 通过公式计算的值 为None的问题 咱们废话不多说 直接上代码 import sys import openpyxl from
  • element-ui 通过变量修改默认样式

    项目用的是 element ui vue 项目里有个需求是要修改 element 消息提示组件中 warning 类型的背景色和那个小感叹号的背景色 有两种方式 第一种比较简单 用 F12 找到想要修改的元素 直接覆盖对应样式 但考虑到有时
  • 机械臂控制C语言程序,ROS机械臂开发:MoveIt!编程

    一 编程接口 提供C Python GUI 命令行等接口 move group节点 Python和C 接口示例 MoveIt关注更多的是plan工作 后面的execute需要控制器执行 MoveIt只是监控功能 编程步骤 连接控制需要的规划
  • Qt中LineEdit、TextEdit 、PlainTextEdit三个控件的区别

    Qt中LineEdit TextEdit PlainTextEdit这三个控件区别为 输入格式不同 用途不同 限制行数不同 一 输入格式不同 1 LineEdit LineEdit的输入格式为单行文本输入 2 TextEdit TextEd
  • 亚马逊云aws12个月免费服务器搭建小结 (

    转载自 http blog sina com cn s blog 53a30a3b0101hdx9 html 本文小结了在亚马逊aws Amazon Web Services 云计算服务上注册一个免费的服务器的方法和一些注意事项 郑重申明
  • java中string与json互相转化

    在Java中socket传输数据时 数据类型往往比较难选择 可能要考虑带宽 跨语言 版本的兼容等问题 比较常见的做法有两种 一是把对象包装成JSON字符串传输 二是采用java对象的序列化和反序列化 随着Google工具protoBuf的开
  • 数据结构实验1-顺序表-各种操作

    要求 创建两个顺序表实现两个顺序表的合并以及扩容 以及单个顺序表的查找 插入 删除 排序 清空 销毁 查找前驱以及后继等等 有错会继续改的 以及程序的完备性 健壮性 可读性等等 经过这次实验感觉我写的最多的不是程序而是告诉程序执行者下一步该
  • C语言程序设计(张玉生)第四章课后习题编程(分支结构程序设计)

    1 编写程序 输入一个整数 判断它是奇数还是偶数 并输出判断结果 include
  • [学习笔记] EL 使用EL表达式获得作用域属性

    采用EL表达式 对于属性的访问的隐含访问顺序是 pageContext httpServletRequest HttpSession ServletContext 通过以下实例 来说明 servlet scopeVar java impor
  • ADS系列 - RLC器件滤波器设计教程1

    相关文章 ADS SystemVue 文章集合页 ADS系列 定向耦合器设计教程1 ADS系列 混频器设计 混频器原理介绍及仿真1 ADS系列 低噪声放大器 LNA 模型下载安装及 LNA仿真设计 Keysight的 SystemVue 介
  • Spring+Redis 存入Key Value 乱码前缀

    今天试着在项目中读写redis对象 发现全是乱码 如下图所示 而后在网上找了些资料 才知道是序列化问题 目前已解决谨此记录 以防再犯 ApplicationContext context new ClassPathXmlApplicatio
  • 机房软件管理服务器及系统软件,高校机房软件自动化部署管理系统的设计及实现...

    摘要 随着我国高等学校计算机教育的飞速发展 计算机作为一种重要的信息化工具受到越来越大的重视 计算机在各个学科中也发挥着越来越重要的作用 现在计算机在高校中是公共必修课 而且开设了更多的计算机应用专业课 高等院校计算机机房的规模也越来越大
  • 使用WireShark协议分析仪来分析ICMP与FTP协议

    这是网络第2次试验 wireshark分析仪网站 http www wireshark org 了解ICMP协议 ICMP Internet Control Message Protocol 网际报文控制协议 是Internet协议族的核心
  • python中 r什么意思_python中w、r指的是什么意思

    python中w r指的是什么意思 发布时间 2020 11 20 10 54 44 来源 亿速云 阅读 100 作者 小新 这篇文章将为大家详细讲解有关python中w r指的是什么意思 小编觉得挺实用的 因此分享给大家做个参考 希望大家
  • Ubuntu安装GMP库、PBC library

    历时一周终于安装完成 期间犯了太多错误 都是一点一点查的 Pbc library 库的安装依赖于如下四个文件 GMP Library M4 flex bison 其中在Linux系统中 M4 flex bison 均可以通过 apt get
  • 为什么Precision高Recall就低——F1 score

    梳理一下公式 sensitivity recall Precision和Recall虽然从计算公式来看并没有什么必然的相关性关系 但是 在大规模数据集合中 这2个指标往往是相互制约的 理想情况下做到两个指标都高当然最好 但一般情况下 Pre