模型准确率 是最直观、最常用的分类模型性能评估指标,它衡量的是模型整体预测正确的样本数占总样本数的比例。

用公式表示就是: 准确率 = (预测正确的样本数) / (总样本数)
计算方式与例子
我们通过混淆矩阵 来计算准确率,一个二分类问题的混淆矩阵如下:
| 预测为正类 | 预测为负类 | |
|---|---|---|
| 实际为正类 | TP | FN |
| 实际为负类 | FP | TN |
- TP:真正例 - 实际是正类,模型也预测为正类。
- FN:假反例 - 实际是正类,但模型预测为负类。
- FP:假正例 - 实际是负类,但模型预测为正类。
- TN:真反例 - 实际是负类,模型也预测为负类。
准确率公式可以写为: Accuracy = (TP + TN) / (TP + TN + FP + FN)
举个例子: 假设我们有一个100张图片的数据集(60张猫,40张狗),我们的猫狗分类模型预测结果如下:
- 猫图片中,有55张被正确预测为猫,5张被误判为狗。
- 狗图片中,有32张被正确预测为狗,8张被误判为猫。
TP = 55, FN = 5, FP = 8, TN = 32 总样本数 = 55 + 5 + 8 + 32 = 100 准确率 = (55 + 32) / 100 = 87 / 100 = 87 或 87%
这意味着模型在全部100张图片中,正确分类了87张。
准确率的优点与缺点
优点:
- 直观易懂:概念简单,结果解释非常直接,87%的准确率意味着模型100次预测中对了87次。
- 计算简单:只需统计正确和错误的数量。
- 适用场景:当数据集中的正负样本类别分布均衡(如50%猫,50%狗)时,准确率是一个很好的总体衡量指标。
缺点与局限性(非常重要!): 准确率有一个著名的“陷阱”,在类别不平衡的数据集上,它会给出极具误导性的结果。
经典反面例子:医疗诊断(癌症筛查) 假设在一个包含1000人的数据集中:
- 990人健康(负类)
- 10人患病(正类)
如果有一个非常愚蠢的模型,它永远只输出“健康”,那么它的混淆矩阵是: TP=0, FN=10, FP=0, TN=990 准确率 = (0 + 990) / 1000 = 99%
从准确率看,这是一个“极其优秀”的模型,但事实上,这个模型根本没有能力检测出任何一位病人,完全无用!在这个场景下,我们更关心的是那10个病人能否被找出来,而高准确率掩盖了模型在关键任务上的彻底失败。
何时使用与何时避免使用准确率
-
适合使用准确率的情况:
- 分类问题的类别分布相对均匀(接近50/50或60/40)。
- 你对假阳性(FP)和假阴性(FN)的错误代价同等看待。
- 作为一个快速、上手的初步评估指标。
-
需要避免单纯依赖准确率,而应结合其他指标的情况:
- 类别严重不平衡的数据集(如欺诈检测、罕见病诊断、网络攻击检测)。
- 不同类别的预测错误代价差异巨大(如将患病判为健康 vs. 将健康判为患病)。
与相关概念的区别
- 精确率:在所有预测为正类的样本中,真正是正类的比例。 Precision = TP / (TP + FP),关心“预测的准不准”。
模型声称100个人患癌,其中90人真的患癌,精确率就是90%,它回答了“模型说有病的人里,有多少真有病?”
- 召回率:在所有实际为正类的样本中,被正确预测出来的比例。 Recall = TP / (TP + FN),关心“找的全不全”。
实际有100个人患癌,模型找出了其中60个,召回率就是60%,它回答了“所有病人中,模型找出了多少?”
- F1分数:精确率和召回率的调和平均数,用于在两者间寻求一个平衡,当精确率和召回率都重要,且数据集不平衡时,F1是比准确率更好的指标。
| 指标 | 核心问题 | 优点 | 主要缺点 |
|---|---|---|---|
| 准确率 | “模型整体预测对了多少?” | 极其直观,计算简单 | 在类别不平衡数据上具有严重误导性 |
| 精确率 | “模型说‘是’的时候,它有多可信?” | 关注预测为正类的质量 | 不关心漏掉了多少正类 |
| 召回率 | “实际是‘是’的样本,模型找出了多少?” | 关注找出所有正类的能力 | 可能会通过大量误报(FP)来提高召回率 |
| F1分数 | “能否在精确率和召回率之间取得一个好的平衡?” | 综合衡量,对不平衡数据集更鲁棒 | 不如准确率直观 |
准确率是一个重要的基础评估指标,但绝不能是唯一的指标,在实际项目中,尤其是在类别不平衡的场景下,必须结合精确率、召回率、F1分数、ROC-AUC曲线等指标,并从业务角度理解不同错误的代价,才能对模型性能做出全面、公正的评价。