装袋算法与随机森林


2022年1月3日, Learn eTutorial
2553

分类与回归树 (CART) 存在一些问题,为了解决这些问题,集成学习中引入了 bagging 和随机森林方法,这有助于提高决策树的准确性。

分类与回归树 (CART) 的问题

虽然 CART 是一种直观且强大的算法,但它也存在一些弱点:

  1. 过拟合:决策树容易过拟合,这取决于所选的最大深度以及数据是否针对高变异性特征存在偏斜。
  2. 模型不稳定性:即使对训练数据集进行微小的扰动(如添加一个数据点或使用一个略有不同的训练集),也可能对树的结构产生巨大影响。
  3. 对不平衡数据敏感:决策树识别分支分裂的方式取决于每个类别的标签数量。

为了解决这些问题,已经提出了可以提高决策树准确性的集成方法。我们将讨论两种相关的改进方法:
1. 装袋法 (Bagging)
2. 随机森林

自助采样法 (Bootstrapping)

要理解 Bagging,我们需要先了解一种称为自助采样法 (bootstrap sampling) 的统计方法。自助采样法的目标是在数据集大小有限的情况下,估计一个未知的数据分布。

自助采样法 (Bootstrapping) 用于计算总体参数;其工作原理是从数据集中有放回地随机抽取一些数据样本。

Bootstrapping

其基本思想是在随机数据采样(即从数据集中取一个较小的子集)时,我们也可以对数据进行重采样:我们从原始数据集中重复抽取样本。这个过程会重复大量次数(1000-10000次),通过计算每次迭代的均值或其他统计量,我们可以了解数据的分布情况。

装袋法 (Bagging)

Bagging 也可称为自助聚合 (bootstrap aggregation),它被用于集成学习方法中,以提高集成学习方法的准确性和性能。Bagging 是通过减少数据集中的方差来提高性能的。
Bagging 常用于决策树算法中。它可用于分类和回归方法,因为它有助于减少过拟合问题。

 

Bagging

Bagging 旨在使用自助采样法解决 CART 的模型不稳定性问题。Bagging 算法如下:

  1. 创建大量有放回的随机训练集子样本
  2. 对每个子集,训练一个 CART 模型
  3. 给定测试集,计算每个模型的平均预测值
  4. 对于分类任务,最终预测类别是所有模型对某个类别的多数投票结果。
  5. 对于回归任务,最终预测值是所有模型预测值的众数。

这个过程稳定了最终模型的答案,因为它选择了在大多数树中都出现的路径。然而,bagging 并没有解决树算法的另一个关键问题:高方差和高度相关的特征。

问题很简单:在构建每棵树时,我们总是使用所有特征。一些特征天然具有较高的方差或彼此高度相关。这些特征在 CART 集成中总是会显示为重要特征,但可能会掩盖数据集中的真实关系。

Bagging 的工作原理

  1. 假设我们有一个包含许多特征和观测值的数据集。首先,我们必须从这个数据集中无放回地选择一个随机样本。[我们必须创建多个样本子集]。
  2. 为我们选择的每个子集创建一个基模型
  3. 通过并行且相互独立地从每个数据集中学习来创建一个模型。
  4. 结合所有子模型的预测以获得最终结果
Ensemble Classifier

Bagging 的优点

  • 通过减少过拟合问题来改进模型
  • 提高模型的性能和准确性
  • 它能够处理高维数据。

Bagging 的缺点

  • 可能导致模型的可解释性有所损失
  • 如果处理不当,bagging 可能导致高偏差。
  • 尽管 Bagging 提高了准确性,但它的计算成本相对较高。

随机森林

Random-Forests


为了解决高方差特征或共线性的问题,一个更好的方法是在 bagging 过程中周期性地省略高变异性特征或移除一些相关特征。这将揭示通常被这些特征隐藏的重要树结构。

随机森林通过对 bagging 过程进行一个微小的调整来解决这个问题:在训练每棵树时,不是使用所有特征,而是使用一个随机且较小的特征子集。这最终会从数据中移除有问题的特征,在多次重复这个过程后,隐藏的树结构就能开始显现。

用于分支分裂的特征数量是随机森林中引入的一个超参数,需要指定。

随机森林是一种带有 CART 模型的自助算法。假设我们有 1000 个观测值和 10 个变量。随机森林将使用这些样本和初始变量构建不同的 CART。它会抽取一些随机样本和一些初始变量来构建一个 CART 模型。然后它会重复这个过程若干次,并预测最终结果,即每个单一预测的平均值。

简单来说,随机森林是随机决策树的集合。但它基于两个概念来从多棵树中得出最终预测。

  1. 构建树时对数据集进行随机抽样
  2. 分裂节点时使用特征的随机子集

随机森林算法的工作原理

  1. 从数据集中选取 M 个随机数据
  2. 基于这些记录构建一棵决策树
  3. 选择你需要的树的数量,并重复步骤1和2

袋外估计性能

在每次自助采样过程中,都有一些样本未被包含在模型训练中。这些样本被称为袋外样本 (out-of-bag samples),它们被用作验证集来评估单棵树的模型性能。

通过计算袋外性能的平均值,我们得到了袋装模型的一个估计准确率,这类似于交叉验证过程。这被称为袋外准确率 (out-of-bag accuracy)

这也是为什么自助采样法对于 CART 和机器学习模型是一种强大的统计方法:它引入了一种稳健的统计方法来评估模型准确性。

优点

  • 随机森林算法是无偏的
  • 它非常稳定,如果我们添加新的数据集也不会产生任何问题
  • 随机森林在分类问题和数值问题上都能顺利工作
  • 即使数据集中有缺失值,它也能有效工作。

缺点

  • 结构和过程非常复杂,包含多棵决策树
  • 由于其复杂性,需要大量时间进行训练