web-dev-qa-db-ja.com

ランダムフォレストチューニング-木の深さと木の数

ランダムフォレスト分類器の調整に関する基本的な質問があります。木の数と木の深さとの間に関係はありますか?木の深さは木の数よりも小さくする必要がありますか?

24
Vysh

私は、木の数と木の深さの間に親指の比率がないことにティムに同意します。通常、モデルを改善するのと同じ数の木を必要とします。また、ツリーが増えると計算コストも増加し、特定のツリー数が経過しても改善は無視できます。下の図でわかるように、ツリーの数を増やしていても、エラー率の大幅な改善はしばらくはありません。

enter image description here

あなたが望む木の長さを意味する木の深さ。大きいツリーはより多くの情報を伝達するのに役立ちますが、小さいツリーは正確性の低い情報を提供します。したがって、各ノードを希望する観測数に分割するのに十分な深さが必要です。

以下は、アイリスデータセットの短いツリー(リーフノード= 3)と長いツリー(リーフノード= 6)の例です。

短いツリー(リーフノード= 3):

enter image description here

長いツリー(リーフノード= 6):

enter image description here

1
Ashish Anand

最も実用的な懸念については、私はティムに同意します。

ただし、他のパラメータは、アンサンブルエラーが追加されたツリーの関数として収束するタイミングに影響します。通常、ツリーの深さを制限すると、アンサンブルが少し早く収束します。計算時間は短縮されますが、他のボーナスは与えられないため、ツリーの深さをいじることはめったにありません。 bootstrapサンプルサイズを小さくすると、実行時間が短くなり、ツリー相関が低くなるため、多くの場合、同等の実行時のモデルパフォーマンスが向上します。あまり言及されていないトリック:RFモデルが分散が40%(一見ノイズの多いデータ)未満であると説明した場合、サンプルサイズを〜10-50%に下げ、ツリーをたとえば5000(通常は不要)。アンサンブルエラーは、後で木の関数として収束します。ただし、ツリーの相関が低いため、モデルはより堅牢になり、OOBエラーレベルの収束プラトーが低くなります。

以下に示すように、samplesizeは最良の長期収束を提供しますが、maxnodesは低い点から開始しますが、収束は少なくなります。このノイズの多いデータの場合、maxnodeの制限はデフォルトのRFよりも優れています。低ノイズデータの場合、maxnodesまたはサンプルサイズを小さくすることによる分散の減少は、不適合によるバイアスの増加にはなりません。

多くの実際的な状況では、分散の10%しか説明できない場合は、単にあきらめます。したがって、通常はデフォルトRFで問題ありません。数百または数千のポジションに賭けることができるクォンタの場合、5〜10%の分散が素晴らしいと説明しました。

緑の曲線はmaxnodesで、ツリーの深さのようなものですが、正確ではありません。

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

一般に、ツリーが多いほど精度が向上するのは事実です。ただし、ツリーの数が増えると計算コストも増加し、特定の数のツリーの後では、改善は無視できます。大城らの記事(2012)は、29のデータセットを使用したテストに基づいて、128本のツリーの後では有意な改善はないことを指摘しました(Sorenのグラフと一致しています)。

ツリーの深さに関して、標準のランダムフォレストアルゴリズムは、枝刈りなしで完全な決定ツリーを成長させます。単一の決定木は、過剰適合の問題を克服するために枝刈りを必要とします。ただし、ランダムフォレストでは、変数とOOBアクションをランダムに選択することにより、この問題が解消されます。

参照:大城、TM、ペレス、PS and Baranauskas、J.A.、2012、July。ランダムフォレストにはいくつの木がありますか? MLDMで(pp.154-168)。

11
Sharp Yan