随机森林 – 随机森林调整 – 树木深度和树木数量

我有一个关于调整随机森林分类器的基本问题.树木数量与树木深度之间有什么关系吗?树的深度是否应该小于树的数量?
最佳答案
对于大多数实际的问题,我同意蒂姆.

然而,其他参数确实影响到集合误差作为附加树的函数收敛.我想限制树的深度通常会使集合早一点收敛.我很少会嘲笑树深,就像计算时间降低一样,没有任何其他奖金.降低引导样本大小都能降低运行时间和降低树相关性,从而在相当的运行时间通常会具有更好的模型性能.
一个没有提到的技巧:当RF模型解释方差低于40%(看似嘈杂的数据)时,可以将样本降低到〜10-50%,并将树增加到例如. 5000(通常是不必要的).集合误差将随着树的函数而收敛.但是,由于较低的树相关性,该模型变得更加健壮,并且将达到较低的OOB误差水平收敛高原.

你可以看到,samplesize给出了最佳的长期收敛,而maxnodes从较低点开始,但收敛较少.对于这种嘈杂的数据,限制maxnodes仍然优于默认RF.对于低噪声数据,通过降低最大值或样本大小来降低方差并不会导致由于缺乏合适的偏差增加.

对于许多实际情况,如果只能解释10%的差异,您可以放弃.因此,默认RF通常很好.如果你的一个量子,谁可以打赌数以百计的位置,5-10%解释方差是非常棒的.

绿色曲线是最大节点,它们具有树深度但不完全相同.

enter image description here

library(randomForest)

X = data.frame(replicate(6,(runif(1000)-.5)*3))
ySignal = with(X, X1^2 + sin(X2) + X3 + X4)
yNoise = rnorm(1000,sd=sd(ySignal)*2)
y = ySignal + yNoise
plot(y,ySignal,main=paste("cor="),cor(ySignal,y))

#std RF
rf1 = randomForest(X,y,ntree=5000) 
print(rf1)
plot(rf1,log="x",main="black default, red samplesize, green tree depth")

#reduced sample size
rf2 = randomForest(X,y,sampsize=.1*length(y),ntree=5000) 
print(rf2)
points(1:5000,rf2$mse,col="red",type="l")

#limiting tree depth (not exact )
rf3 = randomForest(X,y,maxnodes=24,ntree=5000)
print(rf2)
points(1:5000,rf3$mse,col="darkgreen",type="l")

转载注明原文:随机森林 – 随机森林调整 – 树木深度和树木数量 - 代码日志