第二章:17.3 随机森林算法
目录
随机森林算法的详细介绍
1. 随机森林的基本思想
2. 随机森林的构建过程
2.1 有放回采样(Bootstrap Sampling)
2.2 训练决策树
2.3 特征随机选择(Feature Randomization)
2.4 生成多棵树
2.5 预测与投票
3. 随机森林的关键优势
3.1 有放回采样(Bootstrap Sampling)
3.2 特征随机选择(Feature Randomization)
3.3 集成学习的优势
4. **关于树的数量 B
5. 随机森林与 Bagging 决策树的关系
6. 随机森林的总结
随机森林算法的详细介绍
随机森林(Random Forest)是一种强大的集成学习算法,它通过组合多个决策树来提高预测的准确性和稳定性。它比单个决策树更强大,因为它能够通过多种方式减少过拟合,并充分利用数据的多样性。以下是随机森林算法的详细解释:
1. 随机森林的基本思想
随机森林的核心思想是“集成学习”(Ensemble Learning),即通过组合多个模型来提高整体性能。具体来说,随机森林通过以下两个关键步骤来构建一组决策树:
-
有放回采样(Bootstrap Sampling):从原始训练集中随机抽取样本,生成多个新的训练集。
-
特征随机选择(Feature Randomization):在每个决策树的节点上,随机选择一部分特征进行分裂,而不是使用所有特征。
通过这两个步骤,随机森林生成一组多样化的决策树,并通过投票或平均的方式得出最终预测结果。
2. 随机森林的构建过程
以下是随机森林的具体构建步骤:
2.1 有放回采样(Bootstrap Sampling)
假设你有一个包含 m 个样本的原始训练集。随机森林的第一步是从这个训练集中生成多个新的训练集。具体做法如下:
-
对于 b = 1 到 B(B 是决策树的总数,通常为 100 左右):
-
从原始训练集中随机抽取 m 个样本,但允许重复(即有放回采样)。
-
生成一个新的训练集,这个训练集的大小与原始训练集相同(也是 m 个样本)。
-
例如:
-
假设原始训练集有 10 个样本(编号为 1 到 10)。
-
第一次采样时,可能随机抽取到样本
[1, 3, 3, 5, 6, 6, 7, 8, 9, 10]
,其中样本 3 和 6 出现了两次。 -
第二次采样时,可能随机抽取到样本
[2, 2, 4, 5, 5, 6, 7, 8, 9, 9]
,这次样本 2、5 和 9 出现了两次。
通过这种方式,每次生成的训练集都有所不同,但样本总数保持不变。
2.2 训练决策树
对于每个通过有放回采样生成的新训练集,训练一棵决策树。由于每个训练集的样本略有不同,因此每次训练出的决策树也会有所不同。
-
在训练决策树时,我们通常使用“不剪枝”(Unpruned)的方式,让决策树尽可能地生长,直到每个叶子节点都包含尽可能少的样本(例如,每个叶子节点只包含一个样本)。这样做的目的是让每棵树尽可能地捕捉数据中的细节。
2.3 特征随机选择(Feature Randomization)
在传统的决策树中,每个节点会选择所有特征中信息增益(或基尼不纯度)最高的特征进行分裂。然而,在随机森林中,我们引入了一个关键改进:在每个节点上,随机选择一部分特征(而不是所有特征)进行分裂。
具体做法如下:
-
假设原始数据有 n 个特征。
-
在每个节点上,随机选择 k 个特征(k < n)作为候选特征。
-
从这 k 个特征中选择信息增益最高的特征进行分裂。
这种随机化特征选择的方式进一步增加了决策树之间的多样性。例如:
-
如果数据有 100 个特征,我们可以选择 k = sqrt(100) = 10 个特征作为候选特征。
-
在每个节点上,决策树只能从这 10 个特征中选择最优特征进行分裂,而不是从所有 100 个特征中选择。
2.4 生成多棵树
重复上述过程 B 次,最终生成 B 棵不同的决策树。这些树组成随机森林。
2.5 预测与投票
当需要对新的数据进行预测时,随机森林会利用所有决策树的预测结果进行综合判断:
-
分类问题:每棵树对输入数据进行分类预测,然后通过多数投票(Majority Voting)的方式得出最终结果。例如,如果有 100 棵树,其中 60 棵树预测类别为 A,40 棵树预测类别为 B,则最终预测结果为 A。
-
回归问题:每棵树对输入数据进行回归预测,然后通过取平均值(Averaging)的方式得出最终结果。
3. 随机森林的关键优势
随机森林之所以强大,是因为它结合了多种技术来提高模型的性能:
3.1 有放回采样(Bootstrap Sampling)
通过有放回采样,每次生成的训练集略有不同,但样本总数保持不变。这种“小变化”使得每棵树都捕捉到数据的不同方面,从而减少了过拟合的风险。
-
例如,某些样本可能在某些训练集中出现多次,而在另一些训练集中根本不出现。这种多样性使得随机森林对数据中的噪声和异常值更加鲁棒。
3.2 特征随机选择(Feature Randomization)
在每个节点上随机选择一部分特征,而不是使用所有特征进行分裂。这种随机化特征选择有以下好处:
-
增加树的多样性:每棵树在分裂时只能选择部分特征,这使得每棵树的结构更加不同。
-
减少特征之间的相关性:即使某些特征在全局上非常重要,但在局部节点上可能不会被选中,从而避免了某些特征对模型的过度主导。
3.3 集成学习的优势
随机森林通过组合多棵树的结果来提高预测的准确性和稳定性:
-
减少方差:通过平均或投票的方式,随机森林能够减少单个决策树的方差,从而提高模型的泛化能力。
-
保持偏差:随机森林在减少方差的同时,不会显著增加偏差,因此它在处理复杂数据集时表现出色。
4. **关于树的数量 B
在随机森林中,B 表示决策树的总数。选择合适的 B 值对模型性能有重要影响:
-
较小的 B 值:如果 B 太小(例如 10 或 20),随机森林可能无法充分利用数据的多样性,导致模型性能不够稳定。
-
较大的 B 值:增加 B 的值通常会提高模型的性能,但超过一定数量后,性能提升会逐渐减缓。例如,从 100 棵树增加到 200 棵树可能只会带来微小的性能提升,但计算成本会显著增加。
-
典型值:在实际应用中,B 的值通常设置为 100 左右。这个值在性能和计算成本之间取得了较好的平衡。
5. 随机森林与 Bagging 决策树的关系
随机森林是 Bagging 决策树的一种改进版本。Bagging(自助法聚合)的核心思想是通过有放回采样生成多个训练集,并在每个训练集上训练一棵决策树。然而,Bagging 决策树有一个缺点:即使训练集略有不同,决策树的根节点可能仍然会选择相同的特征进行分裂,导致树之间的差异不够大。
随机森林通过引入“特征随机选择”解决了这个问题。它不仅在样本层面引入多样性(通过有放回采样),还在特征层面引入多样性(通过随机选择特征子集)。这种双重随机化使得随机森林比 Bagging 决策树更强大。
6. 随机森林的总结
随机森林是一种强大的集成学习算法,它通过以下方式提高模型的性能:
-
有放回采样:通过有放回采样生成多个略有不同的训练集,减少过拟合。
-
特征随机选择:在每个节点上随机选择部分特征进行分裂,增加树的多样性。
-
集成学习:通过组合多棵树的结果,减少方差,提高模型的泛化能力和稳定性。
随机森林在处理复杂数据集时表现出色,尤其适用于特征数量较多的情况。它是一种非常实用的机器学习算法,广泛应用于分类和回归任务中。