【问题标题】:Understanding max_features parameter in RandomForestRegressor了解 RandomForestRegressor 中的 max_features 参数
【发布时间】:2014-07-19 08:05:33
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: scikit-learn


    【解决方案1】:

    直接来自documentation

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

    所以max_features 就是你所说的m。当max_features="auto"m = p 并且树中没有进行特征子集选择,所以“随机森林”实际上是普通回归树的bagged ensemble。文档继续说

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

    通过不同地设置max_features,您将获得一个“真正的”随机森林。

    【讨论】:

    • 那么为什么他们声称“经验良好的默认值是回归问题的 max_features=n_features”?正如您所说,这只是装袋-随机森林不应该比装袋更好吗?
    • @csankar69:我不是回归树方面的专家。我确实在 RF 上工作,因为我使用它们进行分类,我可以向你保证,它们的作者在这些问题上是知识渊博的。在任何情况下,您都可以自己检查属性装袋是否有助于解决您的问题。
    • 我 95% 确定回归的 max_features=n_features 是 scikit 的一个错误。 RF 的原始论文给出了回归的 max_features = n_features/3。使用前者甚至没有意义,它甚至不是射频。
    • 感谢@UlysseMizrah 的评论! The Wikipedia article 参考 The Elements of Statistical Learning: 2nd Edition(Hastie et. al. 2009, p. 592),其中报告说原作者推荐 n_features / 3。我想我会发布这些额外的参考,以防万一有人感兴趣。
    • max_features=n_features 是否具有良好默认值的问题在stats.stackexchange.com/q/324370/295421github.com/scikit-learn/scikit-learn/issues/7254 上进行了深入讨论
    【解决方案2】:

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

    【讨论】:

    • 这更像是对另一条评论的评论,而不是对问题的回答。
    • 抱歉,我现在只有不到 50 个声望可以发表评论。
    • 等一下,随机森林中的每棵树实际上都使用了所有特征,但是在每个节点上随机选择它们的子集?还是每棵树都采用特征子集并从那里获得每个节点的 max_features?
    • @Ambleu,“随机森林中的每棵树实际上都使用了所有特征,但是在每个节点上随机选择它们的子集”是正确的。
    【解决方案3】:

    max_features 基本上是随机选择的特征数量,并且在拆分时没有替换。假设您有 10 个独立的列或特征,那么 max_features=5 将在每次拆分时随机选择 5 个特征且不替换。

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 2018-02-24
      • 2018-10-08
      • 2021-08-04
      • 2023-02-01
      • 2021-01-19
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多