分类模型效果评估
分类模型效果评估
本文集中梳理二分类/多分类任务中的常用评估指标(Accuracy、Precision、Recall、F1、ROC/AUC)、各指标的适用场景与局限,以及 K 折交叉验证的使用;帮助快速选对指标、避免被虚高准确率误导。
目录
- 1. Accuracy:易虚高,参考价值有限
- 2. Precision / Recall / F1:依赖阈值
- 3. F score 家族(F_beta)
- 4. ROC / AUC:不依赖阈值
- 5. K 折交叉验证
- 6. 指标选择速查
1. Accuracy:易虚高,参考价值有限
定义:正确预测数 / 总样本数
1
Accuracy = (TP + TN) / (TP + TN + FP + FN)
问题:类别不平衡时,Accuracy 容易虚高。例如正样本仅 2.6%、负样本 97.4%,若模型全部预测为负类,准确率也有约 97.4%,但召回率为 0,模型实际上完全未识别正类。
结论:在严重不平衡(如欺诈检测、疾病筛查)时,Accuracy 参考价值有限,应优先看 Precision、Recall、F1、AUC。
2. Precision / Recall / F1:依赖阈值
| 指标 | 含义 | 公式 |
|---|---|---|
| 精确率(Precision) | 预测为正的样本中,真正为正的比例 | TP / (TP + FP) |
| 召回率(Recall) | 真实为正的样本中,被正确预测的比例 | TP / (TP + FN) |
| F1 | 精确率与召回率的调和平均 | 2 × P × R / (P + R) |
依赖阈值:模型输出的是概率(如 0.72),需要设定分类阈值(如 0.5)才能得到类别。阈值不同,P/R/F1 都会变化:
- 阈值高 → 预测为正更少 → 精确率通常升、召回率通常降
- 阈值低 → 预测为正更多 → 召回率通常升、精确率通常降
适用:需要权衡误报与漏报时,P/R/F1 很重要;但需结合业务选定合适阈值。
3. F score 家族(F_beta)
公式:F_β = (1 + β²) × (P × R) / (β² × P + R)
- β = 1:F1,精确率与召回率同等重要
- β < 1(如 F0.5):更看重精确率,适合误报成本高
- β > 1(如 F2):更看重召回率,适合漏报成本高
选型:误报代价高(如垃圾邮件误杀正常邮件)→ 用 F0.5;漏报代价高(如疾病筛查漏诊)→ 用 F2。
4. ROC / AUC:不依赖阈值
ROC 曲线:横轴为假阳性率(FPR),纵轴为真阳性率(TPR),遍历不同阈值得到曲线。
AUC:ROC 曲线下面积,取值 0~1。
图表怎么读(ROC):
- 坐标轴:从左到右,FPR 增大(把更多负样本错判为正);从下到上,TPR 增大(抓住更多真实正样本)。曲线上每一点对应某一个阈值下的 (FPR, TPR)。
- 参考线:左下角 (0,0) 到右上角 (1,1) 的对角线表示「随机猜」——正负样本分数无区分能力时,ROC 会落在这条线附近。
- 线「高」与「低」:在相同 FPR(同样容忍的误报比例)下,曲线越靠上(TPR 越高)越好,说明同样误报成本下能检出更多正类。
- 线的走向:理想情况是曲线尽快向左上角 (0,1) 拱起——即在 FPR 还很低时 TPR 已经很高,表示正类分数整体高于负类、排序质量好。若曲线紧贴对角线,说明模型几乎不会排序。
- 面积(AUC)大与小:
- AUC 接近 1:曲线下方面积大,正类与负类分数可分性好。
- AUC 接近 0.5:面积约为对角线下方的 0.5,接近随机。
- AUC 明显小于 0.5:可能标签反了或模型系统性反向,可检查正负类定义与预测符号。
文字箭头图样例(示意,非精确绘图):
1)坐标系与轴向
1
2
3
4
5
6
7
8
9
10
TPR(真阳性率)
^
1 | (0,1) 理想点:无误报且全抓住正类
| *
| /
| /
| /
0 +------------------------> FPR(假阳性率)
0 1
TPR↑ = 检出正类更多 FPR→ = 误把负类当正类更多
2)随机分类(对角线)
1
2
3
4
5
6
7
8
TPR
^ 随机猜:ROC 沿对角线 /
1 | /
| /
| / ← 线与「面积」都贴近随机
| /
0 +--------------------> FPR
0 1
3)较好模型(向左上拱、AUC 大)
1
2
3
4
5
6
7
8
9
TPR
^ 模型ROC~~~----.
1 | ,' ← 先抬高 TPR、FPR 仍小 → 排序好
| ,-'
| ,-'
| ,-'
| ,-'................... 对角线(随机)
0 +--------------------> FPR
阴影区:曲线下方面积 ≈ AUC(越大越好)
4)同一 FPR 下比「谁更高」(两条 ROC)
1
2
3
4
5
6
7
8
TPR
^ 模型A ●
| ,'|
| 模型B ,' | ← 竖线:固定 FPR,A 的 TPR 更高 → 同误报下检出更多正类
| ,' |
| ,' |
+-------------+------> FPR
固定FPR
- 含义:随机取一个正样本和一个负样本,模型对正样本的预测分数高于负样本的概率
- 特点:不依赖具体阈值,专门看「正类(少数类)是否被排得更靠前」
- 适用:
- 类别不平衡时,评估模型区分正负的能力
- 判断「有没有调阈值的空间」:AUC 高说明存在阈值区间,可平衡 P/R;AUC 接近 0.5 则难以通过调阈值改善
与 F1 的区别:
| 维度 | F1 | AUC |
|---|---|---|
| 依赖阈值 | 是,需指定阈值 | 否,综合所有阈值 |
| 关注点 | 某一阈值下的 P/R 平衡 | 整体排序能力 |
| 典型用途 | 选好阈值后的业务指标 | 模型比较、判断调参空间 |
5. K 折交叉验证
目的:单次划分训练/测试集可能不稳定,K 折交叉验证通过多次划分取平均,得到更稳定的性能估计。
流程:
- 将数据分为 K 份
- 轮流以 1 份为验证集、其余 K-1 份为训练集
- 每轮训练并评估(如 F1、AUC)
- 取 K 次结果的平均值(及标准差)
经验值:
- 小数据集(< 500 样本):3~5 折
- 中等数据集(500~5000):5~10 折
- 类别不平衡:使用分层 K 折(Stratified K-Fold),保持每折内正负比例
- 时间序列:不能随机打乱,需用时间序列交叉验证
6. 指标选择速查
| 场景 | 建议指标 |
|---|---|
| 类别平衡的二分类 | Accuracy 可用 |
| 类别不平衡 | 慎用 Accuracy;优先 F1、AUC |
| 误报代价高 | Precision、F0.5 |
| 漏报代价高 | Recall、F2 |
| 需平衡 P/R | F1 |
| 关注排序能力、不依赖阈值 | AUC |
| 评估稳定性 | K 折交叉验证(分层/时间序列按需选用) |
小结:Accuracy 易虚高;P/R/F1 重要但依赖阈值;AUC 不依赖阈值,适合评估不平衡下的模型好坏与调阈值空间;F_beta 可按业务侧重 P 或 R;K 折交叉验证用于得到更稳健的性能估计。
