5.1 评估指标


5.1 评估指标

本节摘要:SOURCE 6.1 详解 Accuracy、混淆矩阵、Precision、Recall、F1 与 AUC-ROC。本节强调类别不均衡下 Accuracy 的误导性,并给出业务映射。

核心问题

  1. 从混淆矩阵计算 P/R/F1
  2. 选择 Macro vs Micro vs Weighted F1
  3. 为垃圾邮件与风控场景选对指标

一、混淆矩阵(SOURCE 6.1)

预测正 预测负
真实正 TP FN
真实负 FP TN
  • Precision = TP/(TP+FP) — 抓准
  • Recall = TP/(TP+FN) — 抓全
  • F1 = 2PR/(P+R)
from sklearn.metrics import classification_report print(classification_report(y_true, y_pred, digits=4))

二、业务对齐

场景 优先指标 原因
垃圾邮件 Precision 误杀重要邮件
欺诈/疾病 Recall 不能漏报
不均衡多类 Macro-F1 每类同等权重

05-05-fig01-3

三、多分类扩展

  • Macro-F1 — 类间平均,适合不均衡
  • Micro-F1 — 全局 TP/FP/FN,大类主导
  • AUC-ROC — 二分类阈值无关评估

⚠️ 常见坑:只报 Accuracy——负类 99% 时全猜负也 99%。

💡 关键直觉:指标是产品语言,不是论文装饰。

要点速记

  • 混淆矩阵是一切的源头
  • 不均衡勿用 Accuracy
  • 垃圾邮件重 P,风控重 R
  • classification_report 快速出表

深化:把指标算对、用对

混淆矩阵是一切指标的源头。用一个具体数字走一遍:假设测试集 1000 条,正类 100 条、负类 900 条,模型预测出 80 条正类、其中 70 条是真的。那么真阳性 70、假阳性 10、假阴性 30、真阴性 890。精确率等于 70 除以 80,约 87.5%,召回率等于 70 除以 100,即 70%,F1 约 77.8%。若只看准确率等于 960 除以 1000,即 96%,看起来不错,但正类样本只召回 70%,对「找差评」这类任务就是灾难。这就是「不均衡时勿用准确率」的数字证明。

Macro-F1、Micro-F1、Weighted-F1 的差异要理解到「谁说话算数」的层面。Macro-F1 对每个类算 F1 再取平均,少数类与多数类权重相同,适合类别均衡性很重要、每个类都不能被牺牲的任务;Micro-F1 先汇总所有类的真阳性、假阳性、假阴性再算,被样本量大的类主导;Weighted-F1 按每类样本占比加权平均,是两者之间的折中,也是 sklearn 默认的平均参数之一。报告时最好同时给出 Macro 与 Weighted 两种,并注明少数类的单独指标。

AUC-ROC 衡量排序能力:把样本按预测概率排序,随机取一对正负样本,正样本排在负样本前的概率。它对阈值不敏感,适合二分类调阈值,但不能反映某个具体阈值下的精确率与召回率,所以别只用 AUC 汇报生产效果。

业务映射是评估的灵魂。垃圾邮件:误杀一封重要邮件代价极高,所以看精确率,产品侧宁可漏杀;风控与疾病筛查:漏掉一个真风险代价更高,所以看召回率;不均衡的多类任务(如舆情情绪五分类):看 Macro-F1 保证每类都被公平对待。指标选错了,模型再好也无从谈起——因为「好」的定义本身错了。上线后还要建立线上指标:人工复审率、误拦截率、客诉率,与离线指标对照,发现离线高分、线上翻车时,优先怀疑分布漂移与预处理不一致。

实操建议:评估脚本固定下来,每次实验输出同一格式的报告(每类精确率召回率 F1、Macro/Weighted、混淆矩阵),并自动归档;这样第 5.2 节的错误分析可以直接基于归档结果做分桶,而不是临时重跑。评估不是一次性的动作,而是整个迭代周期的记录。

还有一个常见混淆点:精确率与召回率的权衡要明确落在产品策略上。不要只报「F1 最高的一组」,而是把不同阈值下的精确率召回率曲线形态画出来,与业务方一起选工作点。这比一句「F1 0.85」有用得多。

from sklearn.metrics import classification_report # 假设 y_true / y_pred 是等长列表 report = classification_report(y_true, y_pred, target_names=["neg", "pos"], digits=4) print(report) # 输出里同时给出 per-class 与 macro/weighted avg
指标 回答的问题 不均衡时的注意
Accuracy 整体正确比例 会被多数类掩盖
Precision 预测为正的有多准 误杀代价高时看它
Recall 真正的正类抓到多少 漏报代价高时看它
F1 P/R 的调和平均 用 Macro 版本
AUC 排序能力 不反映阈值效果

指标报告模板

把评估输出固化成统一模板,每次迭代都产出一份,便于横向对比。

区块 内容
数据集 版本、切分比例、类别分布
每类指标 精确率、召回率、F1
汇总指标 Macro / Weighted F1
混淆矩阵 热图或表格
阈值 当前工作点与决策说明

模板化之后,「这次比上次好还是坏」可以直接看台账;结合第 5.2 节错误分析,还能从指标波动定位是哪个类别在退步。指标的记录口径一旦统一,团队评审与线上监控都能共享同一语言。

混淆矩阵的工程化输出

混淆矩阵不应只存在于笔记本里,建议把它作为每次实验的固定输出之一,以表格或热图形式归档。观察方向有三个:主对角线越亮越好;关注假阴性集中在哪些真类——它们是被漏掉的信号;关注假阳性集中在哪些预测类——它们是误报的来源。结合第 5.2 节的错误分析,混淆矩阵是定位问题最直接的入口,也是指标报告里最容易被人读懂的一页。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U