2012-05-09 113 views
6

我使用的隨機森林包中的R(R版本2.13.1,隨機森林版本4.6-2),用於迴歸和注意到我的結果的顯著偏壓:預測誤差是依賴於值的響應變量。預測值偏高,預測值偏低。起初我懷疑這是我的數據的結果,但下面這個簡單的例子表明,這是固有的隨機森林算法:隨機森林中的R線性迴歸尾巴mtry

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中迴歸 - 響應分佈依賴偏見」在堆棧換取更好的治療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

爲了您的真實數據的改善將是不大可能如此嚴峻的,當然,我敢打賭,你會得到更多的里程出的nodesizemtrymtry做了大部分工作在這裏)。

常規樹沒有表現出這種「偏見」的原因是因爲他們默認情況下搜索所有變量以獲得最佳分割。

+0

謝謝Joran。有些東西感覺不對,我很高興看到有解決方案。不幸的是,我的工作,我已經調整效果不大的參數(當然除了nTrees的),所以我大多忽略了他們對於這種「簡單」的例子 - 我猜偏見確實只在我的情況存在,感謝足夠再次 – rumbleB

+0

公平。 ..雖然如果它僅限於你的數據,它不是真的在射頻偏見,是嗎? ;)你只是難以模擬數據! – joran

+0

燁,在RF偏置是可以避免的 - 我已經改變了這個問題的標題,這樣可能更有助於人們對未來 – rumbleB