6

RのrandomForestパッケージ(Rバージョン2.13.1、randomForestバージョン4.6-2)を回帰に使用していますが、結果に大きな偏りがあることに気づきました。予測誤差は応答変数の値に依存します。高い値は予測を下回り、低い値は予測を上回ります。最初は、これは私のデータの結果であると思いましたが、次の簡単な例は、これがランダムフォレストアルゴリズムに固有であることを示しています。

n = 50; 
x1 = seq(1,n) 
x2 = matrix(1, n, 1)
predictors = data.frame(x1=x1, x2=x2)
response = x2 + x1
rf = randomForest(x=predictors, y=response)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")

線形性に関しては、ツリーメソッドに制限があることは間違いありませんが、最も単純な回帰ツリー、たとえばRのtree()でさえ、このバイアスを示しません。コミュニティがこれに気づいていないとは想像できませんが、言及は見つかりませんでした。一般的にどのように修正されますか?コメントありがとうございます

編集:この質問の例には欠陥があります。改善された処理については、スタック交換で「Rの回帰のRandomForest-応答分布に依存するバイアス」を参照してくださいhttps://stats.stackexchange.com/questions/28732/randomforest-for-regression -in-r-response-distribution-dependent-bias

4

1 に答える 1

4

あなたが発見したのは、ランダムフォレストに固有のバイアスではなく、モデルの調整パラメーターを適切に調整できないことです。

サンプルデータの使用:

rf = randomForest(x=predictors, y=response,mtry = 2,nodesize = 1)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")

ここに画像の説明を入力してください

もちろん、実際のデータの場合、改善がそれほど顕著になる可能性は低く、 (ここでのほとんどの作業を行った)nodesizeよりも多くのマイレージが得られると思います。mtrymtry

通常のツリーがこの「バイアス」を示さなかった理由は、デフォルトですべての変数を検索して最適な分割を探すためです。

于 2012-05-09T01:29:35.867 に答える