随机森林

随机森林 (RF) 是一种决策树的集合,其中每个决策树都使用特定的随机噪声进行训练。随机森林是最流行的决策树集成学习形式。本单元讨论了用于创建独立决策树来提高构建有效随机森林的几率的几种技术。

装袋

打包 (bootstrap aggregat) 表示使用训练集中的随机样本子集来训练每个决策树。换言之,随机森林中的每个决策树都是基于不同的样本子集进行训练的。

装箱方式很奇怪。每个决策树训练的样本数量与原始训练集相同。例如,如果原始训练集包含 60 个样本,则每个决策树都基于 60 个样本进行训练。但是,打包方法仅基于这些样本的子集(通常为 67%)训练每个决策树。因此,在训练给定的决策树时,子集中的 40 个样本中有一些必须重复使用。这种重复使用称为“带替换”的训练。

例如,表 6 显示了 Bagging 如何在三个决策树中分布 6 个样本。请注意以下几点:

  • 每个决策树总共需要训练 6 个样本。
  • 每个决策树都会使用一组不同的样本进行训练。
  • 每个决策树都会重复使用特定样本。例如,样本 4 在训练决策树 1 中被使用了两次;因此,样本 4 的学习权重在决策树 1 中实际上翻了一番。

表 6. 将 6 个训练样本装入三个决策树。每个数字表示给定决策树 (1-3) 的训练数据集中给定训练样本 (#1-6) 的重复次数。

训练样本
#1 #2 #3 #4 #5 6
原始数据集 1 1 1 1 1 1
决策树 1 1 1 0 2 1 1
决策树 2 3 0 1 0 2 0
决策树 3 0 1 3 1 0 1

在 bagging 中,每个决策树几乎总是根据原始训练集中的示例总数进行训练。使用较多或较少的样本训练每个决策树往往会降低随机森林的质量。

虽然原始随机森林论文中不存在样本,但样本的采样有时会“不替换”完成;也就是说,一个训练样本不能在决策树训练集中出现多次。例如,在上表中,所有值都是 0 或 1。

YDF 代码
您可以使用 YDF 中的以下分配来启用训练而无需替换:bootstrap_training_dataset=False

属性抽样

属性采样意味着,不会在每个节点上测试随机选择的特征子集,而不是寻找所有可用特征的最佳条件。在决策树的每个节点中,对被测试特征集进行随机采样。

下面的决策树展示了属性 / 特征抽样。此处的决策树基于 5 个特征 (f1-f5) 进行训练。蓝色节点表示测试的功能,而白色节点未测试。该条件根据最佳测试特征(用红色轮廓表示)构建而成。

三个节点,每个节点显示五个地图项。根节点及其一个子节点测试五个功能中的三个。另一个子节点用于测试五个地图项中的两个。

图 21. 属性采样。

 

属性采样的比率是一个重要的正则化超参数。上图使用的宽高比约为 3⁄5。默认情况下,许多随机林实现会测试 1/3 的回归特征和用于分类的 sqrt(特征数量)。

在 TF-DF 中,以下超参数控制属性采样:

  • num_candidate_attributes
  • num_candidate_attributes_ratio

例如,如果为 num_candidate_attributes_ratio=0.5,则每个节点上将测试一半的特征。

停用决策树正则化

随机森林中的单个决策树在训练时不会进行修剪。(请参阅过拟合和剪枝)。这会导致树状图过于复杂,预测质量不佳。这些树不是正则化单个树,而是进行集成学习,从而产生更准确的总体预测。

我们预计随机森林的训练和测试准确率有所不同。expect随机森林的训练准确率通常要高得多(有时等于 100%)。然而,随机森林的训练准确率非常高是正常的,并不表示随机森林过拟合。

随机性的两个来源(bagging 和属性采样)可确保决策树之间的相对独立性。这种独立性可纠正单个决策树的过拟合。因此,集成学习不会过拟合。 我们将在下一单元中说明这种不直观的效果。

随机森林在训练时不设最大深度或每叶的观察次数下限。在实践中,限制每个叶片的最大深度和最小观察数量是有益的。默认情况下,许多随机林使用以下默认值:

  • 最大深度约为 16
  • 每叶的观察次数下限约为 5。

您可以调节这些超参数。

YDF 代码
YDF 的调谐器是一种调整超参数的简单方法。 如需了解详情,请参阅 YDF 的调整教程

噪声的清晰度

为什么随机噪声可以提高随机森林的质量?为说明随机噪声的优势,图 22 显示了经典(剪枝)决策树和使用椭圆模式的简单二维问题示例训练的随机森林的预测。

众所周知,椭圆形模式对于决策树和决策森林算法来说很难在轴对齐条件下学习,因此它们是一个很好的示例。请注意,经过剪枝的决策树无法获得与随机森林相同的预测质量。

三幅插图。第一个插图标记为“标准答案”,它是一个完美的椭圆。第二张图标有“已剪除的决策树”,它位于椭圆形和矩形之间。第三个插图标有“随机森林”,它并不完全是一个椭圆形,但与标记为“已剪除的决策树”的插图相比,它更接近椭圆形。

图 22. 标准答案与单个剪枝决策树生成的预测结果和随机森林生成的预测结果。

下一个曲线图显示了随机森林的前三个未剪除决策树的预测结果;也就是说,这些决策树都通过以下组合进行训练:

  • Bagging
  • 属性抽样
  • 停用剪枝

请注意,这三个决策树的个别预测比上图中经过剪枝的决策树的预测差。然而,由于各个决策树的错误关联性很弱,因此这三种决策树会组合成一个集成学习,以创建有效的预测。

三个非常嘈杂的省略号。

图 23. 三个未剪除的决策树,将构建有效的集成。

由于随机林的决策树不被修剪,因此训练随机林不需要验证数据集。在实践中,尤其是在小型数据集上,应使用所有可用数据来训练模型。

在训练随机森林时,添加更多决策树时,误差几乎总是减小;也就是说,模型的质量几乎总是在提高。可以,添加更多决策树几乎总是减少随机森林的错误。换句话说,添加更多决策树不会导致随机森林过拟合。在某个时刻,模型只是不再继续改进。Leo Breiman 曾说过一句名词:“随机森林不会过拟合,因为可以增加更多树”。

例如,以下图表显示了添加更多决策树时随机森林模型的测试评估结果。准确率快速提高,直到达到 0.865 左右。但是,添加更多决策树并不会降低准确率;换句话说,模型不会过拟合。这种行为(大多数情况下)始终是真实的,并且独立于超参数。

上一段落中所述准确率与决策树数量的图表。

图 24. 随着更多决策树添加到随机森林,准确率保持不变。