2016-01-20 2 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. Таким образом, он будет продолжать делиться на ваши предикторные переменные, пока каждый узел не станет чистым, независимо от количества деревьев. Они будут немного отличаться из-за случайности при построении деревьев.

Смежные вопросы