5.3 集成学习


5.3 集成学习

本节摘要:单个模型有上限时,让一群模型"商量着来"。本节拆解 Bagging 与 Boosting 的结构差异、各自代表、以及 Stacking 的层级融合,并讨论集成的收益边界与算力代价。

这一节会让你重新看待"多模型"

阅读完本节,你应当能够:

  1. 说清 Bagging(并行、降方差)与 Boosting(串行、纠误)的结构差异。
  2. 对应常见代表:随机森林属 Bagging,XGBoost/LightGBM 属 Boosting。
  3. 用一张集成范式的对比,判断何时值得上集成、何时算力不值当。

众多个体为什么比单个体更稳

单模型优化到一定程度就撞天花板,就像一个人判断总有偏见。集成的朴素直觉:找一堆个体,让大致独立、错误不重叠,再把它们的结果合起来。当每个个体的错是随机的、互不重叠时,多数投票/平均能把这些随机错误冲掉,系统整体更稳。

这里"错误互不重叠"是关键词。集成的收益不来自"个体多",而来自"个体差异大"。这就像让你判断一个人可不可信时,与其问同一个专家问十遍,不如问十个观点独立的专家各一遍——十个独立判断的偏差在中位处互相抵消,反复问同一个人只是复制了同一个偏见。所以集成设计的核心功夫,其实是在制造个体之间的多样性:换子集、换特征子集、换模型族、换随机种子,都是为了让个体错得不那么同步。

为什么"差异大"能降方差,用数字想最清楚。假设每个个体对某个样本都有一定的随机误差,如果这些误差零均值而且彼此独立,那么 N 个个体平均出的误差标准差大约缩到原来的 1/√N——个体数越多,平均越稳。但如果一窝蜂全是同一个模型的同一份副本,它们的误差就不是独立的,而是高度正相关,平均起来几乎不缩放——花 N 倍算力却买不到 N 倍的稳,差别就在这里。

让个体多样化的两种风格:Bagging 与 Boosting

  • Bagging(Bootstrap 聚合)并行训练多个同质模型,每个在不同子集上训练(有放回抽样),最后投票/平均。因为个体错得不太相关,平均能压低方差,代表是随机森林。它擅长把"高方差"的模型(决策树)驯稳。
  • Boosting(提升)串行训练,每个新模型重点关照前一个模型做错的样本,最后加权组合。个体强依赖、错源性重叠,靠"集中火力攻错"去压低偏差。代表有 AdaBoost、XGBoost、LightGBM、CatBoost。它对"弱而不够"的模型提升明显,但更容易在噪声上过拟合,需要控层数/学习率。

两个风格的选用有一个很实用的经验:当你看到单个模型(尤其决策树这类高方差模型)在验证集上"忽高忽低"、方差很大时,先上 Bagging 一般是收益最直接的一步;当你的模型整体偏弱、明显"学不充分"(欠拟合)时,Boosting 更容易把它往上抬。至于是混用还是只取其一,取决于你当前卡在"方差"还是"偏差"这一侧——这又回到以前反复强调的诊断先行逻辑,而不是见情况就盲目叠模型。

落到工程里,从"平均/投票"这种最简单的合,往往就够赢下一大截。很多人一上来就金字塔式地上 Stacking、套多层,其实先跑"把若干长得足够不同的基模型的结果做平均"往往已经接近了最优——平均的实现几乎没有额外训练成本,而又能立刻兑现"误差互不重叠"的方差红利。只有当简单平均明显不够、你真的需要让某个模型在某些样本上拥有更高话语权时,才值得上 Stacking。有分寸地先简单合、再复杂合,既省算力,也让你更清楚地知道"多出来的那一层到底换来了多少"。另外别忘了,做集成前先把每个个体各自调好(呼应下面的坑提醒),否则你在平均的是一堆没调好的模型,集成学习并不能掩盖个体的烂。

Stacking:让一个元模型来指挥融合

上面是简单合,而 Stacking 是学一个"怎么合"的元模型:先把若干个第一层模型各自训好,用它们的预测作为新特征,再训一个第二层模型决定优先级。它在第一层模型五花八门的时候尤其好用——神经网络的预测、树的预测、线性模型的预测,被同一棒衔接。

与 Bagging/Boosting 直接投票最小不同,Stacking 的数据流要多一步"造元特征 + 训元模型",所以实现成本更高、也更容易在第二层过拟合。它的纪律是:第一层模型要在与第二层不同的折上出预测,防止元模型把第一层的"训练集直觉"也学进去——这通常靠交叉验证折来切,避免第二层偷看到第一层在训练集上的乐观信号。

收益边界与算力账

集成不是白送的。它的代价是算力成比例上涨(训 N 个模型 ≈ N 倍训练成本)与解释性下降(整体不再是一个解释得清的模型)。判定要不要上的问题很实际:

情形 上集成? 说明
单模型验证方差大 先用 Bagging 压方差
单模型偏差明显 是(Boosting) 集中火力攻错
已经很强+算力紧 谨慎 收益递减,先别烧
需要可解释交付 解释性优先选单模型

⚠️ 坑:集成里每个个体仍旧独立跑完各自的超参搜索,正确的做法是先让个体各自调好,再谈合;一并乱调会让"谁带来的提升"说不清。这与第六章"单因子实验"一脉相承。

💡 直觉:集成常常是把"验证曲线稳步下探但渐缓"的模型再往上拉一截的最后一手,不是第一步。先把单模型练到接近极限,再考虑叠个体。

本节要点回顾

  • 要点一:Bagging 并行、降方差;Boosting 串行、纠误降偏差。
  • 要点二:随机森林属 Bagging,XGBoost/LightGBM 属 Boosting。
  • 要点三:Stacking 用元模型学"如何融合",擅长异构模型。
  • 要点四:集成的代价是算力与解释性,先判断值不值再上。
  • 要点五:先让各单模型调好,再谈融合,别在"谁带来提升"上说不清。

若你手里是图像/文本类数据又缺样本,还有第四条路——数据增强。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U