ランダムフォレスト回帰における応答分布依存バイアス


9

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

n = 1000; 
x1 = rnorm(n, mean = 0, sd = 1)
response = x1
predictors = data.frame(x1=x1) 
rf = randomForest(x=predictors, y=response)
error = response-predict(rf, predictors)
plot(x1, error)

バイアスは応答の分布に依存していると思います。たとえば、x1均一に分布している場合、バイアスはありません。場合x1指数関数的に分布され、バイアスは片側です。基本的に、正規分布の裾での応答の値は異常値です。モデルが外れ値を予測するのが難しいのは当然のことです。randomForestの場合、分布の裾からの極端な大きさの応答値は最終的にリーフに到達する可能性が低くなり、その効果はアンサンブル平均では洗い流されます。

前の例「R線形回帰の尾のランダムフォレストmtry」でこの効果をキャプチャしようとしたことに注意してください。これは悪い例でした。上記の例のバイアスがアルゴリズムに本当に固有のものである場合、予測しようとしている応答分布を前提としてバイアス補正を定式化でき、より正確な予測が得られます。

ランダムフォレストなどのツリーベースの方法は、応答分布バイアスの影響を受けますか?もしそうなら、これは以前に統計コミュニティーに知られていますか、そしてそれは通常どのように修正されますか(例えば、バイアスされたモデルの残差を入力として使用する2番目のモデル)?

本来、応答は不明であるため、応答依存バイアスの修正は困難です。残念ながら、推定/予測応答はバイアスと同じ関係を共有しないことがよくあります。


私はこの同じ質問について12か月近く考えてきました。stats.stackexchange.com/questions/21530/…およびkaggle.com/forums/t/1106/random-forests-newbie-questionを参照してください 。問題は、外れ値が各ノードで予測として使用される平均によってうまく表現されていないことにあるようだと同意します。予測調整またはモデルインノードは合理的なアプローチのように見えますが、標準的なアプローチが何かはわかりません。
redcalx 2012年

回答:


4

それは完全にあなたが疑っているとおりです-リーフノードがいくつかのオブジェクトのセットに対する平均を含むという事実は、回帰ツリーモデルが応答分布を引き締め、外挿を不可能にします。アンサンブルはもちろんそれを助けません、そして実際に状況を悪化させます。

素朴な解決策(および過剰適合のために危険)は、応答を目的の分布に再スケーリングする、ある種の古典的な回帰でモデルをラップすることです。

より良い解決策は、たとえば、パーティパッケージ内のMOBのような、モデルインリーフツリーモデルの1つです。ここでの考え方は、問題が単純な値(通常のツリーのように)ではなく、応答といくつかの予測子の間の単純な関係(たとえば線形)に単純化されると、特徴空間の分割が終了するということです。このような関係は、分布を乱したり、極値をトリムしたりすることなく外挿できるいくつかの単純なモデルをフィッティングすることで解決できます。


応答分布の再スケーリングが過剰適合につながるのはなぜですか?フォレスト出力の2つ間の順序関係は、多項式近似を介してプッシュして再スケーリングした後も同じ順序を維持するため、出力の分位数に基づいて決定を行っても、モデルからの意思決定に影響はありません。
Jase、2014

あなたが正しいです; RFがまったく意味のない答えを生成し、回帰がそれを誤ってより良い何かに変換するシナリオについて考えていました。R2

3

ガラガラパッケージを介してアクセスされる条件付きRFでもまったく同じ問題がありました。私はそれについてGraham Williams(ガラガラの作者)にメールを送った。彼は私の質問をcforestの作者に親切に転送し、CRFのドキュメントでは実際にはどこにも参照されていないように見えるが、それでも対処しているように思われる2つのパラメーターで遊ぶことを提案した。問題、つまりminplit = 2およびminbucket = 1。


minsplit、私はあなたが意味していると思います
smci

2

機能の固定セットの対応する応答変数について、さまざまなmtry、sampsizeパラメーターのグリッドでサンプルの「相互検証エラー」を最小化することにより、mtryとsampsizeの最適値を推定し、結論を出す必要があります。結果の面で。expand.gridを使用して、グリッドパラメータの組み合わせを作成できます。


2
これはモデルを構築するための良い提案です。一般に、最適化されたパラメーターはより正確な予測をもたらします。ただし、この場合、チューニングに関係なく、バイアスは存在します。予測子は1つしかないため、mtryは1でなければなりません。n未満のサンプルサイズは、バイアスを拡大するためだけに役立ち、nodesizeはほとんど効果がありません。
rumbleB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.