欢迎来到集成学习(Ensemble Learning)的世界!
在之前的学习中,我们认识了决策树(Decision Trees)。虽然决策树简单易懂,但它有一个致命弱点:它太「脆弱」了。只要你稍微修改一点数据,生成的树可能就会完全不同。用专业术语来说,我们称之为具有高变异性(High Variance)。
在本章中,我们将学习如何利用「集成方法(Ensemble Methods)」来解决这个问题。我们不再依赖单一的一棵树,而是要建立一整个森林!我们将专注于两种核心技术:装袋法(Bagging)和随机森林(Random Forests)。这些方法是精算师预测建模工具箱中强大的工具之一。
1. 基础:装袋法(Bootstrap Aggregation)
如果这个名字听起来很奇怪,别担心!Bagging 其实就是 Bootstrap Aggregating(自助聚合)的缩写。其逻辑很简单:「群众的智慧胜过单一专家的意见。」
什么是自助抽样(Bootstrapping)?
想像你有一个装了 100 颗弹珠的袋子。你想创建一个「新」的 100 颗弹珠袋子。你取出一颗,记下颜色,然后把它放回去。你重复这个动作 100 次。因为你是放回后在抽样,有些弹珠可能会出现两次或三次,而有些可能完全没被抽到。这就是所谓的有放回抽样(Sampling with replacement)。
Bagging 的执行步骤:
1. 自助抽样(Bootstrap): 我们从原始数据集中创建许多不同的自助样本(通常是几百个)。
2. 训练(Train): 我们在每一个样本上都建立一棵完整且深入的决策树。由于样本略有不同,这些树也会略有不同。
3. 聚合(Aggregate): 为了进行最终预测,我们将所有树的结果结合起来:
• 对于回归(Regression)(预测数值):取所有树预测结果的平均值。
• 对于分类(Classification)(预测类别):进行「多数投票」。获得最多树支持的类别就是我们的最终答案。
为什么要这么做?
Bagging 的主要目标是降低变异性(Reduce Variance)。通过对多棵树取平均值,我们可以抵消单棵树产生的「噪点」和误差,从而得到更稳定、更准确的预测。这就像请 100 个人来猜一头大象的体重;个人的猜测可能会大相径庭,但平均值通常非常接近真实重量!
快速回顾: Bagging = Bootstrap(有放回抽样)+ Aggregating(结果平均化)。它能在不增加偏差(Bias)的情况下降低变异性。
2. 袋外误差(Out-of-Bag, OOB)估计
你知道吗? 当我们使用 Bagging 时,其实并不需要额外的「验证集(Validation Set)」来评估模型表现。我们可以使用袋外(OOB)观测值。
当我们建立一个自助样本时,平均大约有 三分之一(1/3) 的数据没有被选中。这些没被选中的数据行就称为「袋外」观测值。由于树在训练过程中从未见过这些数据,我们可以将它们当作「微型测试集」。
我们仅使用那些未使用该行数据进行训练的树,来预测该行的数值。这能得出 OOB 误差,它是评估模型在全新数据上表现的一个非常可靠的指标。
3. 进阶:随机森林(Random Forests)
随机森林是对 Bagging 的巧妙改进。要理解为什么我们需要它,必须先看看 Bagging 中一个隐蔽的问题,称为树的相关性(Tree Correlation)。
问题:「强预测因子」的陷阱
在一般的 Bagging 中,如果存在一个非常强的预测因子(例如人寿保险模型中的「年龄」),几乎每一棵树都会在第一次分裂时使用该因子。这意味着所有树看起来都非常相似。如果树之间高度相似,取平均值的效果就会大打折扣——这就像问 100 个人意见,但他们在回答前都读了同一篇新闻报道一样。
解决方案:特征随机化(Feature Randomness)
随机森林强制树之间产生差异(以「去相关」)。在随机森林建立树的过程中:
1. 在每次分裂时,模型只能从随机的预测因子子集中进行选择。
2. 如果总共有 \( p \) 个预测因子,我们通常只允许模型在每次分裂时考虑其中的 \( m \) 个因子,其中 \( m < p \)。
\( m \) 的常用经验法则:
• 对于分类: \( m \approx \sqrt{p} \)
• 对于回归: \( m \approx p/3 \)
通过强制模型偶尔忽略最强的预测因子,它被迫去寻找那些原本会被忽视的「较弱」因子中的规律。这使得森林的多样性和预测力大幅提升。
比喻: 想像一场才艺表演。在 Bagging 中,每位评审看的都是同一场表演。而在随机森林中,评审甲被告知「你不准看歌手的声音,只能看他的舞步」,评审乙被告知「你不准看舞步,只能看服装」。通过强制他们专注于不同的事物,最终的综合评分会更加全面。
4. 变量重要性评估(Variable Importance)
Bagging 和随机森林的一个缺点是它们属于「黑盒(Black Box)」模型。要查看 500 棵树并准确解释模型运作方式是很困难的。不过,我们仍然可以找出哪些变量最重要。
1. Gini 指数平均减少量(Mean Decrease in Gini Index,用于分类): 这衡量了当特定变量用于分裂时,节点的「纯度(Purity)」提升了多少。数值越高,代表该变量对于将观测值分类越有帮助。
2. RSS 平均减少量(Mean Decrease in RSS,用于回归): 这衡量了当特定变量用于分裂时,残差平方和(RSS)下降了多少。下降幅度越大,代表该变量对于预测数值结果越重要。
重点总结: 即使我们无法像分析单棵树那样直观地看出森林的「逻辑」,变量重要性图表依然能告诉我们哪些特征在起关键作用。
5. 总结与常见陷阱
需避免的常见错误: 学员常担心向随机森林中添加太多树会导致过拟合(Overfitting)。事实上,随机森林通常不会仅因为树变多而过拟合。添加更多树只会让变异性更稳定。树「太多」的主要缺点仅仅是电脑跑模型需要花更长的时间!
快速总结检查清单:
• Bagging 通过对自助样本生成的许多树进行平均,从而降低变异性。
• 随机森林改进了 Bagging,在每次分裂时仅允许使用随机的预测因子子集(这即是 R 语言中的 mtry 参数)。
• mtry 是最重要的超参数(Hyperparameter)。如果 \( m = p \),随机森林就变成了普通的 Bagging。
• OOB 误差允许我们在无需单独测试集的情况下验证模型。
• 变量重要性帮助我们解释在这些复杂模型中,哪些特征最重要。
继续加油!你做得很好。基于树的模型是 Exam PA 的重头戏,掌握随机森林是迈向通过考试的一大步!