随机森林回归中使用的特征数量的参考

机器算法验证 随机森林 大车
2022-04-07 12:57:24

在随机森林回归中进行分割时使用的默认特征数量在 Python 的 sklearn 中是回归问题中的预测变量的数量(请参阅sklearn 文档:If , then = )。在 R 的 randomForest 包中,在回归问题中进行拆分时使用的默认特征数是(请参阅randomForest 文档,特别是 的参数)。mm=ppautomax_featuresn_featuresm=p/3mtryrandomForest

这一点在https://github.com/scikit-learn/scikit-learn/issues/7254 (简要)讨论过,其中一位 sklearn 贡献者说我已经在几个地方建议(例如https://stackoverflow.com/questions/23939750/understanding-max-features-parameter-in-randomforestregressorhttps://web. stanford.edu/~hastie/Papers/ESLII.pdfm=pm=p/3

我的一般理解是应该始终在随机森林回归问题中进行调整,并且最佳可能会因设置而异。是否有任何参考文献在回归(而不是分类)的背景下专门是否有充分的理由偏爱 R 或 sklearn 的默认值(或者答案应该是“不要使用默认值,始终调整”,以便默认值无关紧要)?mmmm

1个回答

根据统计学习要素(第 15.3 节):

  • 推荐的默认值是用于回归问题和用于分类问题(归因于 Breiman)m=p/3m=p

  • 的最佳值取决于问题,因此视为调整参数。mm

正如 Breiman (2001) 所讨论的,随机森林的泛化误差随着单个树的泛化误差以及树之间的相关性而减小。二次采样特征是一种去相关树的方法。增加会使单个树更强大,但也会增加它们的相关性。的最佳值实现了这两种相反效果之间的折衷,并且通常位于范围中间的某个位置。他指出,在回归问题中(与分类问题相比),单个树的泛化误差随着的增加而减小得更慢,而树之间的相关性增加得更慢。因此,较大的mmmm是需要的。默认值比分类问题更快。但是,我没有在本文中看到对的明确建议。mpm=p/3

关于 scikit-learn 的默认设置:如上所述,二次采样特征是随机森林的基本属性之一,并通过去相关树来提高其性能。设置将消除此好处,并使模型等效于简单的袋装树。Breiman (2001) 表明,这在回归问题上表现不佳。您链接的 scikit-learn github 页面上有人声称m=pm=pm=p确实值得推荐。然而,他们引用的论文是关于“极其随机的树”,而不是标准的随机森林。极端随机树选择完全随机的分裂点,而随机森林优化分裂点。如上所述,良好的性能需要在加强单个树和注入随机性以使它们去相关之间取得平衡。因为极其随机的树在分割点中注入了更高程度的随机性,所以通过搜索更多要分割的特征来补偿它们是有道理的。相反,随机森林完全优化了分割点,因此它们将受益于二次抽样特征以增加随机性是有道理的。

参考:

布雷曼 (2001)随机森林。

哈斯蒂、蒂布希拉尼、弗里德曼 (2009)统计学习的要素。