← 返回题目列表

准确率有什么局限?为什么类别不平衡时不能只看准确率?

高频 中等 第 10 / 25 题 更新于 2026/07/28
模型评估准确率类别不平衡评估指标

简化版

准确率(Accuracy)= 预测对的样本数 / 总样本数,直观但有个致命局限:在类别不平衡时会严重误导。比如 99% 的样本是负类(正常)、1% 是正类(欺诈),一个「无脑全预测为负类」的模型准确率就有 99%——数字很漂亮,却一个正例都没抓到(召回率=0),毫无价值。原因是准确率被多数类主导,少数类分对分错几乎不影响总数。所以不平衡场景要用精确率、召回率、F1、AUC、AP 等能反映少数类表现的指标,而不是只看准确率。此外准确率也不区分不同错误的代价(漏报和误报被同等对待)。

详细版

准确率公式:

Accuracy = (TP + TN) / (TP + TN + FP + FN)

两大局限:

局限说明
类别不平衡失真多数类主导,全预测多数类也能高准确率
不区分错误代价FP(误报)和 FN(漏报)被同等对待,但代价常不同

不平衡例子: 1% 正类,全预测负类 → 准确率 99%,但召回率 0、对正类完全无用。

替代指标:

场景用什么
类别不平衡精确率、召回率、F1、AUC、AP(PR 曲线)
关注少数类查全召回率
关注少数类查准精确率
兼顾查准查全F1,并同时报告阈值与混淆矩阵
各类平等看待宏平均(macro)F1、平衡准确率

完整版教学

一、准确率是什么,为什么这么常用

准确率(Accuracy)= 预测正确的样本数 / 总样本数,是最直观、最容易理解的分类指标——「一共判对了百分之多少」。因为简单,它常被当作默认指标。但正是这种「只看整体对错比例」的简单性,让它在类别不平衡时变得极具误导性。理解它的局限,是评估分类模型的基本功。

二分类中 Accuracy=(TP+TN)/(TP+TN+FP+FN),多分类则是预测正确数除以总样本数。它回答当前评估分布中判对的比例,所以评估分布一变,数值含义也会变化。

准确率适合类别比例较均衡、错误成本接近且输出硬标签的任务。若输出概率,还应检查 log loss、Brier score 或校准曲线,因为准确率相同的模型可能有完全不同的置信度质量。

二、致命局限:类别不平衡时严重失真

核心问题:准确率把所有样本一视同仁地统计,于是样本多的类别(多数类)会主导这个指标,少数类的表现几乎不影响它。

经典例子(欺诈检测):10000 笔交易,9900 笔正常(负类)、100 笔欺诈(正类),正类只占 1%。

  • 一个什么都不学、全部预测为「正常」 的「模型」:
    • 9900 笔正常全判对(TN=9900),100 笔欺诈全判错(FN=100)。
    • 准确率 = 9900/10000 = 99%——看起来非常优秀!
  • 但这个模型一笔欺诈都没抓到(召回率 = 0),完全没用——而欺诈检测的全部意义就是抓欺诈。

99% 的高准确率,掩盖了模型对少数类彻底失效的事实。 这就是准确率在不平衡数据上的陷阱:它奖励「押多数类」,而现实中我们往往最关心稀少的少数类(欺诈、疾病、故障、异常)。

应先与简单基线比较:正类率 1% 时,全预测负类的基线准确率就是 99%。此时只报 99% 没有说明正类召回、排序能力或报警质量,必须展开混淆矩阵。

若模型一个正例也不预测,Precision 分母为 0;不同库可能返回 0、NaN 或警告。面试中应说明 zero_division 约定,不能把未定义值当作普通的零值结果。

三、为什么会这样——多数类稀释了少数类

数学上看,准确率的分母是总样本数,多数类样本占了绝大部分。少数类即使全错,对分子(对的数量)的影响也很小,被多数类的正确「稀释」了。类别越不平衡,这种稀释越严重,准确率就越「虚高」、越不能反映模型对少数类的真实能力。

四、第二个局限:不区分错误的代价

准确率把 FP(误报)和 FN(漏报)当成一样的错误,各扣一分。但现实中两类错误的代价往往天差地别

  • 癌症筛查:漏诊真病人(FN)可能致命,误诊健康人(FP)只是虚惊、复查一下——FN 代价远高于 FP
  • 垃圾邮件:误杀正常邮件(FP)让用户漏看重要信息,漏掉垃圾(FN)只是烦一点——FP 代价更高

准确率对这种代价差异完全无感,两个准确率相同的模型,可能一个疯狂漏报、一个疯狂误报,实用价值完全不同。要区分就得看精确率(管 FP)和召回率(管 FN)

五、该用什么替代——按业务选指标

不平衡或代价敏感场景,应换用能反映少数类和错误类型的指标:

  • 召回率:关注「少数类别被找全」(漏报代价高,如疾病、欺诈、安全)。
  • 精确率:关注「报警要准」(误报代价高,如垃圾邮件、推荐)。
  • F1:精确率召回率的调和平均,综合两者、抗不平衡。
  • AUC / AP(PR 曲线下面积):与阈值无关的排序能力,AUC 对不平衡较稳健,极端不平衡用 AP/PR 曲线更敏感(详见 PR vs ROC 专题)。
  • 平衡准确率(Balanced Accuracy):各类召回率的平均,平等看待每个类。
  • 宏平均(macro)F1:每类单独算再平均,不被多数类主导。

核心:先想清楚业务最在乎什么(抓全少数类?报警要准?),再选对应指标,别默认用准确率。

六、什么时候准确率还能用

准确率不是一无是处——当类别比较均衡、且各类错误代价相近时,准确率仍是简单有效的指标(如均衡的图像分类)。它的问题只出在不平衡 + 代价不对称的场景。所以判断标准是:先看数据平不平衡、错误代价是否对称,再决定要不要相信准确率。

七、常见追问

  • 为什么不平衡不能只看准确率? 多数类主导,全预测多数类也能高准确率,掩盖少数类失效。
  • 该用什么替代? 精确率、召回率、F1、AUC、AP、平衡准确率、macro-F1。
  • 准确率还有什么局限? 不区分 FP 和 FN 的代价(漏报误报等同对待)。
  • 99% 准确率一定好吗? 不一定——若 99% 是负类,全预测负类就有 99%,要看召回率等。
  • 怎么处理不平衡本身? 重采样(过采样/欠采样、SMOTE)、类别权重、调整阈值等(属于建模层面,评估层面则换指标)。

八、从同样 99% 准确率算出完全不同的价值

仍以 10000 笔、100 笔欺诈为例。全判正常得到 TN=9900,FN=100,TP=FP=0,Accuracy=99%,但正类召回率为 0;若另一个模型 TP=80,FN=20,FP=120,TN=9780,Accuracy=98.6% 反而更低,却抓回 80% 欺诈,Precision=40%。

指标全判正常模型 B
Accuracy99.0%98.6%
Recall(正类)0%80%
Precision(正类)无预测正例,按实现处理40%
Balanced Accuracy50%约 89.4%
Balanced Accuracy = (TPR + TNR) / 2
模型 B: (0.80 + 9780/9900) / 2 ≈ 0.894

AUROC 衡量全阈值排序且对先验比例不直接敏感,但极端不平衡时可能掩盖大量绝对误报;AP/PR 会随正类率变化。没有一个“不平衡万能指标”,必须同时声明正类、阈值、业务成本和评估分布。

记忆钩子:准确率数的是“每个样本一票”,业务常在意的是“少数类一票值多少钱”。

九、常见误区与追问

  • 误区:准确率高于多数类占比就说明模型可用。 还要看相对基线提升、少数类召回、误报和业务成本。
  • 误区:F1 或 AUC 可以无条件替代准确率。 F1 忽略 TN,AUC 忽略具体阈值与校准,仍需按决策目标组合指标。
  • 追问:没有预测正例时 Precision 是多少? 数学分母为零,库可能返回 0、NaN 或告警,报告时要说明约定。
  • 追问:Balanced Accuracy 为什么有用? 它平均各类召回,避免多数类样本数直接主导。
  • 追问:评估集是否应人工做成 1:1? 若要估上线 precision 和成本,应保留真实先验或做可解释的重加权。

十、加强记忆

准确率 = 对的样本/总样本,两大局限:① 类别不平衡时严重失真——多数类主导,全预测多数类也能有很高准确率(1% 正类、全判负→99% 准确率却召回率 0、抓不到任何正例),因为少数类被多数类稀释② 不区分错误代价——FP(误报)和 FN(漏报)被等同对待,但二者代价常悬殊(漏诊 vs 误诊、误杀邮件 vs 漏掉垃圾)。所以不平衡/代价敏感时改用精确率、召回率、F1、AUC、AP、平衡准确率、macro-F1,按业务侧重选。准确率只在类别均衡且错误代价相近时可靠。