随机森林是一种提升算法吗?

机器算法验证 机器学习 随机森林 助推 装袋
2022-01-30 04:43:32

提升的简短定义

一组弱学习器可以创建一个强学习器吗?弱学习器被定义为与真实分类仅略微相关的分类器(它可以比随机猜测更好地标记示例)。

随机森林的简短定义

随机森林生长了许多分类树。要从输入向量中分类新对象,请将输入向量放在森林中的每棵树下。每棵树都给出一个分类,我们称这棵树为该类“投票”。森林选择得票最多的分类(在森林中的所有树上)。

随机森林的另一个简短定义

随机森林是一种元估计器,它在数据集的各种子样本上拟合多个决策树分类器,并使用平均来提高预测准确性和控制过拟合。

据我了解,随机森林是一种提升算法,它使用树作为其弱分类器。我知道它还使用了其他技术并对其进行了改进。有人纠正我说随机森林不是增强算法?

有人可以详细说明一下,为什么随机森林不是增强算法?

4个回答

随机森林是一种装袋算法,而不是一种提升算法。它们是实现低误差的两种相反方式。

我们知道误差可以由偏差和方差组合而成。过于复杂的模型偏差低但方差大,而过于简单的模型方差低但偏差大,两者都导致高误差,但有两个不同的原因。结果,人们想到了两种不同的解决问题的方法(可能是 Breiman 和其他人),一种是复杂模型的方差减少,一种是简单模型的偏差减少,即随机森林和提升。

随机森林减少了大量具有低偏差的“复杂”模型的方差。我们可以看到组合元素不是“弱”模型而是过于复杂的模型。如果您阅读有关该算法的信息,那么底层的树会“有点”与“可能”一样大。底层树是独立的并行模型。并且在其中引入了额外的随机变量选择,使它们更加独立,这使得它比普通的 bagging 表现更好,并命名为“random”。

而 boosting 减少了大量低方差的“小”模型的偏差。正如您所引用的,它们是“弱”模型。底层元素有点像关于每个级别偏差的“链”或“嵌套”迭代模型。所以它们不是独立的并行模型,而是每个模型都是在所有以前的小模型的基础上通过加权建立的。也就是所谓的“一一提升”。

Breiman 的论文和书籍讨论了很多关于树木、随机森林和提升的内容。它可以帮助您了解算法背后的原理。

随机森林不被视为增强型算法。

如您的提升链接中所述:

...大多数提升算法包括迭代学习关于分布的弱分类器并将它们添加到最终的强分类器中。当它们被添加时,它们通常以某种方式加权,这通常与弱学习器的准确性有关。添加弱学习器后,对数据进行重新加权...

这种迭代过程的一个例子是 adaboost,通过多次迭代来提升或重新加权较弱的结果,让学习者更多地关注它出错的区域,而不是那些正确的观察。

相比之下,随机森林是一种集成装袋或平均方法,旨在通过从数据集中随机选择(并因此去相关)许多树并对它们进行平均来减少单个树的方差。

它是bagging的延伸。该过程如下,您获取数据的引导样本,然后使用它来生成分类或回归树 (CART)。这是完成预定义的次数,然后预测是单个树预测的聚合,它可以是多数票(用于分类)或平均值(用于回归)。这种方法称为装袋(Breiman 1994)。此外,每个分割候选变量树取自所有可用自变量的随机样本。这引入了更多的可变性,并使树木更加多样化。这被称为随机子空间方法(Ho,1998)。如前所述,这会产生非常多样化的树,从而转化为彼此高度独立的树。由于Jensen 不等式,我们知道这些树预测的平均误差将小于或等于从该数据集生长的平均树的误差。另一种看待它的方法是查看均方误差并注意如何将其分解为偏差和方差部分(这与监督学习中称为偏差-方差权衡的问题有关)。随机森林通过对正交树的预测进行平均来减少方差,从而获得更好的准确性。应该注意的是,它继承了它的树的偏差,这是一个非常有争议的问题,例如这个问题。

我相信你特别混淆了提升与一般的集成方法,其中有很多。您对提升的“定义”不是完整的定义,这在 Pat 的回答中进行了详细说明。如果您想了解更多关于集成方法的信息,我建议您阅读以下书籍:

约翰·埃尔德和乔瓦尼·塞尼。数据挖掘中的集成方法:通过组合预测提高准确性(2010)