了解RandomForestRegressor中的max_features参数

csa*_*r69 23 scikit-learn

在使用自举样本构建随机森林中的每棵树时,对于每个终端节点,我们从p变量中随机选择m个变量以找到最佳分割(p是数据中特征的总数).我的问题(对于RandomForestRegressor)是:

1)max_features对应于什么(m或p或其他东西)?

2)从max_features变量中随机选择m个变量(m的值是多少)?

3)如果max_features对应于m,那么为什么我要将它设置为p等于回归(默认值)?这种设置的随机性在哪里(即它与装袋有什么不同)?

谢谢.

Fre*_*Foo 12

直接来自文档:

[ max_features]是分割节点时要考虑的随机特征子集的大小.

所以max_features你称之为m.当max_features="auto",m = p并且在树中没有执行特征子集选择时,"随机森林"实际上是普通回归树的袋装集合.文档接着说

经验良好的默认值适用max_features=n_features于回归问题和max_features=sqrt(n_features)分类任务

通过max_features不同的设置,你将得到一个"真正的"随机森林.

  • 那么为什么他们声称"经验良好的默认值是针对回归问题的max_features = n_features"?正如你所说这只是套袋 - 是不是随机森林应该比套袋更好? (4认同)
  • 我95%确定回归的max_features = n_features是scikit的一个错误.RF的原始论文给出了回归的max_features = n_features/3.使用前者甚至没有意义,甚至不是RF. (4认同)
  • 感谢@UlysseMizrah的评论![维基百科文章](https://en.wikipedia.org/wiki/Random_forest#From_bagging_to_random_forests)参考*统计学习要素:第2版*(Hastie等,2009,第592页),其中报道了原作者推荐n_features/3.我想我会发布这些额外的引用,以防有人感兴趣. (2认同)
  • https://stats.stackexchange.com/q/324370/295421 和 https://github.com/scikit-learn/scikit-learn/issues 上深入讨论了 max_features=n_features 是否是一个很好的默认值的问题/7254 (2认同)

Zhe*_*Cao 6

@lynnyi,max_features 是在每个分割级别上考虑的特征数量,而不是在整个决策树构造上。更清楚的是,在每个决策树的构建过程中,RF 仍然会使用所有特征(n_features),但它只考虑节点分裂的“max_features”特征的数量。并且“max_features”特征是从整个特征中随机选择的。您可以通过从具有 max_features=1 的 RF 绘制一个决策树来确认这一点,并检查该树的所有节点以计算所涉及的特征数量。

  • 这更像是对另一条评论的评论,而不是对问题的回答。 (3认同)
  • 对不起,但现在我只有不到 50 个声誉可以发表评论。 (2认同)