准确率高就代表模型好吗
拿到一个模型,第一反应往往是看准确率。但准确率是评估指标里最容易被误读的一个。它只回答「猜对了多少」,不回答「错在哪里」,也不回答「这个成绩是否值得骄傲」。
先看准确率到底在算什么
准确率的定义很直白:预测正确的样本数除以总样本数。问题出在,当各类别数量悬殊时,这个比值会被多数类主导。
比如有一份数据,其中 95% 的样本属于同一个类别。一个模型只要把所有样本都判成这一类,准确率就是 95%。它什么都没学到,却拿到了看起来很漂亮的分数。更糟的是,这种模型在真正需要识别的少数类上,表现为零。
所以看到准确率时,先问一个问题:如果各类别占比不均衡,这个数字还能反映真实能力吗? 只要某类样本占比明显高于其他类,准确率就必须配合其他指标一起看。
用混淆矩阵拆开错误
要看清楚模型错在哪,最直接的办法是看混淆矩阵。它把预测结果和真实标签交叉排列,四个格子分别对应:
- 真阳性:本来是正类,模型也判为正类
- 假阳性:本来是负类,模型误判为正类
- 假阴性:本来是正类,模型误判为负类
- 真阴性:本来是负类,模型也判为负类
只看准确率,这四类错误是被混在一起算的。拆开之后才发现,有些模型宁可错杀(假阳性多),有些模型习惯漏放(假阴性多)。这两种错误的代价完全不同。在筛选场景里,漏掉一个目标通常比多报一个更严重;在告警场景里,误报太多会让使用者直接忽略告警。先确定哪种错误更不能接受,再去挑指标。
查准率和查全率是一对矛盾
从混淆矩阵可以推出两个更具体的指标。
查准率(precision):模型判为正类的样本里,有多少真的是正类。它关心的是「报出来的准不准」。
查全率(recall):所有真正的正类样本里,有多少被模型找出来了。它关心的是「该找的有没有漏」。
这两个指标通常此消彼长。把判定门槛调低,查全率上升,查准率下降;调高门槛则相反。所以不要单独看其中一个,而要看你更在意哪一端。
还有一个常用的综合指标是 F1 值,它是查准率和查全率的调和平均。当两类错误代价接近、又需要单一数字比较时,F1 比准确率稳健得多。但要注意,F1 隐含了查准和查全同等重要,如果实际业务里两者权重不同,就应该用带权重的版本,或者干脆分别报告。
和基线比,而不是和 100% 比
一个新模型好不好,不能只看它的绝对分数,要看它比基线强多少。
常见的基线有三类:
- 随机猜测:按类别比例随机分配
- 多数类猜测:全部判为占比最高的那一类
- 现有做法:当前的规则系统或上一版模型
如果一个模型的准确率只比多数类猜测高一点点,那它的价值就很有限。反过来,一个查全率不算高的模型,如果能把基线漏掉的目标多找出一批,可能就有实际意义。评估的核心是增量,不是绝对值。
报告的几条落地习惯
把上面的思路整理成可以固定执行的做法:
- 先看类别分布,分布不均衡就不要只报准确率
- 同时给出查准率、查全率和 F1,而不是挑一个好看的数字
- 附上混淆矩阵,让人能自己换算关心的指标
- 明确写出基线是什么,以及模型相对基线的变化
- 说明判定门槛取值,因为门槛一变,所有指标都会变
- 说明评估数据的来源和时间范围,避免拿训练时的分布当结论
指标本身没有对错,关键在于它是否对应你真正关心的问题。准确率高不高只是表象,混淆矩阵里那些具体的错误,才是决定这个模型能不能用的依据。
相关文章
怎么公平地对比两个模型
对比两个模型时,数据划分、评测指标、算力预算、随机种子都会影响结论。这篇文章给出可操作的对照方法,包括固定变量、分层评测、置信区间与结果复现,帮助你把一次模型对比做得可解释、可复现。
怎么评估一个分析模型稳不稳定
模型上线后结果忽好忽坏,往往不是数据变了,而是稳定性没测过。这篇讲 4 种可落地的检验方法:参数扰动、数据子集重跑、时间切分、指标波动区间,并给出判断阈值和记录方式。
数据分析软件怎么选?看这 5 个标准
选数据分析软件别只看功能列表。数据在哪运行、模型能不能解释、断网能不能用、更新是否持续、结果能不能导出,这 5 点决定了它能不能长期用下去。