4

ファクターの32レベルのrandomForestパッケージ制限を回避しようとしています。

因子変数の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. それらの行を使用してrandomForestを実行し、
  3. randomForestとを使用してテストセットを予測する
  4. このプロセスを(a)3回(交換なし)または(b)10〜15回(交換あり)繰り返します。
  5. 3つまたは10〜15の予測値を取得し、平均を見つけて、それを最終的な予測子として使用します。

誰かがこのようなことを試みたのか、私がルールを破っているのか(バイアスの導入など)、または誰かが何か提案をしているのかどうか、私は興味があります。

注:この質問は、統計-オーバーフロー/相互検証にもクロスポストしました。

4

2 に答える 2

3

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

于 2012-01-08T04:01:16.333 に答える
0

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

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

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

于 2012-01-08T06:22:50.880 に答える