题目重点:MLE OA 编程题要求实现 bootstrap 的 resampling、fit、predict;拆解样本索引、基模型状态与聚合规则。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练版输入 X/y 等长 n>0、B 个独立可 clone 基模型,resample 每次有放回抽 n 个索引;B≥1。
- fit 为每轮 bootstrap 样本训练一个新模型,不复用上轮已 fit 的同一可变实例;分类 predict 用多数投票,回归用平均,题目未区分任务,实际以接口为准。
- 随机数生成器显式传 seed 仅为复现实验,不把同一 seed 重用于每轮导致完全相同的 bootstrap 样本。
解题路线
- resampling:独立抽 n 次 index∈[0,n−1],可重复;对 X/y 使用同一索引数组,不能分别随机抽导致标签错位。
- fit:B 次获取 bootstrap 索引,clone 新 estimator,以对应 X[idx],y[idx] 训练,保存 B 个模型;训练失败的回滚/异常按接口契约。
- predict:对每个样本收集 B 个成员预测;分类按投票(并列规则固定),回归取算术均值;若基模型给概率,平均概率与硬投票是不同聚合,需先问。
- 可保留每轮未抽到的 out-of-bag 样本用于评估,但不能以 OOB 结果替代题面规定的 predict。数据预处理若需 fit,应放进每个基模型的训练管线内防泄漏。
- 测试索引范围、抽样总长 n、重复索引实际出现、X/y 对齐、每个模型实例不同、固定 seed 可复现与多数投票并列。
手动走一遍
训练例 n=3,某轮索引可为 [2,2,0],样本 2 重复、样本 1 未抽到;这才是有放回抽样。若 B=3 成员对一个点预测 [1,0,1],多数投票为 1;对回归值 [1,0,1],均值为 2/3。
规模与取舍
每轮抽样 O(n)、保存索引 O(n) 临时空间;B 轮抽样 O(Bn),训练成本 B×baseFit,模型空间 B×baseModelSize;m 个预测点推理成本 B×basePredict(m)。
易错点与追问
容易失分的边界
- 无放回 permutation 冒充 bootstrap,每轮恰好原样本集合。
- X 和 y 分别采样,训练标签错位。
- 重复 fit 同一 estimator 引用,列表里的 B 个模型实际都是最后一个。
- 分类与回归混用聚合规则。
- 没有原接口却宣称自己实现原 OA 的精确签名。
继续深挖
- 一个样本某轮未被抽中的概率约多少?
- 如何用 OOB 估计泛化误差?
- Bagging 对高方差模型为什么常有用?
- 成员预测并列如何定?
