İki farklı Rastgele Orman modelinden R kare karşılaştırması


10

Ben örneklerde daha tahmin ediciler ile bir "geniş" veri kümesinde sürekli bir sonucu açıklamaya çalışmak için rastgele bir orman modeli geliştirmek için R randomForest paketi kullanıyorum.

Özellikle, prosedürün önemli olduğunu düşündüğüm ~ 75 prediktör değişkenleri arasından seçim yapmasına izin veren bir RF modeli takıyorum.

Ben kullanarak bu modelin ayrılmış bir test seti için gerçek sonucunu tahmin eder ne kadar iyi test ediyorum yaklaşım daha önce burada yayınlanan , yani

... veya R cinsinden:

1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

Ama şimdi ekleyebileceğim ~ 25 ek tahmin değişkenim var. ~ 100 öngörücü seti kullanıldığında, R² daha yüksektir. ~ 100 belirteçlerinin setini kullanırken diğer bir deyişle, istatistiksel Bunu test etmek istiyorum, model testi yapar anlamlı ~ 75 parametreler kullanılarak model uyum daha veriyi test daha iyi. Yani, R² modelini tam veri kümesine sığdırmayı test eden R², RF modelini indirgenmiş veri kümesinde test etmekten önemli ölçüde daha yüksektir.

Bunu test etmek benim için önemlidir, çünkü bu pilot verilerdir ve fazladan 25 tahmin ediciyi elde etmek pahalıdır ve daha geniş bir takip çalışmasında bu tahmin edicileri ölçmek için para ödemem gerekip gerekmediğini bilmem gerekir.

Bir tür yeniden örnekleme / permütasyon yaklaşımı düşünmeye çalışıyorum ama akla hiçbir şey gelmiyor.

Yanıtlar:


8

R2

Düzeltme vinyetinin 3. sayfasına bakın (ayrıca tam başvuru kılavuzunda da )


OP'nin R-kare ayarlı kullanması gerektiğini ihmal etmeniz dışında katılıyorum, çünkü bunun için tasarlandı. Modeller aynı Y ama farklı tahmin kümelerine sahiptir, bu nedenle harcanmış serbestlik / model karmaşıklığı farkını cezalandırmak için R kare ayarlaması gereklidir. Gördüğüm diğer sorun potansiyel olarak bir örnek boyutu sorunu; OP, CV ile bile bu sadece aşırı sığdırma değil, herhangi bir gerçek umut için bir MASSIVE örnek boyutu gerektirir.
LSC

@LSC Eğer ek bir veri kümesi tutarsa (seçim için kullanılmazsa), R2'yi sadece normalleştirilmiş RMSE olarak ayarlama yapmadan kullanabileceğini söyleyebilirim. Bunu yapmak için oldukça büyük bir veri kümesine ihtiyaçları olacağını kabul ediyorum.
Zach

yeni veriler veya eski, diğer her şey sabit, bir modele 25'e karşı 100 terim koymak, 25 tahmin modelinden R-karesi ile karşılaştırıldığında daha yüksek bir düzeltilmemiş R-kare olacaktır. Bu, ikisi arasındaki kare hatalarının toplamını hesaplarken kolayca görülür (daha fazla terim daha düşük SSE'dir, hepsi aynıdır). Bence insanlar genellikle daha fazla terimin R-karesini asla düşürmeyeceğini unuturlar, ancak değerlerine göre kokarlarsa, paranın karşılığını görmek için daha iyi bir ölçü olan ayarlanmış R-karesini azaltabilirler.
LSC

"daha fazla terim R kare değerini asla azaltmaz" <- R2 örnek dışında hesaplanırken bu ifade yanlıştır.
Zach

Bahsettiğim gibi, işaret ediyorum çünkü bu soruları soran birçok insan bu fikri ilk başta hatırlamıyor. Bunun örneklemde neden doğru olduğunu ve yeni veriler üzerinde bulunmayabileceğini anlamak, orijinal denklemde neyin ve nasıl optimize edildiğini anlamak için önemli olduğunu düşünüyorum.
LSC

4

R2

Yan seçenek, hangi özelliklerin sınıflandırma için önemli ölçüde yararlı olma şansına sahip olduğunu söyleyen tüm ilgili özellik seçimini kullanmaktır - bu nedenle bu pahalı özelliklerin hava durumuna fiyatlarına değer. Örneğin bir RF sargısı Boruta ile yapılabilir .


Eşleştirilmiş bir test için, 2 modelin aynı kıvrımlara uyduğunu varsayıyorum? Böylece matrx'in k satırları kıvrımlar ve iki sütun model 1 ve model 2 mi?
B_Miner

@B_Miner Kesinlikle.

1

İstatistiksel anlamlılık (ya da her ikisi) yerine pratik anlamlılık açısından düşünmek isteyebilirsiniz. Yeterli veriyle, kullanımınız üzerinde gerçek bir etkisi olmayacak istatistiksel olarak önemli şeyler bulabilirsiniz. 5 yönlü etkileşimlerin istatistiksel olarak anlamlı olduğu bir kez bir modeli analiz ettiğimi hatırlıyorum, ancak 5 yönlü etkileşimlere kadar her şeyi içeren modelden gelen tahminler, sadece 2 yönlü etkileşimler ve ana efektler içeren bir modelden gelen tahminlerle karşılaştırıldığında , en büyük fark 1 kişiden azdı (yanıt kişi sayısı ve tüm ilginç değerler 0'dan uzaktı). Yani eklenen karmaşıklık buna değmezdi. Bu nedenle, farklılıkların ekstra maliyeti haklı çıkarmak için yeterli olup olmadığını görmek için tahminlerinizdeki farklılıklara bakın, eğer öyleyse neden istatistiksel anlamlılık aramaya çalışıyorsunuz? Farklılıklar, eğer gerçekse maliyeti haklı çıkaracak kadar büyükse, o zaman çapraz doğrulamayı kullanmanın diğer önerilerini ikinciyim.


1

R2

library(randomForest)
data(iris)
set.seed(42)

# 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, ]

# with species
model1 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length +
   Petal.Width + Species, data = trainset)
# without species
model2 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + 
   Petal.Width, data = trainset)

pred1 <- predict(model1, testset[, -1])
pred2 <- predict(model2, testset[, -1])

y <- testset[, 1]
n <- length(y)

# psi is the mean squared prediction error (MSPE) estimate
# sigma2 is the estimate of the variance of the MSPE
psi1 <- mean((y - pred1)^2)
sigma21 <- 1/n * var((y - pred1)^2) 
# 95% CI:
c(psi1 - 1.96 * sqrt(sigma21), psi1, psi1 + 1.96 * sqrt(sigma21))

psi2 <- mean((y - pred2)^2)
sigma22 <- 1/n * var((y - pred2)^2) 
# 95% CI:
c(psi2 - 1.96 * sqrt(sigma22), psi2, psi2 + 1.96 * sqrt(sigma22))

Yöntem aynı zamanda çapraz doğrulama içinde çalışacak şekilde genişletilebilir (yukarıda gösterildiği gibi sadece örnek bölünmesi değil).


0

randomForestÇapraz doğruladıktan sonra zaten kullandığınızdan , seçilen uyumun tahmin edicinin önem değerleri hakkındaki hesaplamasını yayabilirsiniz.

> require(randomForest)
> rf.fit = randomForest(Species~.,data=iris,importance=TRUE)
> rf.fit$importance
                  setosa   versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.036340893  0.021013369 0.032345037          0.030708732         9.444598
Sepal.Width  0.005399468 -0.002131412 0.007499143          0.003577089         2.046650
Petal.Length 0.319872296  0.297426025 0.290278930          0.299795555        42.494972
Petal.Width  0.343995456  0.309455331 0.277644128          0.307843300        45.286720

0

Bu sorunun uzun zaman önce sorulduğunu görüyorum; ancak, cevapta henüz sorudaki önemli eksikliklere ve yanlış anlamalara işaret edilmemektedir.

Lütfen aklınızda bulundurun:

  1. R ^ 2 = ESS / TSS = 1 - RSS / TSS olduğunu belirtirsiniz. Bu sadece doğrusal bir bağlam için geçerlidir. TSS = RSS + ESS eşitliği sadece kesişmeli doğrusal regresyonda geçerlidir. Böylece rasgele ormanlar için bu tanımları birbirinin yerine kullanamazsınız. Bu nedenle RMSE ve benzeri daha tipik kayıp fonksiyonlaridir.

  2. Daha da önemlisi istatistiksel amaçlar için: R ^ 2, bilinmeyen bir dağılımı takip eder (doğrusal ortamda da). Bu, R ^ 2 kullanarak istatistiksel anlamlı bir hipotezin test edilmesinin o kadar kolay olmadığı anlamına gelir. Zach tarafından da belirtildiği gibi Çapraz Doğrulama iyi bir seçimdir.

User88 yanıtına gelince : Wilcoxon testi ile çapraz doğrulama geçerli bir yaklaşımdır. Yakın tarihli bir makalede farklı yöntemler ve algoritmaların karşılaştırılması için Wilcoxon imzalı rütbe testi ve Friedman testleri kullanılmıştır.

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.