2012-05-09 18 views
6

R(Rバージョン2.13.1、randomForestバージョン4.6-2)のrandomForestパッケージを回帰のために使用しており、結果に大きな偏りがあることがわかりました。予測誤差は値に依存します応答変数の値。高い値は予測されず、低い値は予測されない。Rリニアリグレッションテールのランダムフォレスト

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()はこの偏見を示さない。私はコミュニティがこれを認識していないとは言えませんが、何の言及も見つけられていません。どのように一般的に修正されていますか?すべてのコメントをありがとう

EDIT:この質問の例では、欠陥がある、「Rで回帰のためのランダムフォレスト - 応答分布依存バイアス」を参照してください改善された治療あなたが発見した何https://stats.stackexchange.com/questions/28732/randomforest-for-regression-in-r-response-distribution-dependent-bias

答えて

5

ISNのスタック交換でランダムフォレストの固有の偏見ではなく、単にモデル上のチューニングパラメータを適切に調整できない場合です。あなたの本当のデータについては

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

enter image description here

を改善はもちろん、その赤裸々なさそうだろう、と私はあなたが出て、マイルを取得します賭けたい:あなたの例のデータを使用して

nodesizeよりmtrymtryはここでの作業のほとんどを行いました)。

通常のツリーがこの「偏り」を示さなかったのは、デフォルトですべての変数を最適な分割のために検索するためです。

+0

ありがとうジョラン。何かが正しく感じられず、解決策があることを嬉しく思います。残念なことに私の仕事では、すでにパラメータをチューニングしていました(コースnTreesを除いて)ので、この「単純な」例ではほとんど無視しました。バイアスは本当に私の場合に存在しています。ありがとうございました – rumbleB

+0

十分に公正です。あなたのデータに限定されているのであれば、RFの偏りではありませんか? ;)モデルデータを作成するのは難しいですね。 – joran

+0

ええ、RFの偏りは避けられます - 私はこの質問のタイトルを変更して、将来の人々にもっと役立つようにします – rumbleB

関連する問題