ビッグデータ設定のランダムフォレスト


8

5,818,446行と51列のデータセットがあり、そのうちの50が予測変数です。私の応答は定量的であるため、回帰モデルに興味があります。キャレットパッケージを使用して、ランダムフォレストをデータに適合させようとしています。しかし、それを行うのに十分なRAMがありません。

私は自分の問題の解決策を探していました。より強力なコンピューターを持っていることに加えて、バギングを利用して問題を解決できるようです。したがって、私の考えは次のとおりです。

  1. 元のデータセットからトレーニングパーティションとテストパーティションの両方を作成する

  2. 電車のデータセットの一部をRに置き換えたサンプル(その1%、つまり58,185行としましょう)

  3. データのこの小さな部分にランダムフォレストを当てはめる

  4. モデル結果を保存する

  5. 手順2〜4を1,000回繰り返します

  6. 手順2〜5から取得したこれらの1,000モデルを組み合わせる

ただし、ランダムフォレスト自体はバギングを使用してモデルをデータに適合させているため、私のアプローチが正しいかどうかはわかりません。したがって、いくつか質問があります。

i)私のアプローチは正しいですか?つまり、システムに十分なRAMがないため、さまざまなランダムフォレストモデルをさまざまなデータチャンクに適合させ、それらを後で結合することは正しいのでしょうか。

ii)私のアプローチが正しいと仮定すると、データの1%がサンプルサイズの良い目安になりますか?データの1%でも、ます。p

iii)私のアプローチが正しいと仮定すると、使用する必要のあるモデルのレプリケーションは多数ありますか?理由で1,000個と思いました。


バギングはランダムフォレスト内の各決定木を生成する方法であるため、1%ごとに1つのDTを実行してから、ツリーを結合するのはどうですか。自家製のランダム林であるヴォイラ。次に、1000本以上のツリーを構築し、ツリーのランダムな組み合わせを実行して、テストデータで何が最適に機能するかを確認できます。ただし、テストデータに適合しているので、それらすべてを取得して実行することができます。
Engineero

おお!または、すべてを完全に接続された出力レイヤーと組み合わせてから、そのレイヤーをl1正規化でトレーニングします。これにより、通常、重要でないコンポーネントの重みがほぼゼロになり、どのツリーを保持する必要があるかを調べることができます。
Engineero

@Engineero概説する方法は、一般に「ランダムキッチンシンク」として知られています。多数の弱学習器を適合させて、元の機能(決定断も含む)の基本表現を形成し、ターミナルノードに重みを付けます。 。people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycoraxによると、

T

2 /木の数の詳細については、ここに私の答えを参照してください。stats.stackexchange.com/questions/348245/...を
Sycoraxは回復モニカ言う

回答:


3

これはあなたの特定の質問ではなく、それらの背後にある動機を扱います。bigRFパッケージには、あなたの問題を解決することがあります。

これは、レオロジーブライマンとアデルカトラーのランダムフォレストアルゴリズムのR実装であり、パフォーマンスと、メモリで処理するには大きすぎるデータセットの処理を最適化しています。

また:

大きなデータセットの場合、トレーニングデータ、中間計算、および一部の出力(近接行列など)は、 "big.matrix"オブジェクトを使用してディスクにキャッシュされます。これにより、RAMの制限に達することなく、かなり大きなデータセット上にランダムフォレストを構築できます。これにより、オペレーティングシステムによる過度の仮想メモリスワップが発生します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.