召回率和精确率

召回率和精确率是一些文档中常用的词语,怎么理解了?本文会简单、明了的介绍一下!

概念

参考:en.wikipedia.org/wiki/Precis...

Precision (also called positive predictive value) is the fraction of relevant instances among the retrieved instances. Written as a formula:

Precision=Relevant retrieved instancesAll retrieved instances

Recall (also known as sensitivity) is the fraction of relevant instances that were retrieved. Written as a formula:

Recall=Relevant retrieved instancesAll relevant instances


例子

参考: www.zhihu.com/question/19...

公园里有50只皮卡丘和10只臭臭泥,有正常审美的人都会想要用精灵球把尽可能多的皮卡丘抓回来,同时尽可能少地抓住臭臭泥!最终我们的精灵球成功抓55只回来了,其中45只是皮卡丘和10是只臭臭泥!

我们就可以说50只皮卡丘中有45只被召唤 (call) 回来 (re) 了,所以 recall = 45 / 50,但同时,这台机器还误把5只臭臭泥识别为皮卡丘,在它抓回来的所有55只神奇宝贝中,精灵球对皮卡丘判断的精确率 (precision) = 45 / 55 !

  • TP = 45 (真正,抓对的)
  • FP = 55 - 45 = 10(假正,抓错了[误报],例如我把10只臭臭泥当成了皮卡丘)
  • FN = 50 - 45 = 5(假负,将现实的True判断为Negative,没抓住[漏报],例如这里我有5只皮卡丘没抓住)
  • TN = 10 - 10 = 0 (真负,全部的负集-误报,这里我们把错误的全抓了,所以这里为0)

recall(召回率) = TP/(TP+FN) = 45/50 抓回来多少,召回率越高需要降低精确率保证全都得抓住,可能抓错的就回多! precision(精确率) = TP/(TP+FP) = 45/55 抓对了多少,提高精确率需要保证你抓错的尽可能的少,可能抓回来的比较少!

实际应用

例如有一个监控报警的服务,通常来说对于一个流经LB的服务需要统计SLA,那么如果我们把报警的条件设计成5xx才报警的话,会造成漏报,导致一些对于4xx敏感的业务报警没报警出来,此时如果我们把条件变成4xx/5xx就会导致误报很多!

所以实际需求中需要根据业务实际情况来评估召回率/精确率,通常报警系统需要保证召回率尽可能的高需要保证90%以上,精确率只要保证20%左右就行了!

总结

避免漏报,就需要提高召回率,对应到代码里就是放宽条件限制!

避免误报,就需要提高精确率,对应到代码里就是多加一些条件判断!

综合来看需要一个权衡,不同业务场景要求的召回率和精确率是不一样的!

中文中有些不严谨,例如 精确率、准确率 这俩词其实一个意思,但是 precision、accuracy 是俩意思,注意很多文章拿精确率、准确率来做区分,本文所讲的主要是 precision!

相关推荐
明月_清风16 小时前
Go语言空接口与类型断言完全指南:从"万能容器"到"类型还原"
后端·go
每天进步一点_JL16 小时前
Spring Boot 缓存体系
后端
百珏16 小时前
[灰度发布]:全链路透传组件:APM、自研方案与 Java Agent 的实现取舍
后端·设计模式·架构
正在走向自律16 小时前
DISTINCT 去重查询为什么这么慢?聊聊我能理解的几种优化思路
后端
OpsEye16 小时前
数据库连接池爆了,这3个命令能救你一次
运维·数据库·后端
绝知此事16 小时前
【产品更名】通义灵码升级为 Qoder CN:AI 编码助手新时代,附大模型收费与 Spring Boot 支持全对比
人工智能·spring boot·后端·idea·ai编程
~|Bernard|16 小时前
GO语言中哪些类型是可比较类型的(==和!=)
开发语言·后端·golang
用户67570498850217 小时前
Celery 太重了?这可能是你一直在找的 asyncio 任务队列
后端·python·消息队列
Cloud_Shy61817 小时前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 下篇)
前端·后端·python·数据分析·excel
神奇小汤圆17 小时前
为什么Redis能称霸缓存界?揭秘其每秒10万+读写的核心技术
后端