为什么准确率会骗人
假设一个模型判断这封邮件是不是垃圾邮件,准确率 99%,听起来很好。但如果 99% 的邮件本来就不是垃圾邮件,那么把所有邮件都判成正常,也能拿到 99% 的准确率,这个模型其实什么都没识别出来。当两类样本数量悬殊时,准确率就失去了意义。
这是评估 AI 模型时容易踩的一个坑:一个漂亮的总分,可能只是把多数类全判对的结果。看懂这一点,你才不会被一个数字唬住。评估一个模型,无论是一个分类器还是一个大语言模型,都绕不开指标。
精确率、召回率、F1 各是什么
准确率是判对的比例,样本均衡时可用,不均衡时会骗人。精确率回答的是:模型说是的里面,有多少真的是的,它衡量误报。召回率回答的是:所有真的是的里面,模型找出了多少,它衡量漏报。F1 值是精确率和召回率的综合,用来在两者之间取平衡。
这三个指标分别盯着不同的错误类型:误报是多抓了,漏报是少抓了,多数任务要在这两者之间做取舍。
什么时候看哪个指标
关键在判断误报和漏报哪个代价更大。垃圾邮件过滤里,误把正常邮件扔进垃圾箱代价大,所以更看重精确率;工业缺陷检测里,漏掉一个次品代价大,所以更看重召回率;内容审核这类两头都要控的场景,通常看 F1 或同时看两项。
换成更通用的说法:凡是误伤正常对象代价高的,优先精确率;凡是放过问题对象代价高的,优先召回率。先定代价,再选指标。
还有两个容易被忽略的指标
一个是覆盖率:有些系统会在不确定时转人工处理,这时要看它能自动处理的比例。如果 90% 的情况都要转人工,那它就没省下多少事。另一个是置信度阈值:模型给每条结果附带的把握程度,设得高低,会直接影响误报和漏报的分布。
覆盖率回答它到底替我干了多少活,阈值回答它多确定才动手。这两个常被准确率 98% 这种总数字盖住,实际却更影响能不能落地。
阈值的作用可以这样理解:把判断标准调严,误报会下降、漏报会上升;调松则反过来。所以单独报一个准确率,往往掩盖了阈值被设在哪里。看评估结果时,建议同时问一句它是在哪个阈值下测出来的。
拿到一个漂亮数字怎么追问
当有人向你介绍一个 AI 系统,说准确率有 98% 时,你可以追问两句:正负样本的比例是多少?误报和漏报分别是多少?前者判断准确率可不可信,后者判断它能不能用。一个只报准确率、不说样本分布和错误类型的评估,参考价值有限。
这条追问方法可以套用到很多场景:语音合成要看念错率,智能抠像要看边缘是否干净,智能重构图要看主体是否完整,不同任务该看的指标不同,但问清错在哪里的姿势是通用的。
如果任务有多个类别,比如把图片分成猫、狗、车三类,指标还要按类别分开看。总体准确率高,可能只是常见类别判得好,稀有类别一塌糊涂。评估这类模型,除了总体指标,还要看每个类别的精确率和召回率,尤其是你最在意的那个类别。
一张速查表:指标与代价
- 准确率在样本不均衡时会骗人
- 精确率管误报,召回率管漏报
- 拿到准确率,先问正负样本比例、误报漏报
| 场景 | 更看重 | 原因 |
|---|---|---|
| 垃圾邮件过滤 | 精确率 | 误伤正常邮件代价大 |
| 工业缺陷检测 | 召回率 | 漏掉次品代价大 |
| 内容审核 | F1 或两项并看 | 误杀和漏放都要控制 |
| 客服意图识别 | 覆盖率与置信度 | 不确定就转人工 |
评估指标的选择,本质是在回答这个系统错在哪里更不可接受。先想清楚代价,再选指标,你就能把 98% 这类数字还原成它真正的含义:一个需要上下文才能判断的数字。


