Bootstrap 如何用于模型评估?
简化版
Bootstrap 从评估样本中有放回重采样,重复计算指标以估计不确定性和置信区间。重采样单位必须匹配数据独立单位;时间序列或同用户多记录要用 block/cluster bootstrap。
详细版
-
每次通常抽与原数据同样数量的样本。
-
百分位区间取重复指标分布的分位点。
-
小样本和非平滑指标可能有明显偏差。
-
两个模型比较应在同一重采样中计算差值。
-
测试集分布不代表线上时,区间再窄也无效。
完整版教学
一、Bootstrap 用经验分布模拟重复抽样
真实总体未知,经验分布把每个观测赋予 1/n 概率;有放回抽样模拟重新采集数据。
配对比较保留同一请求上两模型预测相关性,差值方差通常更小。
二、底层机制与公式
for b in 1..B: idx=sample_with_replacement(n,n); m_b=metric(y[idx],p[idx])
CI95=quantile(m,[0.025,0.975])
三、带数字的推演
在 2000 个样本上重复 1000 次,AUC 分布 2.5% 与 97.5% 分位为 0.78、0.84,则报 95% bootstrap CI [0.78,0.84]。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| 普通 bootstrap | IID 数据简单 | 忽略组内相关 |
| Cluster bootstrap | 按用户/主体重采样 | 有效簇少时不稳 |
| Block bootstrap | 保留时间局部相关 | 块长需选择 |
五、执行流程
确定独立单位 -> 同时重采样标签与预测 -> 重算指标/差值
-> 检查分布和区间 -> 多 seed/B 稳定性 -> 报点估计与 CI
六、边界条件与工程代价
不能只重采样预测而不重采样对应标签;行索引必须整体同步。
准确率等离散指标在极小样本可能分布粗糙,必要时用 BCa、精确法或更多数据复核。
记忆钩子:Bootstrap 先找真正独立的抽样单位,再有放回重复。
七、常见误区与追问
-
误区:Bootstrap 是不放回抽样。 核心是有放回重采样经验分布。
-
追问:模型比较怎么做? 同一索引下计算两模型指标差。
-
误区:每条日志都可独立抽。 同用户相关记录需按用户成簇。
-
追问:B 越大解决什么? 减少蒙特卡洛误差,不解决样本偏差。
-
追问:时间序列怎么办? 按连续块抽样以保留自相关。
八、加强记忆
Bootstrap 先找真正独立的抽样单位,再有放回重复。
区间描述抽样不确定性,不会替你修复分布偏差。