【问题标题】:R `randomForest` - number of terminal nodes in trained forest (maxnodes not nodesize)R `randomForest` - 训练森林中的终端节点数(maxnodes 不是节点大小)
【发布时间】:2021-09-17 01:46:52
【问题描述】:

如何为尚未定义maxnodes参数的森林计算maxnodes

maxnodes: Maximum number of terminal nodes trees in the forest can have. If not given, trees are grown to the maximum possible (subject to limits by ‘nodesize’). If set larger than maximum possible, a warning is issued.

ma​​xnodes 不是节点大小

【问题讨论】:

  • 默认情况下,树木已经完全长大。这意味着每个节点中有 1 个观察值用于回归,5 个观察值用于分类。
  • 只要看文档中nodesize的定义:终端节点的最小尺寸。将此数字设置得更大会导致更小的树木生长(因此需要更少的时间)。请注意,分类 (1) 和回归 (5) 的默认值不同。
  • @Zelazny 7 - Maximum number of terminal nodes 不是终端节点中 obs 的数量

标签: r random-forest


【解决方案1】:

可以使用“getTree”函数找到森林中每棵树的终端节点数。终端节点由“状态”列中的 -1 表示。

要找到最大值,您必须找到所有树中终端节点的最大数量。

【讨论】:

    【解决方案2】:

    如果您将模型对象加载到名为 model 的 R 工作区中,则可以以交互方式或编程方式获得最大节点数。

    下面是在具有 10 棵树的 iris 数据集上训练的模型上发出的 View() 命令的屏幕截图。维度中显示了其中几个变量的最大节点数:nodestatusbestvartreemapnodepredxbestsplit。在这种情况下,它是 9(报告维度中的第一个数字,即 9 x 10)。

    每棵树的节点数存储在ndbigtree 中。虽然看起来每棵树都有 9 个节点,但后来的一棵树实际上只有 7 个节点。

    以编程方式,您可以使用此信息以多种方式获取最大树大小。

    最大节点数(终端或其他):

    dim(model$forest$nodestatus)[1]
    

    最大节点数(终端):

    terminalInEachTree = apply(model$forest$nodestatus, 2, function(x) { length(which( x == -1)) } ) # get the number of terminal nodes in each tree
    maxOverall = max(terminalInEachTree)  
    

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2017-02-27
      • 2011-07-26
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      相关资源
      最近更新 更多