分布偏移下的模型评估
评估不是给模型贴一个永久分数,而是估计:在某个目标分布、阈值、流程和错误代价下,这套系统会怎样表现。
若部署分布为 、损失为 ,目标风险是
Test 平均损失只有在 test 样本近似来自目标 、没有被开发过程消费、标签与损失定义正确时,才是该风险的估计。一个 iid test 的窄置信区间不包含未知未来 shift。
查看清晰大图每个蓝点代表一个模型:横轴是原测试集准确率,纵轴是重新收集的测试集准确率。点落在虚线对角线下方,就表示换了测试数据后准确率下降;红色拟合线仍显示两组分数有很强的关联。左右两图分别对应 CIFAR-10 和 ImageNet,误差线为 95% Clopper–Pearson 区间。模型的大致排名能够延续,绝对表现却仍可能整体下降。
先写评估对象
system 模型 + 预处理 + 阈值 + 人工流程
unit 一次预测对应什么
population 结果要外推到谁/何时/何地
prediction_time 当时可见信息
outcome_horizon 标签观察窗口与成熟期
action 预测会触发什么
loss 假阳性、假阴性、延迟和弃权成本
如果动作会改变后续数据,静态 test 只评估上线前政策,不能直接预测反馈回路后的表现。
常见 shift
这些分类可重叠。检测到 input drift 不等于性能必然下降;没检测到也不证明安全。
严格的协变量偏移模型假定 变化而 不变;纯标签偏移则假定 变化而 不变。这些是建模假设,不能仅凭输入直方图得出。在协变量偏移假设下,用 对源域误差加权来估计目标风险,还要求源域覆盖目标域的支持集;过大的权重也会使估计噪声增大。重新加权无法为从未观测过的特征区域创造证据。
切分必须对应问题
反复查看 test、只发布最好 seed、根据外部 benchmark 修改系统,都会让其从 test 退化为 validation。
指标回答不同问题
分类
- accuracy 受类别比例主导;
- precision 和 recall 都随阈值变化;若只是先验比例变化,且各类别内的得分分布保持不变,则 recall 不变,precision 随基率变化;
- ROC-AUC 衡量排序,不给出运营阈值;
- PR-AUC 更关注正类,但 baseline 与正类比例相关;
- log loss/Brier score 评估概率质量的不同方面;
- calibration 比较预测概率与观察频率,且会随分布和样本量改变。
回归与排序
- MAE 对大残差较不敏感,RMSE 更重罚尾部;
- 相对/百分比误差在零或小分母附近可能失真;
- quantile/pinball loss 对应条件分位数;
- ranking metric 只描述排序协议,不等于下游收益。
指标应由行动和错误成本选择,不应因为 leaderboard 使用某指标就照搬。
示例:1% 欺诈率
一万个交易中有 100 个欺诈。永远预测“正常”的系统 accuracy 为 99%,但 recall 为 0,无法拦截任何欺诈。
假设模型在某阈值下标记 200 笔,其中 60 笔是真欺诈:
precision = 60 / 200 = 30%
recall = 60 / 100 = 60%
若没有标记任何样本,precision 的分母为零,因而无定义;若测试切片没有正类,recall 无定义。应报告这些情形,不要默认当成预测成功。
是否可用还取决于:200 次人工审核成本、漏掉 40 笔的损失、合法客户摩擦、标签延迟以及下月基率。把阈值调到 test 上最高收益后再报告同一收益,会高估泛化;阈值应在 validation 选择,并在时间后移 test 验证。
这里的假阳性率为 。设基率为 、真阳性率为 、假阳性率为 ,则
若基率升至 5%,而这两个条件比率保持不变,预期 precision 约为 69.1%,recall 仍为 60%。这是先验偏移下的计算,并非预测条件比率一定不变。定义见 scikit-learn 指标文档。
要确定实际阈值,假设校准后的 是欺诈概率,误报成本为 ,漏报成本为 ,正确决策成本为零。应在 时标记,即 。容量限制或非零审核成本会改变这个决策问题;单个 ROC-AUC 值不能给出阈值。
不确定性至少有三层
- 评估样本误差:解析区间或 bootstrap 区间;在相同案例上比较模型要保留配对,有群组或时间依赖时需按群组或时间块重采样;
- 训练随机性:不同初始化、数据顺序和非确定 kernel;应重复 seed;
- 环境不确定性:未来政策、行为、传感器和人群变化;iid 区间通常不覆盖。
只报告均值±一个不明区间会混淆这些来源。还应给分子/分母、每切片样本量和失败运行。
切片、阈值与弃权
总体指标可能掩盖关键群体、设备、语言、时间或难度切片。切片应在看结果前由用途与风险确定;大量事后切片会产生选择性发现,需要校正或新数据确认。
在错误后果严重的场景中,可以设置模型弃权、转交人工的区域。评估这一安排时,也要考虑人工处理能力、队列容量和选择偏差。模型置信度不等于正确概率;分布偏移时,概率校准和不确定性估计可能同时失准。
基线、消融与压力测试
- 常数、季节性、业务规则和简单模型;
- 去掉可疑 feature,检查性能是否由捷径支撑;
- 时间、噪声、缺失、长度、语言或设备压力;
- 新机构/新 cohort;
- 输入无效、空值、极端值和拒绝路径;
- 训练预算、参数量和数据量控制后的架构消融。
一个复杂模型只胜过弱基线,不能证明复杂度必要。
Evaluation Card
intended_decision: ...
target_population_and_period: ...
prediction_time_and_horizon: ...
data_version_and_split: ...
baselines: [...]
selection_metric: ...
final_metrics_and_thresholds: ...
uncertainty: sample, seed, environment
slices_and_minimum_counts: [...]
leakage_and_contamination_checks: [...]
resource_and_latency_budget: ...
known_failures_and_out_of_scope: [...]
monitoring_and_revalidation_trigger: ...
证据边界与偏差
公共 benchmark 便于可比,但容易过拟合固定任务、语言、硬件和成功指标;内部 test 更接近用途,却可能样本小、缺少外部审查。两者应互补。Model Cards 与 NIST AI RMF 提供报告/风险问题,不认证某模型安全或公平。
本文偏重监督预测。因果效果、在线 A/B、强化学习策略、生成式开放输出和人机协作需要不同 estimand 与实验设计,不能直接套一个 accuracy 表。