ランダムフォレストクラシファイアの調整に関する基本的な質問があります。木の数と木の深さには関係がありますか?樹木の深さは樹木の数よりも少なくなければならないのでしょうか?ランダムフォレストチューニング - ツリーの深さとツリーの数
答えて
最も実用的な懸念事項として、私はTimに同意します。
さらに、アンサンブルエラーが追加されたツリーの関数として収束するとき、他のパラメータが影響します。木の深さを制限すると、アンサンブルが少し早く収束するでしょう。コンピューティング時間は短縮されているように、私はまれにツリーの深さに耳を傾けませんでした。他のボーナスはありません。ブートストラップのサンプルサイズを小さくすると、実行時間が短くなり、ツリーの相関が低くなるため、同等の実行時間でモデルのパフォーマンスが向上することがよくあります。 あまり言及されていないトリック:RFモデルの分散が40%(一見ノイズの多いデータ)より低いと、サンプルサイズを〜10-50%に下げ、 5000(通常は不必要)。アンサンブル誤差は後で木の関数として収束する。しかし、ツリー相関が低いため、モデルはより堅牢になり、より低いOOBエラーレベル収束プラトーに達する。
以下のサンプルサイズは最良の長時間の収束を示しますが、maxnodesは低いポイントから開始しますが、より収束しません。このノイズの多いデータでは、maxnodesをデフォルトのRFよりもさらに制限しています。低雑音データの場合、マックスノードまたはサンプルサイズを下げることによる分散の減少は、フィットの不足によるバイアスの増加をもたらさない。
多くの実用的な状況では、分散の10%しか説明できない場合は、あきらめることになります。したがって、デフォルトRFは一般的に良好です。数百または数千のポジションに賭けることができるあなたのクオンタム、5-10%が分散を説明するのは素晴らしいことです。
緑色のカーブは、ちょっとした木の深さですが厳密には一致しないmaxnodesです。
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")
ありがとうございました。しかし、ランダムフォレストモデルを開発するというこのコンセプト全体にはまだ慣れているので、あなたが意味することをある程度理解することができました。あなたの答えに基づいていくつか質問があります。ツリーの相関関係は正確に何であり、どのように測定しますか? OOB推定値とアンサンブルエラーは同じものですか?これらは非常に基本的なものかもしれないので、私が用語をよく理解するために読むことができれば記事があるかどうか私に知らせることができます。 – Vysh
一般的には、より多くの木が優れた精度につながることは事実です。しかしながら、より多くの木はまた、より多くの計算コストを意味し、特定の数の木の後では、改善はごくわずかです。 Oshiroらの論文(2012)は、29のデータセットを用いたテストに基づいて、128の樹木の後には有意な改善がない(Sorenのグラフとインラインである)ことを指摘した。
ツリー深度に関して、標準ランダムフォレストアルゴリズムは、プルーニングなしで完全な決定ツリーを拡張します。過度の適合問題を克服するためには、単一の決定木が枝刈りを必要とする。ただし、ランダムフォレストでは、変数とOOBアクションをランダムに選択することで、この問題は解消されます。
参照: Oshiro、T.M.、Perez、P.S.およびBaranauskas、J.A。、2012年7月。ランダムな森林には何本の木がありますか? MLDM(pp。154-168)。
- 1. SQL内のツリーの深さ
- 2. 深さ最初のツリーをテストする
- 3. ツリー構造の深度ストリームを作成
- 4. 最小の深さのバイナリ検索ツリーの作成
- 5. なぜDOMツリーのプリオーダー、深さ優先のトラバーサルですか?
- 6. データベースのツリーの深さを制限する
- 7. ツリーを深くコピーする方法は?
- 8. ツリー深度再帰PHP配列
- 9. RFツリーとCARTツリーの各ツリーの主な違いは?
- 10. 左のデータベースクエリオプティマイザと並列処理の深い結合ツリー
- 11. OCaml:ツリー関数
- 12. ローカル変数と式ツリー
- 13. Bツリーのリーフの数は?
- 14. マルチレベルのカテゴリリスト/ツリーPHP関数
- 15. 赤い黒ツリー対Bツリー
- 16. パーセンテージとツリー
- 17. Pythonのscikit-learnでツリーの深さにどのようにアクセスしますか?
- 18. ツリー
- 19. ツリー
- 20. HTML文書やCSSツリーの深さには限界がありますか?
- 21. バイナリ検索ツリーとm-wayツリーの違い
- 22. ツリーのデータ構造とデータ
- 23. Manugistics/Avyxフォレストとツリーのスケジューリングユーティリティ
- 24. AVLツリーとスプレイツリーの違い
- 25. Backbone.jsと階層/ツリー
- 26. RedBlackとAVLツリーC++
- 27. のJava:ツリー
- 28. ドロップダウンのJSFツリー
- 29. ユニットテストの式ツリー
- 30. InOrderツリーのトラバーサル
@ B.ClayShannonランダムフォレストは機械学習の方法です。彼の質問は完全にここに属します。 –
私は木の数と木の深さの間の親指の比のルールを聞いたことがありません。一般的には、モデルを改善するのに必要な数のツリーが必要です。ツリーの深さは、各ノードを希望の観測数に分割するのに十分なものでなければなりません。 –
@TimBiegeleisenここに私の親指のルールです:) –