模型训练中的精确率、召回率定义是什么 计算公式是什么

模型与算力

把精确率和召回率的定义、计算公式讲清楚,并给出在什么场景下该优先保哪一个的判断方法。

训练或评估分类模型时,看准确率挺高,但一上线就发现该抓的没抓到、不该报的报了一堆。这时候就需要拆开看精确率和召回率。这篇从定义和公式讲起,给出混淆矩阵的四个格子、两条公式的推导、以及按业务场景决定先保哪个的判断清单,适合刚接触模型评估的读者。

分类模型评估里最容易踩的坑,就是只看一个总体准确率。数据一不平衡,准确率能高得离谱,可一上线就发现:该抓的没抓到,不该报的报了一堆。这时候必须把「报得准不准」和「该抓的抓到没有」拆成两个数分开看,也就是精确率和召回率。这篇把定义、公式和取舍逻辑讲清楚,适合刚开始做模型评估的人。

先记住一句话:两者不是一回事,也不是越高越好就能兼得的两个指标。它们共用同一个分子,动一个必然牵动另一个。想真正读懂,得从混淆矩阵的四个格子开始数起,再去谈公式和阈值。

先画一张混淆矩阵,四个格子是全部地基

把模型的预测结果和真实标签交叉排列,就得到四格:真阳、假阳、假阴、真阴。这四个格子是所有分类指标的原材料,精确率和召回率都是从里面挑两个格子算出来的。所以算指标之前,先把四格的样本量数清楚,不然公式出来的数字没有解释力。基础词条可以到 /ai-dict/category/basics 对照着看。

真阳(TP)
真实是阳性、模型也判为阳性,抓对了的那部分
假阳(FP)
真实是阴性、模型却判为阳性,误报的那部分
假阴(FN)
真实是阳性、模型却判为阴性,漏掉的那部分
真阴(TN)
真实是阴性、模型也判为阴性,正常放过的那部分

每个格子对应一种业务动作。拿风控场景举例:假阴是漏掉的坏账,假阳是被误伤的客户。两条路由的代价完全不同,这也是后面判断该优先保哪个指标的根本依据。标签质量不可靠时,四个格子本身就是错的,指标再好也没意义。

两条公式:一个盯「报得准不准」,一个盯「漏没漏」

精确率的分母是模型所有判为阳性的样本,也就是真阳加假阳。它回答的问题是:我报出来的这些,有多少是对的。召回率的分母是数据里所有真实阳性的样本,也就是真阳加假阴。它回答的是:该抓的东西,我抓到了多少。两条公式共用同一个分子真阳,这就是它们无法同时固定的原因。

指标计算公式回答的问题分母范围
精确率真阳 /(真阳 + 假阳)报出来的有多少是对的模型判阳的样本
召回率真阳 /(真阳 + 假阴)该抓的抓到了多少真实阳性的样本
F12 × 精确率 × 召回率 /(精确率 + 召回率)两者的调和平均——

F1 把两个数揉成一个数字,方便做单一排序对比。但要知道它隐含了一个假设:精确率和召回率同等重要。业务上如果一边代价明显更大,就不该只看 F1,否则等于默认两边的错一样贵。具体选用哪条曲线对比,可以在 /benchmarks 的评测方法分区里找参考。

什么时候保精确率、什么时候保召回率:按错一次的代价来定

判断标准其实一句话就能写完:把两边的代价各写成一句,「漏掉一个损失多少,误报一个损失多少」。谁大就偏谁。假阳代价高的场景,比如自动封号、自动删帖、给客户推贵价方案,优先保精确率;假阴代价高的场景,比如疾病初筛、安全告警、反欺诈线索,优先保召回率。

  • 漏掉一个代价明显更大:偏召回率,宁可多报也别漏
  • 误报一个代价明显更大:偏精确率,宁可漏点也别乱报
  • 两边代价接近:折中处理,用阈值扫出一条曲线找平衡点
  • 业务上根本不可能两边都要:明确接受哪一边的损失,写进验收标准
  • 样本极度不均衡或标签本身不可靠:两个指标都会失真,先回去查标注和采样,别急着调阈值

不适用的情形也要说清楚:如果标签本身不可靠,或者正负样本比例极端到某一格几乎没样本,那么无论精确率还是召回率都不可信。这时候该做的是回头检查标注质量、采样方式和验证集构造,而不是继续在阈值上死抠。

落地动作清单:从跑数到定阈值

  1. 固定验证集用留出的验证集算指标,别拿训练集数字当结论。训练集好看验证集崩掉是另一类问题,这里不展开。
  2. 选定主指标按业务实际代价从精确率和召回率里挑一个作为主指标,写进验收文档,避免上线后各说各话。
  3. 扫阈值从高到低扫一遍判定阈值,记录每个点对应的精确率和召回率,挑出两个业务能解释的候选点。
  4. 持续监控上线后同时盯这两个值。模型没变但数据分布变了,指标一样会掉。可用工具到 /tools/quality-monitor 找。
  5. 写进交接文档把最终阈值和指标口径记下来,换人接手时能复现同一套结论,不然每次都要重新吵一遍。

这套流程的重点不在算法本身,而在把「业务代价」翻译成指标约束。先定代价,再选指标,最后调阈值,顺序反了就会来回返工。想横向对比各家工具在评估环节的支持情况,可以到 /tools 目录里按能力筛选。

下一步把手上项目的验证集翻出来,按上面的步骤先扫一遍阈值,看看精确率和召回率的取舍点落在哪,再回头确定主指标。

常见问题

精确率和召回率哪个更重要?

没有通用答案,取决于两类错误的代价。漏检代价大就优先召回率,误报代价大就优先精确率。做法是把两种错误各算一笔成本,再决定阈值往哪边偏,而不是背一句「召回率更重要」。

精确率高召回率低说明什么?

说明模型只在很有把握时才判阳性,报出来的基本对,但大量真阳性被放过了。常见于阈值设得过高。可以把阈值往低调一点再观察两者变化,别只盯着一个数调。

准确率够高了,还需要看精确率和召回率吗?

要。样本正负比例悬殊时,把所有样本都判成多数类也能拿到很高的准确率,但少数类一个都没抓出来。这时候准确率基本没信息量,必须拆开看四格和两个指标。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。