web-dev-qa-db-fra.com

réglage aléatoire des forêts - profondeur et nombre d'arbres

J'ai une question de base sur le réglage d'un classificateur de forêt aléatoire. Y a-t-il une relation entre le nombre d'arbres et la profondeur des arbres? Est-il nécessaire que la profondeur de l'arbre soit inférieure au nombre d'arbres?

24
Vysh

Je suis d'accord avec Tim qu'il n'y a pas de rapport pouce entre le nombre d'arbres et la profondeur des arbres. En général, vous voulez autant d'arbres que possible pour améliorer votre modèle. Plus d'arbres signifient également plus de coûts de calcul et après un certain nombre d'arbres, l'amélioration est négligeable. Comme vous pouvez le voir dans la figure ci-dessous, après un certain temps, il n'y a pas d'amélioration significative du taux d'erreur même si nous n'augmentons pas d'arbre.

enter image description here

La profondeur de l'arbre signifie la longueur de l'arbre que vous désirez. Un arbre plus grand vous aide à transmettre plus d'informations, tandis qu'un arbre plus petit donne des informations moins précises.

Voici un exemple d'arbre court (nœud feuille = 3) et d'arbre long (nœud feuille = 6) pour le jeu de données Iris:

Arbre court (nœud foliaire = 3):

enter image description here

Arbre long (nœud foliaire = 6):

enter image description here

1
Ashish Anand

Pour la plupart des préoccupations pratiques, je suis d'accord avec Tim.

Pourtant, d'autres paramètres affectent quand l'erreur d'ensemble converge en fonction des arbres ajoutés. Je suppose que limiter la profondeur de l'arbre ferait converger l'ensemble un peu plus tôt. Je jouerais rarement avec la profondeur de l'arbre, comme si le temps de calcul était réduit, cela ne donne aucun autre bonus. La réduction de la taille de l'échantillon bootstrap donne à la fois un temps d'exécution plus court et une corrélation d'arbre plus faible, donc souvent une meilleure performance du modèle à un temps d'exécution comparable. Une astuce non mentionnée: lorsque le modèle RF explique que la variance est inférieure à 40% (données apparemment bruyantes), on peut réduire la taille de l'échantillon à ~ 10-50% et augmenter les arbres par exemple. 5000 (généralement inutile beaucoup). L'erreur d'ensemble convergera plus tard en fonction des arbres. Mais, en raison d'une corrélation d'arbre plus faible, le modèle devient plus robuste et atteindra un plateau de convergence de niveau d'erreur OOB plus faible.

Vous voyez ci-dessous la taille de l'échantillon donne la meilleure convergence à long terme, tandis que maxnodes commence à partir d'un point inférieur mais converge moins. Pour ces données bruyantes, la limitation des maxnodes est toujours meilleure que la RF par défaut. Pour les données à faible bruit, la diminution de la variance en abaissant le nombre maximal de nœuds ou la taille de l'échantillon n'entraîne pas l'augmentation du biais dû au manque d'ajustement.

Pour de nombreuses situations pratiques, vous abandonneriez simplement, si seulement vous pouviez expliquer 10% de variance. Par conséquent, la valeur par défaut RF est généralement correcte. Si vous êtes un quant, qui peut parier sur des centaines ou des milliers de positions, la variance expliquée de 5 à 10% est impressionnante.

la courbe verte est des maxnodes qui un peu la profondeur de l'arbre mais pas exactement.

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")
16

Il est vrai que généralement plus d'arbres se traduiront par une meilleure précision. Cependant, plus d'arbres signifient également plus de coûts de calcul et après un certain nombre d'arbres, l'amélioration est négligeable. Un article d'Oshiro et al. (2012) ont souligné que, sur la base de leur test avec 29 ensembles de données, après 128 arbres, il n'y a pas d'amélioration significative (ce qui est conforme au graphique de Soren).

En ce qui concerne la profondeur de l'arbre, l'algorithme de forêt aléatoire standard fait croître l'arbre de décision complet sans élagage. Un arbre de décision unique doit être élagué afin de surmonter le problème de sur-ajustement. Cependant, dans la forêt aléatoire, ce problème est éliminé en sélectionnant au hasard les variables et l'action OOB.

Référence: Oshiro, T.M., Perez, P.S. et Baranauskas, J.A., 2012, juillet. Combien d'arbres dans une forêt aléatoire?. Dans MLDM (pp. 154-168).

11
Sharp Yan