模型评估核心 20% — 指标选错,模型白做
一句话:评估的第一件事不是算指标,而是问”这个错误在业务上值多少钱”。正负样本比例、漏判与误判的代价,决定你该看 Precision、Recall 还是 AUC。
🎯 这 20% 能解决哪些问题
| 常见困惑 | 本质 | 本页答案 |
|---|
| 准确率 98% 为什么不能用 | 类别不平衡 | 见「指标选择决策表」 |
| AUC 0.9 就代表好吗 | 与阈值无关、与业务无关 | 见「AUC 的三个边界」 |
| 离线很好线上很差 | 泄漏或分布漂移 | 见「五个泄漏检查」 |
| 两个模型差 0.3 个点,算真的更好吗 | 缺置信区间 | 见「差异是否显著」 |
| 上线后怎么持续评估 | 没有监控闭环 | 见「线上评估四层」 |
一、指标选择决策表
| 场景 | 首选指标 | 理由 |
|---|
| 类别均衡的分类 | Accuracy、F1 | 直观 |
| 正样本稀少(< 10%) | PR-AUC、Recall@Precision | AUC 会过于乐观 |
| 漏判代价高(疾病筛查、风控) | Recall(在可接受 Precision 下) | 优先不漏 |
| 误判代价高(封号、自动拦截) | Precision | 优先不冤枉 |
| 排序/推荐 | NDCG、MAP、Recall@K | 关注排序位置 |
| 回归 | MAE(稳健)、RMSE(重罚大误差)、MAPE(相对) | 看业务对误差的容忍 |
| 概率输出需可信 | 校准曲线、Brier Score | 分数要能当概率用 |
二、AUC 的三个边界
| 边界 | 说明 |
|---|
| 与阈值无关 | AUC 高不代表某个阈值下好用,业务一定要定阈值 |
| 对类别不平衡不敏感 | 负样本极多时 AUC 仍可能很高,用 PR-AUC 更真实 |
| 忽略了错误的分布 | 不同群体的 AUC 差异需分组看 |
必看的两张图:混淆矩阵(定阈值后)与 PR 曲线(不平衡时)。
三、五个泄漏检查
| 检查 | 做法 |
|---|
| 特征时间 | 每个特征标注”最早可用时间”,晚于预测时点的剔除 |
| 预处理位置 | 归一化/编码/填充是否只在训练折内 fit |
| 实体分组 | 同一用户/设备/门店是否跨折 |
| 重复样本 | 近重复样本是否分到不同集合 |
| 标签构造 | 标签是否用了未来信息(如”最终是否成交”用于预测时点) |
四、差异是否显著
[
\text{95% 置信区间} \approx \hat{p} \pm 1.96\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}
]
| 样本量 n | 准确率 0.9 的 95% 区间宽度 |
|---|
| 100 | 约 ±5.9 个点 |
| 1,000 | 约 ±1.9 个点 |
| 10,000 | 约 ±0.6 个点 |
| 100,000 | 约 ±0.2 个点 |
结论:测试集只有 500 条时,“提升 1 个点”完全可能是噪声。要么扩样本,要么用配对检验(同一批样本上比较两个模型)。
五、校准:分数能不能当概率
| 现象 | 含义 | 处理 |
|---|
| 模型说 0.9,实际正例只有 0.6 | 过度自信 | 温度缩放、Platt 校准 |
| 分数分布集中在中间 | 区分度不足 | 加特征、换模型 |
| 各群体校准不同 | 群体偏差 | 分组校准 |
何时必须校准:把分数直接用于决策(定价、限额、风险加权)时。
六、线上评估四层
graph LR
A["离线<br/>固定测试集"] --> B["回溯<br/>历史流量重放"]
B --> C["灰度<br/>小流量 A/B"]
C --> D["全量<br/>监控与告警"]
| 层次 | 关键指标 |
|---|
| 离线 | 任务指标 + 分组指标 |
| 回溯 | 与线上规则的一致性、覆盖率 |
| 灰度 | 业务指标(转化、投诉、人工介入率) |
| 全量 | 数据漂移监控(特征分布 PSI)、指标衰减 |
上线后最重要的两件事:特征分布漂移告警、以及”模型置信度分布”的变化(置信度整体抬高常预示漂移)。
📋 一页速查
| 问题 | 答案 |
|---|
| 不平衡用什么 | PR-AUC,不用准确率 |
| 漏判代价高看什么 | Recall |
| 误判代价高看什么 | Precision |
| AUC 高就够吗 | 不够,必须定阈值看混淆矩阵 |
| 提 1 个点可信吗 | 看置信区间与样本量 |
| 上线看什么 | 漂移与置信度分布 |
🔗 相关链接