【问题标题】:How the number of nodes are determined in random forest in R如何在 R 中的随机森林中确定节点数
【发布时间】:2016-01-20 03:56:08
【问题描述】:

我使用randomForest 包来执行二进制分类。请问randomForest()如何确定每棵树的节点数?我认为节点的数量保存在 model$forest$nrnodes 中。我说的对吗?

在我的数据集中,我有 10,000 个正样本和 70,000 个负样本。除了树的数量 50,100,200 和 500 之外,我使用默认参数构建了几个模型。它们的性能非常相似。每个模型的节点数也差不多,1400左右。

能否解释一下这个 1400 是如何计算的?哪个参数用于控制每棵树的节点数?任何建议将不胜感激!

【问题讨论】:

  • 对于分类,randomForest 完全构建树,直到每个节点有 5 个观察值。然后它将多数类作为预测。
  • 节点总数将取决于构建树时randomForest拆分的次数。正如@Zelazny7 提到的,每个“叶子”最终都会有 5 个观察值。
  • 至于控制节点数的参数,取决于maxnodesntree两个参数
  • @Zelazny7 我明白maxnode 定义了树大小的上限,如果树不是那么“大”,则不会影响大小。我不明白ntree在这里如何控制树的大小。

标签: r random nodes


【解决方案1】:
randomForest(x, y=NULL,  xtest=NULL, ytest=NULL, ntree=500,
         mtry=if (!is.null(y) && !is.factor(y))
         max(floor(ncol(x)/3), 1) else floor(sqrt(ncol(x))),
         replace=TRUE, classwt=NULL, cutoff, strata,
         sampsize = if (replace) nrow(x) else ceiling(.632*nrow(x)),
         nodesize = if (!is.null(y) && !is.factor(y)) 5 else 1,
         maxnodes = NULL,
         importance=FALSE, localImp=FALSE, nPerm=1,
         proximity, oob.prox=proximity,
         norm.votes=TRUE, do.trace=FALSE,
         keep.forest=!is.null(y) && is.null(xtest), corr.bias=FALSE,
         keep.inbag=FALSE, ...)

在节点大小中,if 语句的TRUE 条件是如果y 存在并且不是用于分类的因素或分类变量。因此FALSE 条件为nodesize=1。因此,无论树的数量如何,它都会继续拆分您的预测变量,直到每个节点都是纯的。由于构建树时的随机性,它们会略有不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2015-04-24
    • 2016-10-08
    • 2018-01-18
    • 2015-10-19
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多