2012-01-08 10 views
4

私は要因のために32レベルのrandomForestのパッケージ制限を回避しようとしています。randomForestを回避するためのRサンプリング32ファクタの制限

私は、因子変数の1つに100レベルのデータセットを持っています。

サンプリングに置き換え、選択したレベルの特定の%を取得するのに必要な試行回数を使用して、どのように見えるかを確認するために次のコードを書きました。

sampAll <- c() 
nums1 <- seq(1,102,1) 
for(i in 1:20){ 
    samp1 <- sample(nums1, 32) 
    sampAll <- unique(cbind(sampAll, samp1)) 
    outSamp1 <- nums1[-(sampAll[,1:ncol(sampAll)])] 
    print(paste(i, " | Remaining: ",length(outSamp1)/102,sep="")) 
    flush.console() 
} 

[1] "1 | Remaining: 0.686274509803922" 
[1] "2 | Remaining: 0.490196078431373" 
[1] "3 | Remaining: 0.333333333333333" 
[1] "4 | Remaining: 0.254901960784314" 
[1] "5 | Remaining: 0.215686274509804" 
[1] "6 | Remaining: 0.147058823529412" 
[1] "7 | Remaining: 0.117647058823529" 
[1] "8 | Remaining: 0.0980392156862745" 
[1] "9 | Remaining: 0.0784313725490196" 
[1] "10 | Remaining: 0.0784313725490196" 
[1] "11 | Remaining: 0.0490196078431373" 
[1] "12 | Remaining: 0.0294117647058824" 
[1] "13 | Remaining: 0.0196078431372549" 
[1] "14 | Remaining: 0.00980392156862745" 
[1] "15 | Remaining: 0.00980392156862745" 
[1] "16 | Remaining: 0.00980392156862745" 
[1] "17 | Remaining: 0.00980392156862745" 
[1] "18 | Remaining: 0" 
[1] "19 | Remaining: 0" 
[1] "20 | Remaining: 0" 

私が議論しているのは、置換の有無にかかわらずサンプルするかどうかです。ランダムフォレストと で設定したテストを予測するランダムフォレストを実行するために、これらの行を使用して

  1. 100の要因の32のサンプルを取得し、
  2. :私は考えている

  3. このプロセスを(a)3(置換なし)または(b)10-15回(置換あり)のいずれかで繰り返す。
  4. 3または10-15個の予測値をとり、平均を求めて最終的な予測子として使用します。

誰かがこのようなことを試したことがあるのか​​、私がルールを破っているか(バイアスを導入しているなど)、誰かが何か提案があれば、私は不思議です。

注:この質問は、Stats-Overflow/Cross-Validatedでもクロスポストしました。

+0

クロスサイトデュープとしてクローズ:http://stats.stackexchange.com/questions/20731/sampling-to-get-around-randomforests-32-factor-level-limit – casperOne

答えて

0

私は2つの方法をお勧めできます。

  1. あなたは100個のバイナリ変数にあなたの100レベルの変数を変換することができます。それぞれは元のレベル(0 - 偽、1 - 真)を表します。したがって、データセット全体を処理し、ランダムなフォレストモデルを作成することもできます。しかしこの場合、あなたのデータセットによるメモリ消費量が増え、巨大なデータセットを扱うためにいくつかの追加のパッケージを使う必要があります。

  2. 第2の可能性は、置き換えて元のデータセットの多くのサンプルを作成することです。置換せずにデータセットを分割すると、モデルに偏りが生じます。しかし、それでもバイアスを避けるためには、10-15分割以上の分割が必要になると思います。私はどれだけ正確に言うことができません。たぶん数百以上の周り。あなたのデータセットによって異なります。 100レベルのうちのそれぞれのオブジェクトの数が大きく異なる場合、分割後にはかなり異なるサイズのサンプルを受け取り、モデルの予測能力に影響する可能性があるためです。そのような場合、分割数を増やす必要があります。

3

また、100レベルの変数を4つの別々の変数に分割することもできます。それぞれ25レベルです。これは、線形モデルでは面倒なエイリアシングの問題を引き起こしますが、ランダムなフォレストではそれを心配する必要はありません。

関連する問題