本节摘要:集成学习通过组合多个基学习器获得比任何单个模型更好的性能与鲁棒性,有效性依赖两个条件——基学习器彼此多样(犯的错不一样)且各自优于随机猜测。三条技术路线:并行的 Bagging(自助采样降方差,代表是随机森林)、串行的 Boosting(迭代拟合残差降偏差,代表是 AdaBoost 与 XGBoost 系)、分层的 Stacking(用元学习器学习如何组合)。集成方法至今仍是表格数据竞赛与工业落地的头号主力。
阅读完本节,你应当能够:
集成学习的前提条件有两条,缺一不可:
满足这两条时,多个模型的随机性错误在投票或平均中相互抵消,系统性错误则被保留——这就是集成的全部魔法。统计学上表现为:组合能降低方差、降低偏差,或两者同时降低。
Bagging(Bootstrap Aggregating)的做法:从原始训练集有放回地随机抽样,生成多个规模相同的子集;每个子集独立训练一个基学习器;分类投票、回归平均。
有放回抽样意味着每个子集大约包含六成多的不同样本,剩下样本没被抽到——这种差异性直接转化为基学习器的多样性。因为每个模型都在"略有不同的数据视角"上训练,平均之后各自的波动互相抵消,方差降低、过拟合风险下降。
随机森林是 Bagging 的代表:在自助采样的基础上再加一层特征随机性——每棵树分裂时只从随机抽取的一部分特征中挑最优,而不是扫全部特征。两重随机让树与树之间差异更大,集成效果更好,同时天然给出特征重要性排序(工程上非常好用的副产品)。
原始数据集 N 条 ├──自助采样--> 子集1 ──随机特征--> 树1 ──┐ ├──自助采样--> 子集2 ──随机特征--> 树2 ──┼──投票/平均──> 最终预测 └──自助采样--> 子集K ──随机特征--> 树K ──┘
Boosting 是串行的:第 t 轮训练时会更"关照"前几轮预测错的样本(或直接去拟合当前模型的残差),一步步把整体偏差啃下来。最终模型是所有基学习器的加权组合。
演进脉络值得记住:
| 维度 | Bagging | Boosting |
|---|---|---|
| 训练方式 | 并行、互相独立 | 串行、依赖前轮 |
| 主要改善 | 方差(抗过拟合) | 偏差(提拟合能力) |
| 对噪声 | 较鲁棒 | 较敏感(噪声样本被反复加权) |
| 代表 | 随机森林 | XGBoost、LightGBM |
| 典型风险 | 提升空间有限 | 过拟合与噪声放大 |
一条实用的判断:数据干净、欠拟合(模型太弱)时用 Boosting;数据噪声大、模型容易过拟合时用 Bagging。
投票与平均是人为设定的组合规则,Stacking 干脆让另一个模型来学组合方式:第一层训练多个异质基学习器(比如逻辑回归、随机森林、梯度提升各一个);把各基学习器的预测结果当作新特征,构造出一个新数据集;第二层在这个新数据集上训练一个元学习器(通常刻意选简单模型如线性回归,防止叠加过拟合),由它输出最终预测。
两层的分工:基学习器负责"各展所长",元学习器负责"谁在什么情况下更可信"。Stacking 在竞赛叠分中常见,工业界用得相对少——多一层训练管线就多一倍维护成本,除非性能收益明确,两三个模型的简单集成通常更划算。
💡 关键直觉:拿到表格数据不知从何下手时,直接跑一个梯度提升实现(如 XGBoost 或 LightGBM)当第一个模型。它对特征缩放不敏感、自带正则、能吃缺失值,十有八九给出接近天花板的基线——剩下的精力应该花在特征工程上。
⚠️ 常见坑:Boosting 轮数不加限制地训。训练误差能一直降,验证误差却先降后升——串行方法到了某个点之后开始记忆噪声。务必配合早停:验证集损失连续若干轮不改善就停。
为什么梯度提升树统治表格数据。 三个工程特性叠加:对特征缩放与缺失值不敏感(预处理负担小)、自带多种正则化手段(树深、叶子数惩罚、列抽样,过拟合可控)、实现高度优化(直方图算法把分裂点搜索的复杂度降了一个量级,百万级样本分钟级训练)。在结构化数据的公开评测里,它长期占据榜首或与深度模型打平但成本低一个数量级。
调参的优先级顺序。 梯度提升树的可调参数十几个,新手常迷失。实践优先级:先固定学习率为 0.1 左右、调树的数量(配合早停)——再调树的复杂度(最大深度、叶子最小样本数)——然后加随机性(行采样、列采样比例)——最后把学习率降到 0.01 再相应增加树数做终局打磨。按这个顺序走,九成场景不需要碰其余参数。
特征重要性的正确用法。 树集成输出的特征重要性是极好的探索工具——发现泄漏特征(重要度异常高)、辅助特征取舍、向业务方展示"模型主要看什么"。但它有两个坑:偏向高基数特征(取值多的特征容易虚高,改用增益或置换重要性可缓解),以及重要不等于因果(只说明模型依赖它,不说明现实中改变它会改变结果)。
随机森林和 XGBoost 都能跑,选哪个? 默认选 XGBoost 系:同等调参投入下性能通常更高。两种情况例外——数据噪声极大、追求极致稳健时随机森林更钝感;团队经验浅、需要"不调参也不翻车"的方案时随机森林的默认配置更宽容。
集成能救一个糟糕的特征集吗? 不能,这是最常见的幻想。集成放大的是"弱但多样的信号",特征里根本没有的信号,多少个模型投票也投不出来。特征工程的短板必须回到 5.1 节的方法补齐,集成只是让好特征发挥得更充分。
什么时候集成不再划算? 两个信号:交叉验证里简单模型与集成差距小于一个百分点,且业务并不需要这一点的性能——直接用简单模型,换取可解释性与运维简单。性能之外的账本(部署复杂度、推理延迟、监控成本)经常把天平拉回简单模型一侧。
三大范式都讲完了,下一节用一张选型决策表把它们变成可执行的操作。