跳到内容

第 13 卷 / 第 8 章 / 第 1 课

8.1 指标、概率与决策阈值:模型分数和业务行动不是同一层 ​

假设模型 A 的 ROC-AUC 更高,模型 B 却在每天能复核的 200 项中找出更多高损失事件。两项结论可以同时成立,因为它们概括的分数区域不同。部署决策需要看真实复核容量下的表现。

评估必须分三层:模型能否排序,概率是否可信,阈值后的行动是否值得。只报一个 accuracy、F1 或 AUC,会把三个问题混在一起。

本课目标 ​

  • 从混淆矩阵推导 threshold-dependent 指标;
  • 区分 discrimination、calibration 与 decision utility;
  • 正确解读 ROC、Precision–Recall、AP 和概率损失;
  • 在 validation 上按成本或容量选择阈值;
  • 为回归与多分类选择符合目标的指标。

1. 指标之前先固定预测问题 ​

在计算任何数值前写下:

  • 样本单位:用户、设备、任务还是时间窗口;
  • cutoff:预测时刻能看到哪些信息;
  • outcome/horizon:未来多久内发生什么算正例;
  • 部署总体:新用户、同一设备未来记录还是随机同分布样本;
  • 行动:告警、审核、排序、定价或资源分配;
  • 成本与容量:FP、FN、延迟和每天可处理多少。

若标签定义或部署总体不同,两个模型的指标不能直接比较。模型评估首先是 estimand 设计,不是调用 classification_report。

2. 混淆矩阵依赖阈值 ​

对 binary classifier,先把 score/probability 与阈值比较,才得到:

预测正预测负
实际正TPFN
实际负FPTN

常见指标:

Precision=TPTP+FP,Recall/TPR=TPTP+FN,Specificity=TNTN+FP,FPR=FPFP+TN,Accuracy=TP+TNN.

Accuracy 不是“只在类别平衡时有效”。当正确决策代价为零、两种错误代价相同且评估总体与部署一致时,它可以合适;类别失衡只是让“永远预测多数类”的高 accuracy 更容易掩盖无用性。真正问题是 metric 与行动损失不匹配。

3. Precision 与 Recall 的分母回答不同问题 ​

  • Precision:已经触发的行动中,多少命中;受 prevalence 和阈值明显影响。
  • Recall:全部已发生正例中,找出多少;依赖标签是否完整、horizon 是否成熟。
  • Specificity 统计负例中正确排除的比例,FPR 统计误报比例;负例基数巨大时,即使 FPR 很小,绝对告警数也可能很大。

运营报告应同时给分子分母。例如 FPR=0.1% 在一千万负例上意味着约一万条 FP。

F-score:

Fβ=(1+β2)PRβ2P+R.

β>1 更强调 recall,β<1 更强调 precision。F1 不使用 TN,也没有显式编码真实货币/安全成本;它适合某些检索式目标,不是“不知道选什么就折中”的默认答案。

4. 多分类平均方式会改变结论 ​

对每类先算 precision/recall/F1,再聚合:

  • macro:每类等权,突出小类;
  • weighted:按各类 support 加权,可能被大类主导;
  • micro:先汇总所有类的 TP/FP/FN,再计算;
  • per-class:保留每一类,最适合发现具体失败。

单标签多分类若包含全部类别,micro-precision、micro-recall、micro-F1 都等于 accuracy:每次错分类会贡献一个 FP 和一个 FN。Multilabel 或只统计部分类别时通常不成立。应注明 averaging、类别范围、sample weight 与零分母处理。

5. ROC 衡量排序,不选择行动点 ​

改变阈值会得到不同 TPR/FPR,连接成 ROC curve。ROC-AUC 可解释为:随机抽一个正例和负例时,模型把正例 score 排得更高的概率(ties 按约定处理)。

它有几个边界:

  • 对严格递增 score 变换不变,所以不评价概率校准;
  • 汇总所有阈值,其中很多阈值可能永远不会部署;
  • 大量 TN 进入 FPR 分母,低 prevalence 时曲线可能看起来不错,实际 FP 数仍不可接受;
  • 不同群体/时间的 case mix 改变后,AUC 也可能变化;
  • 若只关心极低 FPR 区域,应报告 partial AUC 或该区域的 operating points。

“AUC 不受阈值影响”是对的;“AUC 不受类别分布和采样影响”则需要限定。将某类所有样本等倍复制,不改变该类的经验分数分布与 ROC 曲线,但 spectrum、抽样权重和群体构成会改变比较对象。

6. Precision–Recall 更直接观察告警质量 ​

PR curve 在不同阈值下画 precision 与 recall。随机排序的期望 precision 与 positive prevalence 相关,因此跨 prevalence 数据集比较 AP 时必须说明基准率。

Average Precision(AP)是按 recall 增量对 precision 加权的离散汇总,不应和任意绘图库的梯形 PR-AUC 混称同一个定义。

低 prevalence、审核容量有限时,常同时报告:

  • AP/AUPRC(注明定义);
  • precision at K / recall at K;
  • recall at fixed alert rate;
  • 每天 TP、FP 绝对数;
  • 与随机/规则 baseline 的 lift。

7. Probability quality 不是 AUC ​

若预测将进入期望成本、库存或定价计算,概率必须有语义。

Binary log loss:

Llog=−1n∑i[yilog⁡pi+(1−yi)log⁡(1−pi)].

它重罚自信且错误的预测。Brier score 是平均平方概率误差:

LBrier=1n∑i(pi−yi)2.

两者都是 proper scoring rule,但总体分数同时反映 calibration、resolution/discrimination 与数据不确定性,不能仅凭 Brier 更低就断言“校准更好”。还应查看 reliability diagram、各 bin 样本数、calibration-in-the-large 与 slope。

Calibration curve 受 binning 影响;样本少时每个 bin 的实际率不稳定。应给置信范围或至少报告 bin support。

8. Score、Probability 与 Action ​

把系统拆成:

text
features -> model score -> calibrated probability -> decision rule -> action

排序任务可以只需要 score。要计算期望损失时需要概率。最终 action 还受成本、容量、公平/安全约束和拒绝选项影响。

阈值 0.5 只有在概率校准且特定对称代价假设下才自然。若 false negative 成本为 CFN、false positive 成本为 CFP,简单二元决策在理想条件下可由期望成本推出阈值;真实系统还有容量与个体化成本,通常应直接在 validation 上优化业务 utility。

若正确决策代价为零,预测正类的条件是 CFP(1−p)≤CFNp,即 p≥CFP/(CFP+CFN)。两种错误成本分别为 1、9 时,阈值为 0.1。这里要求成本非负且和为正,概率适用于目标总体;加入容量约束后,决策规则还要调整。

9. 阈值只能在 Validation 选择 ​

下面从验证概率中选择满足最低 precision 的最大 recall 点。precision_recall_curve 的最后一个 precision/recall 点没有对应 threshold,所以要对齐长度:

下面是 Python 3 / scikit-learn 1.9.0 片段,需提供同时含 0、1 的 y_valid、逐行对应且位于 [0, 1] 的有限验证概率,以及独立的 test_probability。80% 是经验筛选门槛,不是 precision 的置信下界。

python
import numpy as np
from sklearn.metrics import precision_recall_curve

precision, recall, thresholds = precision_recall_curve(
    y_valid,
    valid_probability,
)

eligible = np.flatnonzero(precision[:-1] >= 0.80)
if len(eligible) == 0:
    raise RuntimeError("No validation threshold reaches 80% precision")

best = eligible[np.argmax(recall[eligible])]
chosen_threshold = thresholds[best]

test_prediction = test_probability >= chosen_threshold

例如验证标签 [1, 0, 1, 0, 1]、概率 [0.9, 0.8, 0.7, 0.6, 0.5],只有阈值 0.9 满足 80% precision,recall 为 1/3。一次命中得到的 100% 并不牢靠,应报告样本量和不确定性。Prevalence 漂移会改变 precision;若已把概率重新校准到新总体,固定错误成本推导的最优概率阈值却不一定改变。

校准器、阈值和模型超参数都是从数据选择的参数,不能都在同一小块 validation 上无限试验。可使用交叉拟合、嵌套验证或预留不同用途的数据段。

10. 回归指标同样包含代价选择 ​

  • MAE:线性惩罚,条件中位数相关,对大误差不如 MSE 敏感;
  • MSE/RMSE:平方惩罚大 residual;RMSE 回到 target 单位,但不能跨不同尺度直接比较;
  • R2:相对常数均值 baseline 的平方误差改善,可为负,不是“解释了因果方差”;
  • MAPE:真实值接近 0 时爆炸,对正负/零值问题大;
  • pinball/quantile loss:预测条件分位数,适合非对称成本;
  • interval coverage + width:评估 prediction interval,不能只报 coverage。

同时按 target 范围、时间、群体和关键业务区域报告 residual。一个平均 RMSE 可能掩盖高价值尾部失败。

常见误区 ​

  • Accuracy 在不平衡数据上完全无效:是否合适取决于损失与总体,失衡只是常见警报。
  • AUC 高说明概率可信:AUC 只看排序。
  • PR curve 不受负类影响:precision 明确依赖 FP 和 prevalence。
  • F1 同时兼顾所有代价:它忽略 TN,也不包含真实成本。
  • Test 上挑阈值后仍是最终测试:test 已参与选择。

练习 ​

  1. 为相同 confusion matrix 写出 precision、recall、specificity、FPR 和绝对告警量。
  2. 固定 score 排序,做严格递增变换,验证 AUC 不变但 log loss 可改变。
  3. 改变 prevalence,观察 precision/AP baseline 与 ROC 的变化。
  4. 以每日容量和 FP/FN 成本分别选择阈值,比较两种行动规则。
  5. 为一个回归任务说明为什么选 MAE、RMSE 或 quantile loss。

小结 ​

指标不是模型的固有分数,而是针对预测对象、分布和行动问题的测量。ROC/AP 看排序,log loss/Brier 与 reliability diagram 看概率,confusion matrix 和 utility 看阈值后的决策。三层分开,才能解释一个模型为什么值得部署。

下一课解决评估数据从哪里来:随机 K 折只是 iid 情形的一种工具,用户、设备、时间和标签窗口会决定真正的切分边界。

Built with VitePress | Software Systems Atlas