2016-01-20 360 views
2

我使用randomForest包执行二进制分类。我想问randomForest()如何确定每棵树中的节点数?我认为节点的数量保存在模型$ forest $ nrnodes中。我在这里纠正?如何在R中的随机森林中确定节点数

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

有些人可以解释一下这个1400是如何计算的吗?哪个参数用于控制每棵树中的节点数量?任何意见将不胜感激!

+2

分类,'randomForest'完全构建树,直到每个节点有5个观察值。然后它将大多数的类作为预测。 – Zelazny7

+1

节点的总数将取决于构建树时“randomForest”分割的次数。正如@ Zelazny7所提到的,每个“叶子”最终会有5个观测值。 –

+0

至于控制节点数量的参数,它取决于两个参数,'maxnodes'和'ntree' – Zelazny7

回答

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, ...) 

在nodesize中,TRUE条件为该if语句是如果y存在且不是一个因素,或用于分类分类变量。因此FALSE条件是nodesize=1。所以它将继续分裂你的预测变量,直到每个节点都是纯粹的,而不管树数是多少。由于建造树木时的随机性,它们会略有不同。