调整随机森林的实用问题


65

我的问题是关于随机森林。这个美丽的分类器的概念对我来说很清楚,但是仍然存在许多实际使用问题。不幸的是,我没有找到任何有关RF的实用指南(我一直在寻找类似Geoffrey Hinton撰写的“训练受限的Boltzman机器的实用指南”之类的内容,但搜索的是Random Forests!

在实践中如何调整RF?

树木数量越大总会更好吗?是否有合理的限制(当然,除了压缩容量以外),树木数量的增加以及如何针对给定的数据集进行估算?

树木的深度怎么样?如何选择合理的一个?在一个森林中试验不同长度的树木有感觉吗?对此有什么指导?

训练射频时还有其他参数值得一看吗?用于建造单个树木的算法可能是?

当他们说RF能够抵抗过度拟合时,这是真的吗?

我将不胜感激,在搜索过程中可能错过的任何答案和/或指向指南或文章的链接。


有关性能调整的信息,另请参见SO:“如何提高randomForest的性能”
smci 2014年

Answers:


43

我不是权威人物,因此请考虑以下简短的从业者笔记:

越来越多的树木总是越有利于回报的减少。较深的树几乎总是更好的选择,因为它们需要更多的树才能达到类似的性能。

以上两点直接是偏差方差折衷的结果。树木越深,偏差越小。更多的树减少了方差。

最重要的超参数是每个分割要测试多少个功能。功能越无用,您应该尝试的功能越多。这需要调整。如果您只是想知道自己在训练数据上的表现,而没有孪生(〜重复测量),则可以通过OOB估计来对其进行调整。即使这是最重要的参数,它的最佳值通常仍与原始建议的默认值(用于分类/回归的sqrt(p)或(p / 3))相当接近。

相当近期的研究表明,您甚至不需要在功能内进行详尽的拆分搜索即可获得良好的性能。只需为每个选定功能尝试一些切点,然后继续。这样可以使训练更快。(〜极端随机的森林/树木)。


其他一些注意事项:在实践中,我通常通过比较一半的预测与另一棵的预测来确认收敛。至于过度拟合,它更多地是您要概括的功能。如果您要训练有代表性的样本,则它们不会过拟合,但这很少真正起作用。
Shea Parkes

您的“更深的树=更好,其他所有条件都不变”是否适用于具有随时间变化的依存结构的极高噪声数据,其中线性关系最稳健,不会在训练集和测试集之间发生变化?
2014年

如果您只应该学习浅层关系,那么我可以看到浅层树更好的潜力,但是我真的很想使用经验证据来证明这一点(并且没有时间进行研究)。如果您相信或证明线性关系是最有弹性的,那么我会强烈考虑不是基于树的事物。也许带有跳过层的神经网络?
Shea Parkes '02

好吧,假设您有一个包含3个相关特征和100个白噪声特征以及50个数据点的数据集。但是您不知道哪些是白噪声,哪些是提前相关的,而您只是知道您的数据是如此杂音,情况就是如此。显然,树木较大的极浅的树木mtry更好,不需要任何证据或经验证据即可看到。
2014年

22
  • 树数:越大越好:是的。一种评估并知道何时停止的方法是在构建林(或您可以使用的任何其他评估标准)时监视错误率,并检测其收敛时间。您可以在学习集本身上进行操作,也可以在独立的测试集上进行操作。另外,必须注意,树中的测试节点数是对象数的上限,因此,如果您有很多变量而没有那么多训练对象,则强烈建议使用较大的森林,以增加有机会在您的森林中至少评估一次所有描述符。

  • 树的深度:有几种方法可以控制树的深度(限制最大深度,限制节点数,限制分割所需的对象数,如果分割不能充分提高拟合度,则停止分割,... )。在大多数情况下,如果要处理嘈杂的数据,建议修剪(限制树的深度)。最后,您可以使用完全开发的树来计算较短树的性能,因为它们是完全开发的树的“子集”。

  • 每个节点上要测试多少个功能:使用广泛的值(包括推荐值)对您的体验进行交叉验证,您应该获得性能曲线并能够确定最大值,以指出该参数的最佳值+ Shea Parkes的答案。

  • Shea Parkes提到了Extra-Trees,这是详细描述该方法的原始论文:http : //orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.