2012-05-09 23 views
6

Regresyon için R (R sürüm 2.13.1, randomForest sürüm 4.6-2) içindeki randomForest paketini kullanıyorum ve sonuçlarda önemli bir sapma fark ettim: tahmin hatası değere bağlı Cevap değişkeninin Yüksek değerler tahmin altındadır ve düşük değerler tahmin edilenin üzerindedir. İlk başta bu verilerim bir sonucuydu şüpheli ancak aşağıdaki basit örnek bu rasgele orman algoritmaya doğasında olduğunu göstermektedir:R lineer regresyon kuyrukları için RasgeleYazılımı 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") 

o doğrusallığı geliyor ama daha basit zaman Şüphesiz ağaç metodların sınırlamaları vardır regresyon ağacı, örneğin R'deki ağaç() bu yanlılığı göstermez. Topluluğun bundan habersiz olacağını düşünmüyorum ama hiç bir şey bulamadım, genellikle nasıl düzeltiliyor? herhangi bir yorum için teşekkürler

DÜZENLEME: Bu soru için örnek kusurlu olduğunu "R regresyon için RandomForest - cevap dağılımı bağımlı önyargı" bakın geliştirilmiş bir tedavi keşfettiğiniz ne https://stats.stackexchange.com/questions/28732/randomforest-for-regression-in-r-response-distribution-dependent-bias

cevap

5

değil mi için yığın borsada Rastgele ormanlarda doğuştan gelen bir önyargıdır, ancak modeldeki ayar parametrelerini doğru bir şekilde ayarlayamamanız.

kullanma örnek veriler: Gerçek veriler için

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

enter image description here

iyileştirme elbette, bu yüzden sade olması pek mümkün olacak ve seni daha fazla kilometre dışarı alırsınız bahis ediyorum mtry'dan (mtry), nodesize'un (burada işin çoğunu yaptı).

Normal ağaçların bu "sapmayı" göstermemesinin nedeni, varsayılan olarak, en iyi bölünme için tüm değişkenleri aradıklarıdır.

+0

Teşekkürler Joran. Bir şey doğru gelmiyordu ve bir çözüm olduğunu görmekten çok memnunum. Maalesef çalışmam için parametreleri çok az etkiledim (tabii ki nTrees hariç) ve bu yüzden onları bu "basit" örnek için çoğunlukla görmezden geldim - sanırım önyargı gerçekten benim durumumda var, teşekkürler – rumbleB

+0

Yeterince adil. ... verilerinizle sınırlı olsa bile, RF'lerde gerçekten bir önyargı değil, değil mi? ;) Verileri modellemek biraz zor! – joran

+0

yup, RF'deki önyargı önlenebilir - Bu sorunun başlığını değiştirdim, böylece gelecekte insanlar için daha yararlı olabilir – rumbleB