题目重点:从 bootstrap 与特征子采样解释树间去相关,比较串行 boosting 的错误修正和正则化。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 以分类随机森林为主,回归版把投票改为均值;默认每树 bootstrap 样本、每分裂候选特征随机子集。具体实现是否 bootstrap 要看库配置。
- 与 Gradient Boosting Trees 作概念比较,不把所有 Boosting 算法都说成同一损失或训练法。
解题路线
- 每棵树在不同 bootstrap 样本上训练,每个分裂只看特征子集;训练完成后分类投票/概率平均。单棵深树方差高,多个不完全相关的树平均能降低方差,特征采样降低树间相关。
- 关键参数:n_estimators 控计算与稳定性,max_depth/min_samples_leaf 控单树复杂度,max_features 控去相关与单树强度,bootstrap/class_weight 影响样本与不平衡,max_samples 可减训练量。
- 过拟合诊断按训练/OOB/验证表现分开:限制深度/叶样本、清理泄漏/高基数 ID、用时间或实体分割验证;增加树数通常先稳定方差但不会自动修复泄漏。
- Boosting 顺序增加弱学习器以修正当前残差/负梯度,学习率与树数、深度配合;Random Forest 树较易并行,Boosting 常在结构化表格任务有较强拟合能力,但对参数/噪声与训练顺序更敏感。具体谁更好由数据和预算决定。
- 业务评估不只看 accuracy,还需类别不平衡下的 PR、校准、延迟、模型大小和特征可用性。
手动走一遍
两个高度相似的深树投票几乎不减方差;随机抽特征让它们在强特征之外探索不同分裂,误差相关降低。若用户 ID 泄漏进训练,OOB/随机验证可能虚高,需按用户/时间切分。
规模与取舍
N 样本、d 特征、T 树:训练成本随树深、分裂搜索与候选特征数增长,粗略写成 T×单树训练成本更诚实;预测需走 T 棵树约 O(T×平均深度),存储 O(所有树节点数)。题目无数据规模。
易错点与追问
容易失分的边界
- 说 Random Forest 的树都在同一数据、同一特征上训练,没有随机性。
- 说增加树数必然导致过拟合。
- 把 Boosting 说成并行独立投票。
- 只看训练准确率判断过拟合。
- 不按业务延迟/可解释性选择模型。
继续深挖
- OOB error 为什么可作近似验证?
- max_features 太小/太大会怎样?
- 样本不平衡如何处理?
- RF 与 Gradient Boosting 的并行性差别?
