欢迎来到集成学习(Ensemble Methods)的世界!

在之前的学习中,我们了解了单一决策树。它们虽然容易理解且具备直观性,但有一个严重的缺点:它们非常不稳定。数据的一点小变动就可能导致生成完全不同的树状结构。这就是我们所说的高变异性(High Variance)

为了修正这个问题,我们使用集成学习(Ensemble Methods)。你可以把“集成”想像成一个合唱团或交响乐团。个别歌手可能会唱错音符,但当整个团体一起演出时,整体的声音会变得既美妙又稳定。在这一章,我们将学习如何将多棵决策树结合起来,创造出强大的模型:装袋法(Bagging)随机森林(Random Forests)以及提升法(Boosting)

1. 装袋法(Bootstrap Aggregating)

装袋法(Bagging)是一个减少统计学习方法变异性的巧妙技巧。这个名字是由两个词组合而成的:Bootstrap(自助法)Aggregating(聚合)

什么是自助法(Bootstrapping)?

如果觉得这很难理解也别担心!自助法其实只是一个 fancy 的说法,意思是“有放回的重新抽样”(resampling with replacement)。想像你有一个装了 100 颗编号弹珠的袋子。你取出一个,记下号码,然后把它放回袋子里。你重复这个动作 100 次。有些弹珠可能会被抽中两次,而有些则可能完全没被抽中。这组新的 100 个观测值就是一个自助样本(Bootstrap Sample)

装袋法的流程

1. 从训练数据中创建 B 个不同的自助样本。
2. 为每个样本建立一棵深度大、未经剪枝的决策树。
3. 结合结果:
   - 对于回归(Regression):将所有 B 棵树的预测结果取平均。
   - 对于分类(Classification):使用“多数决”(选择出现频率最高的预测类别)。

为什么要这样做?

透过对多棵高变异性的树取平均,我们消除了“杂讯”,从而获得更稳定的预测。装袋法在保持低偏差(Bias)的同时,显著降低了变异性。

快速复习:装袋法的优点是让预测结果更可靠。但缺点是我们无法再透过单一简单的树状图来解释模型。我们是用可解释性(Interpretability)换取了准确性(Accuracy)

你知道吗?平均而言,一个自助样本大约包含原始数据中的 2/3。剩下的 1/3 被称为袋外(Out-of-Bag, OOB)观测值。我们可以使用这些 OOB 观测值来测试模型的准确性,而无需额外划分验证集!

2. 随机森林(Random Forests)

随机森林是装袋法的“升级版”。装袋法虽好,但有一个缺陷:如果数据中有一个非常强势的预测变量,大多数树在第一次分割时都会选择该变量。这意味着所有的树看起来会非常相似(它们是相关的,correlated)。

对相似的东西取平均,并不能像对不同的东西取平均那样有效地减少变异性。随机森林透过“解相关”(decorrelating)这些树来解决这个问题。

随机森林的工作原理

就像装袋法一样,我们利用自助样本建立许多树。但这里有个关键:每当我们考虑树的分支点时,我们只能从总共 \( p \) 个预测变量中,随机选择 \( m \) 个子集作为候选。

通常我们选择:
- 对于回归: \( m \approx p/3 \)
- 对于分类: \( m \approx \sqrt{p} \)

类比:想像你在组建一个侦探团队。在装袋法中,每个侦探首先关注的都是同一个主要线索。而在随机森林中,你强迫一些侦探忽略主要线索,转而寻找较小的线索。透过这种方式,团队能发现单个人(或一群思考模式相同的人)会错过的关键证据!

重点总结:如果 \( m = p \),随机森林就与装袋法完全相同。透过选择 \( m < p \),我们让树与树之间变得不同,进一步降低了变异性。

3. 提升法(Boosting)

提升法采用了完全不同的策略。在装袋法和随机森林中,我们同时(并行)建立所有的树。但在提升法(Boosting)中,我们是依序(sequentially)建立树——一棵接着一棵。

核心概念:从错误中学习

在提升法中,每一棵新树都是基于前几棵树的信息建立的。我们不建立深树,而是建立非常小的树(通常称为树桩,stumps),这些树会缓慢地改进模型在效能不佳区域的表现。

提升法的流程(简化版)

1. 从一个简单的模型开始(例如数据的平均值)。
2. 计算当前模型的“错误”(残差,residuals)。
3. 针对这些残差(而非原始目标变量)拟合一棵新的小树。
4. 将这棵新树加入模型,但仅加入一小部分(透过学习率进行缩放)。
5. 重复此过程数千次。

类比:把提升法想像成一位雕刻家。第一棵树是石头粗糙的轮廓。接下来的每一棵树都是凿子轻轻地刮一下,慢慢雕琢出形状,并修补前一步骤留下的瑕疵。

提升法的重要参数

- 树的数量 (B):与装袋法不同,若 \( B \) 过大,提升法可能会过度拟合(overfit)。我们使用交叉验证来选择合适的数量。
- 收缩率 (\( \lambda \)):一个小数值(例如 0.01),控制学习的速度。缓慢学习通常能产生更好的模型。
- 交互深度 (d):每棵树的分支数。通常 \( d=1 \)(即树桩)的效果就已经非常显著了。

重点总结:提升法是一个“慢学习者”,专注于修复前辈犯下的错误。它通常是最准确的方法,但需要仔细调整参数以避免过度拟合。

4. 变量重要性度量(Variable Importance Measures)

因为我们现在面对的是数百棵树,我们无法透过单一树状图来判断什么变量重要。相反,我们使用变量重要性度量

- 对于回归:我们记录在所有树中,因给定预测变量的分割而导致残差平方和(RSS)减少的总量,并取平均值。数值越大,代表该预测变量越重要。
- 对于分类:我们做同样的事,但测量的是基尼指数(Gini Index)的减少量。

总结表:如何区分它们?

装袋法(Bagging):
- 树是独立建立的(并行)。
- 每次分割使用全套预测变量。
- 目标:降低变异性。

随机森林(Random Forests):
- 树是独立建立的(并行)。
- 每次分割使用预测变量的随机子集
- 目标:解相关并降低变异性。

提升法(Boosting):
- 树是依序建立的。
- 每棵树拟合前一个模型的残差
- 目标:缓慢降低偏差和变异性。

要避免的常见错误:考试时请记住,如果你增加树的数量 (B),装袋法和随机森林不会发生过度拟合。然而,如果树的数量过多,提升法是可能会发生过度拟合的。务必时刻留意那个收缩率参数!

你可以做到的!这些集成学习方法是数据科学家工具箱中最强大的武器。只要掌握“取平均”(装袋法/随机森林)与“修炼”(提升法)的逻辑,你就能在 SRM 考试中如鱼得水!