随机森林和决策树算法

机器算法验证 机器学习 随机森林 大车 装袋
2022-02-01 15:41:07

随机森林是遵循 bagging 概念的决策树的集合。当我们从一个决策树移动到下一个决策树时,最后一个决策树学到的信息如何向前移动到下一个决策树?

因为,根据我的理解,没有什么比为每个决策树创建训练模型,然后在下一个决策树开始从错误分类错误中学习之前加载的模型更好的了。

那么它是怎样工作的?

4个回答

没有信息在树之间传递。在随机森林中,所有的树都是相同分布的,因为树的生长对所有树都使用相同的随机化策略。首先,获取数据的引导样本,然后使用从随机选择的特征子集中分割来生长树。这发生在每棵树上,而无需注意整体中的任何其他树。然而,这些树的相关性纯粹是因为每棵树都在来自公共训练数据池的样本上进行训练。来自同一数据集的多个样本往往是相似的,因此树将编码一些相似性。

您可能会发现从高质量的文本中阅读随机森林的介绍很有帮助。其中之一是 Leo Breiman 的《随机森林》。Hastie 等人在Elements of Statistical Learning中也有一章。

您可能将随机森林与增强方法(例如 AdaBoost 或梯度增强树)混淆了。提升方法不一样,因为它们使用来自先前提升轮的失配信息来通知下一轮提升。请参阅:随机森林是一种增强算法吗?

随机森林是多个相互独立训练的决策树的集合所以没有顺序依赖训练的概念(增强算法就是这种情况)。因此,正如另一个答案中提到的那样,可以对树进行并行训练。

您可能想知道随机森林中的“随机”从何而来:有两种方法可以将随机性注入到学习树的过程中。首先是随机选择用于训练每棵树的数据点,其次是随机选择用于构建每棵树的特征。由于单个决策树通常倾向于过度拟合数据,以这种方式注入随机性会导致拥有一堆树,其中每棵树在可用训练数据的不同子集上都具有良好的准确性(并且可能过度拟合) . 因此,当我们取所有树做出的预测的平均值时,我们会观察到过度拟合的减少(与在所有可用数据上训练单个决策树的情况相比)。

为了更好地理解这一点,这里是训练过程的粗略草图,假设所有数据点都存储在一个用表示的集合中,并且森林中的树数是MN

  1. i=0
  2. 取一个boostrap 样本(即有放回抽样,大小与相同),用表示。MMSi
  3. 使用作为输入数据 训练 -th 树,记为iTiSi
    • 训练过程与训练决策树相同,不同之处在于树中的每个节点仅使用随机选择的特征进行该节点的拆分。
  1. i=i+1
  2. 如果则进行第 2 步,否则所有树都已训练完毕,则随机森林训练结束。i<N

请注意,我将算法描述为顺序算法,但由于树的训练不相互依赖,您也可以并行执行此操作。现在对于预测步骤,首先对森林中的每棵树(即、...、)进行预测,然后:T1T2TN

  • 如果用于回归任务,则取预测的平均值作为随机森林的最终预测。

  • 如果用于分类任务,使用软投票策略:取每个类的树预测概率的平均值,然后宣布平均概率最高的类作为随机森林的最终预测。

此外,值得一提的是,可以以顺序依赖的方式训练树,而这正是梯度提升树算法所做的,这是一种与随机森林完全不同的方法。

随机森林是一种bagging算法,而不是boosting算法。

随机森林使用数据的随机样本独立地构建树。并行实现是可能的。

您可能想查看梯度提升,其中树是按顺序构建的,新树试图纠正以前犯的错误。

那么它是如何工作的呢?

随机森林是决策树的集合。树是独立构建的。每棵树都在特征子集和替换选择的样本子集上进行训练。

在预测时,比如说分类,输入参数被赋予森林中的每棵树,每棵树都对分类“投票”,得票最多的标签获胜。

为什么在简单的决策树上使用随机森林?偏差/方差权衡。与单个决策树相比,随机森林是由更简单的树构建的。通常,随机森林可以大大减少由于方差引起的误差,而由于偏差引起的误差增加很小。