分布偏移下的模型评估
评估不是给模型贴一个永久分数,而是估计:在某个目标分布、阈值、流程和错误代价下,这套系统会怎样表现。
若部署分布为 、损失为 ,目标风险是
Test 平均损失只有在 test 样本近似来自目标 、没有被开发过程消费、标签与损失定义正确时,才是该风险的估计。一个 iid test 的窄置信区间不包含未知未来 shift。
先写评估对象
system 模型 + 预处理 + 阈值 + 人工流程
unit 一次预测对应什么
population 结果要外推到谁/何时/何地
prediction_time 当时可见信息
outcome_horizon 标签观察窗口与成熟期
action 预测会触发什么
loss 假阳性、假阴性、延迟和弃权成本
如果动作会改变后续数据,静态 test 只评估上线前政策,不能直接预测反馈回路后的表现。
常见 shift
| 类型 | 改变 | 例子 | 诊断边界 |
|---|---|---|---|
| covariate shift | 新设备、新地区、季节 | 仅比较 feature 分布不证明 不变 | |
| label/prior shift | 疾病/欺诈基率变化 | 需要标签或额外假设 | |
| concept/conditional shift | 政策改变标签关系 | 最难仅靠未标记输入发现 | |
| measurement shift | 记录过程 | 传感器、编码、问卷改变 | 可能看似真实行为变化 |
| selection shift | 进入样本机制 | 只标注被审核案件 | test 只代表被选择人群 |
这些分类可重叠。检测到 input drift 不等于性能必然下降;没检测到也不证明安全。
切分必须对应问题
| 想回答的问题 | 设计 | 主要限制 |
|---|---|---|
| 相同机制下的新独立样本 | 随机 holdout/CV | 不覆盖时间、地区、实体 shift |
| 新实体 | group holdout | group 数少时区间很宽 |
| 未来表现 | rolling/forward test | 只覆盖历史上已发生的变化 |
| 新机构/地区 | external validation | 一个外部点不能代表所有外部环境 |
| 模型选择后的无偏估计 | nested CV 或锁定 test | 计算高,仍依赖样本机制 |
反复查看 test、只发布最好 seed、根据外部 benchmark 修改系统,都会让其从 test 退化为 validation。
指标回答不同问题
分类
- accuracy 受类别比例主导;
- precision/recall 与阈值和 prevalence 有关;
- ROC-AUC 衡量排序,不给出运营阈值;
- PR-AUC 更关注正类,但 baseline 与正类比例相关;
- log loss/Brier score 评估概率质量的不同方面;
- calibration 比较预测概率与观察频率,且会随分布和样本量改变。