El ile hesaplanan , yeni verileri test etmek için randomForest () ile eşleşmiyor


38

Bunun oldukça özel bir Rsoru olduğunu biliyorum , ancak hatalı açıklanan oranındaki varyans oranını düşünüyorum . İşte gidiyor.R2

RPaketi kullanmaya çalışıyorum randomForest. Bazı eğitim verilerim ve test verilerim var. Rastgele bir orman modeline uyduğumda, randomForestişlev test etmek için yeni test verileri girmenize olanak sağlar. Daha sonra bu yeni verilerde açıklanan varyans yüzdesini gösterir. Buna baktığımda bir numara alıyorum.

predict()Eğitim verilerinden elde edilen modele dayalı test verilerinin sonuç değerini tahmin etmek için bu işlevi kullandığımda ve bu değerler ile test verileri için gerçek sonuç değerleri arasındaki kareli korelasyon katsayısını alıyorum, farklı bir sayı alıyorum. Bu değerler eşleşmiyor .

İşte Rsorunu göstermek için bazı kodlar.

# use the built in iris data
data(iris)

#load the randomForest library
library(randomForest)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# fit a model to the training set (column 1, Sepal.Length, will be the outcome)
set.seed(42)
model <- randomForest(x=trainset[ ,-1],y=trainset[ ,1])

# predict values for the testing set (the first column is the outcome, leave it out)
predicted <- predict(model, testset[ ,-1])

# what's the squared correlation coefficient between predicted and actual values?
cor(predicted, testset[, 1])^2

# now, refit the model using built-in x.test and y.test
set.seed(42)
randomForest(x=trainset[ ,-1], y=trainset[ ,1], xtest=testset[ ,-1], ytest=testset[ ,1])

Yanıtlar:


52

Sebebi çünkü değerleri eşleşen değil ise bildiriyor varyasyonu olarak karşı açıkladı varyans açıkladı. Bunun , ders kitaplarında uygulanan hakkında yanlış anlaşıldığını düşünüyorum . Geçen gün başka bir konu hakkında bile bahsetmiştim. Bir örnek istiyorsanız, (aksi halde oldukça iyi) ders kitabına bakınız Seber ve Lee, Doğrusal Regresyon Analizi , 2.. ed.R 2R2randomForestR2

İçin genel bir tarifi olduğu R, 2 = 1 - Σ i ( y ı - y i ) 2R2

R2=1i(yiy^i)2i(yiy¯)2.

Yani, ortalama karesel hatayı hesaplıyoruz, bunu orijinal gözlemlerin varyansıyla bölüyoruz ve sonra bunu birinden çıkartıyoruz. (Tahminleriniz gerçekten kötüyse, bu değerin negatif olabileceğini unutmayın.)

Şimdi, doğrusal regresyonda ne olur ( bir kesişme terimi ile! ) 'nin ortalama değeri eşleşir . Bundan başka, artık vektör donatılmış değerlerin vektörü dik olan . Bu iki şeyi bir araya getirdiğinizde, tanım daha sık karşılaşılan tanımlamaya indirgenir, yani, ( Doğrusal gerilemeyi belirtmek için içindeki abonelerini kullandım .) ° y y - yy^iy¯yy^y^

RLR2=Corr(y,y^)2.
LRRLR2

randomForestÇağrı yapmanız eğer öyleyse, ilk tanımını kullanıyor

   > y <- testset[,1]
   > 1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

cevapların eşleştiğini göreceksiniz.


1
+1, harika cevap. Orijinal formülün neden korelasyon karesi yerine için kullanıldığını hep merak etmişimdir . Doğrusal regresyon için aynıdır, ancak diğer bağlamlara uygulandığında her zaman kafa karıştırıcıdır. R2
mpiktas

(+1) Gerçekten de çok zarif bir tepki.
chl

@mpiktas, @chl, bunu bugün biraz daha genişletmeye çalışacağım. Temel olarak, arka plandaki hipotez testleriyle yakın (ancak belki de biraz gizlenmiş) bir bağlantı var. Doğrusal bir regresyon ayarında bile, eğer sabit vektör tasarım matrisinin sütun alanında değilse, o zaman "korelasyon" tanımı başarısız olacaktır.
kardinal

Seber / Lee ders kitabından başka bir referansınız varsa (bana ulaşılamıyor) Varyasyonun açıklandığı (yani 1-SSerr / SStot) kare korelasyon katsayısından veya açıklanan varyanstan ne kadar farklı olduğu konusunda iyi bir açıklama görmeyi çok isterim. Bahşiş için tekrar teşekkürler.
Stephen Turner

Eğer R kare değeri enstrümantal değişken regresyon sonuçlarından negatifse, bu negatif değeri bastırmanın ve raporlama amacıyla pozitif bir değere çevirmenin bir yolu var mı? Lütfen bu linke bakınız: stata.com/support/faqs/statistics/two-stage-least-squares
Eric
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.