2016-01-20 117 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。所以它將繼續分裂你的預測變量,直到每個節點都是純粹的,而不管樹數是多少。由於建造樹木時的隨機性,它們會略有不同。