Çoklu doğrusal regresyonda özellik seçimi için rastgele bir orman kullanılabilir mi?


50

RF, doğrusal olmayanlığı kaldırabildiği ancak katsayı sağlayamadığı için, en önemli özellikleri toplamak için rastgele orman kullanmak ve ardından bu özellikleri katsayılarını elde etmek için çoklu doğrusal regresyon modeline bağlamak akıllıca olur mu?


@ user777, "açıklamak" veya "böyle bir şey" olarak "açıklamak" mı okuyorsunuz?
shadowtalker

1
Bu sorunun ne sormaya çalıştığıyla ilgili önemli bir endişe göründüğü için, karışıklığı gidermek için lütfen onu düzenler misiniz?
whuber

Yanıtlar:


71

RF, doğrusal olmayanlığı kaldırabildiği ancak katsayı sağlayamadığı için, en önemli Özellikleri toplamak için Rastgele Orman'ı kullanmak ve daha sonra işaretlerini açıklamak için bu özellikleri Çoklu Doğrusal Regresyon modeline bağlamak akıllıca olur mu?

OP'nin tek cümle sorusunu, OP'nin aşağıdaki analiz hattının arzu edilebilirliğini anlamak istediği anlamına geldiğini yorumluyorum:

  1. Bazı verilere rastgele bir orman sığdır
  2. Değişken önemi olan bazı ölçütlere göre (1), bir yüksek kaliteli özellik alt kümesi seçin.
  3. (2) 'deki değişkenleri kullanarak doğrusal bir regresyon modelini tahmin edin. Bu, OP'nin RF'nin sağlayamadığı katsayılara OP erişimi sağlayacaktır.
  4. (3) deki doğrusal modelden, katsayı tahminlerinin işaretlerini niteliksel olarak yorumlar.

Bu boru hattının istediğini başaracağını sanmıyorum. Rastgele ormanlarda önemli olan değişkenlerin mutlaka sonuçla ilgili herhangi bir tür doğrusal katkı maddesi ilişkisi olması gerekmez. Bu sözler şaşırtıcı olmamalıdır: rastgele ormanı doğrusal olmayan ilişkileri keşfetmede bu kadar etkili yapan şey budur.

İşte bir örnek. 10 gürültü özelliği, iki "sinyal" özelliği ve dairesel karar sınırı olan bir sınıflandırma problemi yarattım.

set.seed(1)
N  <- 500
x1 <- rnorm(N, sd=1.5)
x2 <- rnorm(N, sd=1.5)

y  <- apply(cbind(x1, x2), 1, function(x) (x%*%x)<1)

plot(x1, x2, col=ifelse(y, "red", "blue"))
lines(cos(seq(0, 2*pi, len=1000)), sin(seq(0, 2*pi, len=1000))) 

görüntü tanımını buraya girin

Ve RF modelini uyguladığımızda, bu özelliklerin model tarafından kolayca seçildiğini fark etmemize şaşırmıyoruz. (Not: Bu model ayarlanmış değildir hiç ).

x_junk   <- matrix(rnorm(N*10, sd=1.5), ncol=10)
x        <- cbind(x1, x2, x_junk)
names(x) <- paste("V", 1:ncol(x), sep="")

rf <- randomForest(as.factor(y)~., data=x, mtry=4)
importance(rf)

    MeanDecreaseGini
x1         49.762104
x2         54.980725
V3          5.715863
V4          5.010281
V5          4.193836
V6          7.147988
V7          5.897283
V8          5.338241
V9          5.338689
V10         5.198862
V11         4.731412
V12         5.221611

Ancak sadece bu iki kullanışlı özelliği seçtiğimizde ortaya çıkan doğrusal model berbattır.

summary(badmodel <- glm(y~., data=data.frame(x1,x2), family="binomial"))

Özetin önemli kısmı, artık sapma ve sıfır sapma karşılaştırmasıdır. Modelin temelde sapkınlığı "hareket ettirmek" için hiçbir şey yapmadığını görebiliriz. Ayrıca, katsayı tahminleri esasen sıfırdır.

Call:
glm(formula = as.factor(y) ~ ., family = "binomial", data = data.frame(x1, 
    x2))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.6914  -0.6710  -0.6600  -0.6481   1.8079  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.398378   0.112271 -12.455   <2e-16 ***
x1          -0.020090   0.076518  -0.263    0.793    
x2          -0.004902   0.071711  -0.068    0.946    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 497.62  on 499  degrees of freedom
Residual deviance: 497.54  on 497  degrees of freedom
AIC: 503.54

Number of Fisher Scoring iterations: 4

İki model arasındaki vahşi fark nedir? Açıkçası, öğrenmeye çalıştığımız karar sınırı, iki "sinyal" özelliğinin doğrusal bir işlevi değildir. Açıkçası, regresyonun tahmin edilmesinden önce karar sınırının işlevsel biçimini biliyor olsaydınız, verileri regresyonun daha sonra keşfedebileceği şekilde kodlamak için bir dönüşüm uygulayabilirsiniz ... Gerçek dünyadaki herhangi bir problemde zamanın etkisi.) Bu durumda sadece iki sinyal özelliği ile çalıştığımız için, sınıf etiketlerinde gürültüsüz sentetik bir veri seti, sınıflar arasındaki sınırın komplolarımızda çok açık olduğu görülmektedir. Ancak, gerçek verilerle gerçekçi sayıda boyutta çalışırken daha az belirgindir.

Ayrıca, genel olarak, rastgele orman, verilerin farklı alt kümelerine farklı modeller sığdırabilir. Daha karmaşık bir örnekte, tek bir komplodan ne olup bittiği açıkça belli olmayacak ve benzer tahmine dayalı bir güce sahip doğrusal bir model oluşturmak daha zor olacaktır.

Çünkü sadece iki boyutla ilgileniyoruz, bir tahmin yüzeyi oluşturabiliriz. Beklendiği gibi, rastgele model orijin etrafındaki mahallenin önemli olduğunu öğrenir.

M                 <- 100
x_new             <- seq(-4,4, len=M)
x_new_grid        <- expand.grid(x_new, x_new)
names(x_new_grid) <- c("x1", "x2")
x_pred            <- data.frame(x_new_grid, matrix(nrow(x_new_grid)*10, ncol=10))
names(x_pred)     <- names(x)

y_hat             <- predict(object=rf, newdata=x_pred, "vote")[,2]

library(fields)
y_hat_mat         <- as.matrix(unstack(data.frame(y_hat, x_new_grid), y_hat~x1))

image.plot(z=y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255), 
           main="RF Prediction surface", xlab="x1", ylab="x2")

görüntü tanımını buraya girin

Kötü niyetli model çıktımızın ima ettiği gibi, azaltılmış değişkenli lojistik regresyon modeli için tahmin yüzeyi temel olarak düzdür.

görüntü tanımını buraya girin

bad_y_hat     <- predict(object=badmodel, newdata=x_new_grid, type="response")
bad_y_hat_mat <- as.matrix(unstack(data.frame(bad_y_hat, x_new_grid), bad_y_hat~x1))
image.plot(z=bad_y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255), 
           main="Logistic regression prediction surface", xlab="x1", ylab="x2")

HongOoi, sınıf üyeliğinin özelliklerin doğrusal bir işlevi olmadığını, ancak doğrusal bir işlevin bir dönüşüm altında olduğunu not eder. Karar sınırı bu özellikleri değiştirirsek daha kullanışlı bir doğrusal model oluşturabiliriz. Bu kasıtlı. RF modeli dönüşüm olmadan bu iki özellikte sinyal bulabilirken, analistin GLM'de benzer şekilde yararlı sonuçlar alabilmesi için daha spesifik olması gerekir. Belki de OP için bu yeterlidir: 2 özellik için kullanışlı bir dönüşüm kümesi bulmak 12'den daha kolaydır. Ancak, benim açımdan bir dönüşüm yararlı bir doğrusal model üretse bile, RF özelliğinin önemi kendi başına bir önermeyecektir.1=x12+x22,


1
Bence, güzel olsa da, bütün meseleyi özlüyor. Biraz daha karmaşık bir model deneyin; bunlardan biri bilgilendirici olacak kadar önemsiz diyebilirim. Biraz tuz ve karabiber sesiyle bunu ( people.kyb.tuebingen.mpg.de/spider/demo_dec_vs_svm_2.jpg ) düşünün . Şimdi RF'ye uygun. Şimdi "sahte" fenomenleri kaldırmak için RF'yi "filtre" olarak kullanın ve alternatif modelinizi RF'nin çıktıları üzerinde değil, katsayılarında eğitin. OP katsayıları değil "özellikleri" belirtir. OP "azaltılmış rastgele orman" değil, "rastgele orman" demiyor. Sonuç, tüm ormanın çıktısı içindir.
EngrStudent

3
İlginçtir, sizin örnek olan belirleyicileri lineer - Eğer onları ilk dönüşümü eğer. Denkleminiz , yani ve karelerinin alınması onu doğrusal bir modele dönüştürür. Aslında, Friedman, Hastie ve Tibshirani'nin, artırmanın düşük boyutlu bir modele uyduğunu göstermek için kullandığı örneklerden biri (güdükler durumunda katkı maddesi). x 1 x 2y=x12+x22x1x2
Hong Ooi

3
@ user777, yıllardır karmaşık problemlere karşı boyutsallığın azaltılması için rastgele ormanları kullandım. Eski işverenim Intel Semiconductor, 20k sütun ve 20k adım olan üretim süreçlerine sahip ve 10 aydan az bir süre için bunu 20k sütundan 30 sütuna kadar bir dizi analitik araç paketi olarak kullanıyor. Dersleri dahili olarak öğretir ve dışarıdan içeriğe ders verir. ( web.stanford.edu/class/ee392m/Lecture3Tuv.pdf ) "Orman" inanılmaz derecede güçlü bir araçtır ve tek kötü yoldan geçtiniz . Kaçırdığın iki iyi iyilik var.
EngrStudent

2
@EngrStudent "Intel, çok sayıda sütuna gitmek için RF'yi kullanıyor." Benim gösterimin yaptığı tam olarak bu. Ayrıca OP'nin bu özelliklerin doğrusal bir modelde kârlı bir şekilde kullanılıp kullanılamayacağına ilişkin özel sorusunu yanıtlar ve cevabım "genel olarak doğrudan faydalı olmayacak, ancak bu örnekte bunları bir dönüşüm altında yararlı bulabilirsiniz."
Monica'yı

12

@Sycorax tarafından cevap harika. Model uyumu ile ilgili problemin tam olarak tanımlanmış olanlarına ek olarak, geleneksel regresyon için beslenmenin özelliklerini öğrenmek için rastgele ormanlar, kement veya elastik ağlar gibi çok adımlı bir işlem yürütmemek için başka bir neden daha vardır. Sıradan regresyon düzgün rasgele orman veya diğer yöntemlerin geliştirilmesi sırasında gitti penalization hakkında bilemeyiz ve edilir unpenalized etkilerini uyabilecek kötü tahmin etmede çok güçlü görünmesini önyargılı . Bu adım adım değişken seçimi yapmaktan ve nihai modeli nasıl geldiğini hesaba katmadan bildirmekten farklı olmaz.Y


2
Teşekkürler Dr. Aklımda, eğer OP bu analiz boru hattını kullanacak olsaydı, OP, (aşağıdan ) doğrulama şemasının içine giren RF aşağı seçimi ve doğrusal modeli yapardı . Bu tarif ettiğiniz önyargıyı hafifletmek için yeterli mi yoksa burada kaçırdığım başka bir sorun var mı?
Monica'yı

2
Düzenin "içinde" uygun bir doğrusal modelin nasıl yapıldığını bilmiyorum. Ortaya çıkacak olan aşırı güçlendirme / tahmin önyargısını nasıl azaltacağımı bilmiyorum. Belki de daha iyi bir yaklaşım, bazen ön koşullandırma olarak adlandırılan model yaklaşımıdır. Burada bir kara kutunun çıktısını yaklaştırmak için kara kutunun küçülmesini miras olarak, geleneksel modeller veya tek bir ağaç (bir ton düğüm gerektirir) kullanırsınız.
Frank Harrell 16:

8

Daha "rastgele orman uygun" olan bir soruna uygulanan düzgün şekilde yürütülen rastgele bir orman, gürültüyü gidermek için bir filtre olarak çalışabilir ve sonuçları diğer analiz araçlarına girdi olarak daha faydalı hale getirebilir.

Feragatler:

  • "Gümüş mermi" mi? Olmaz. Kilometre değişecektir. Başka yerlerde değil çalıştığı yerde çalışır.
  • Fena halde yanlış bir şekilde kullanmanın ve önemsizden voodoo alanına giren cevapları almanın yolları var mı? youbetcha. Her analitik araç gibi, sınırları var.
  • Kurbağa yalarsan, nefesin kurbağa gibi kokar mı? muhtemel. Orada deneyimim yok.

"Spider" yapan "peeps" e bir "haykırmak" vermeliyim. ( link ) Onların örnek problemi yaklaşımı bilgilendirdi. ( link ) Theil-Sen tahmin edicilerini de seviyorum ve Theil ve Sen'e sahne verebilmeyi diliyorum.

Benim cevabım nasıl yanlış anlaşılacağı ile ilgili değil, en doğru olanı yaptıysanız nasıl işe yarayacağı hakkında. "Önemsiz" gürültü kullanırken, "önemsiz" veya "yapılandırılmış" gürültü hakkında düşünmenizi istiyorum.

Rastgele bir ormanın güçlü yanlarından biri, yüksek boyutlu sorunlara ne kadar iyi uygulandığıdır. 20k sütunları (yani 20k boyutlu bir boşluk) temiz bir görsel şekilde gösteremiyorum. Bu kolay bir iş değildir. Bununla birlikte, 20k boyutlu bir probleminiz varsa, diğerlerinin çoğu "yüzlerinde" düştüklerinde rastgele bir orman orada iyi bir araç olabilir.

Bu, rastgele bir orman kullanarak sinyalden gelen gürültüyü gidermeye bir örnektir.

#housekeeping
rm(list=ls())

#library
library(randomForest)

#for reproducibility
set.seed(08012015)

#basic
n <- 1:2000
r <- 0.05*n +1 
th <- n*(4*pi)/max(n)

#polar to cartesian
x1=r*cos(th) 
y1=r*sin(th)

#add noise
x2 <- x1+0.1*r*runif(min = -1,max = 1,n=length(n))
y2 <- y1+0.1*r*runif(min = -1,max = 1,n=length(n))

#append salt and pepper
x3 <- runif(min = min(x2),max = max(x2),n=length(n)/2)
y3 <- runif(min = min(y2),max = max(y2),n=length(n)/2)

x4 <- c(x2,x3)
y4 <- c(y2,y3)
z4 <- as.vector(matrix(1,nrow=length(x4)))

#plot class "A" derivation
plot(x1,y1,pch=18,type="l",col="Red", lwd=2)
points(x2,y2)
points(x3,y3,pch=18,col="Blue")
legend(x = 65,y=65,legend = c("true","sampled","false"),
col = c("Red","Black","Blue"),lty = c(1,-1,-1),pch=c(-1,1,18))

Burada neler olduğunu açıklamama izin ver. Aşağıdaki resim "1" sınıfı için eğitim verilerini göstermektedir. "2" sınıfı aynı alan ve aralık boyunca düzgün rastlantısaldır. "1" in "bilgisinin" çoğunlukla sarmal olduğunu, ancak "2" den materyalle bozulduğunu görebilirsiniz. Verilerinizin% 33'ünün bozuk olması, birçok takma aracı için bir sorun olabilir. Theil-Sen, yaklaşık% 29 oranında bozulmaya başlar. ( bağlantı )

görüntü tanımını buraya girin

Şimdi bilgiyi ayırıyoruz, sadece gürültünün ne olduğu hakkında bir fikre sahip olduk.

#Create "B" class of uniform noise
x5 <- runif(min = min(x4),max = max(x4),n=length(x4))
y5 <- runif(min = min(y4),max = max(y4),n=length(x4))
z5 <- 2*z4 

#assemble data into frame 
data <- data.frame(c(x4,x5),c(y4,y5),as.factor(c(z4,z5)))
names(data) <- c("x","y","z")

#train random forest - I like h2o, but this is textbook Breimann
fit.rf <- randomForest(z~.,data=data,
                       ntree = 1000, replace=TRUE, nodesize = 20)
data2 <- predict(fit.rf,newdata=data[data$z==1,c(1,2)],type="response")

#separate class "1" from training data
idx1a <- which(data[,3]==1)

#separate class "1" from the predicted data
idx1b <- which(data2==1)

#show the difference in classes before and after RF based filter
plot(data[idx1a,1],data[idx1a,2])
points(data[idx1b,1],data[idx1b,2],col="Red")

İşte uygun sonuç:

görüntü tanımını buraya girin

Bunu gerçekten seviyorum, çünkü iyi bir yöntemin hem güçlü hem de zayıf yönlerini aynı zamanda zor bir soruna da gösterebiliyor. Merkeze yakın bakarsanız, daha az filtrelemenin nasıl olduğunu görebilirsiniz. Bilginin geometrik ölçeği küçüktür ve rastgele orman bunu kaçırmaktadır. Düğümlerin sayısı, ağaçların sayısı ve sınıf 2 için örnek yoğunluğu hakkında bir şeyler yazıyor. Ayrıca (-50, -50) ve "jetler" yakınında da çeşitli yerlerde bir boşluk var. Bununla birlikte, genel olarak, filtreleme nezihdir.

SVM ile karşılaştır

İşte SVM ile bir karşılaştırmaya izin veren kod:

#now to fit to svm
fit.svm <-  svm(z~., data=data, kernel="radial",gamma=10,type = "C")

x5 <- seq(from=min(x2),to=max(x2),by=1)
y5 <- seq(from=min(y2),to=max(y2),by=1)

count <- 1
x6 <- numeric()
y6 <- numeric()
for (i in 1:length(x5)){

     for (j in 1:length(y5)){
          x6[count]<-x5[i]
          y6[count]<-y5[j]
          count <- count+1
     }
}

data4 <- data.frame(x6,y6)
names(data4) <- c("x","y")

data4$z <- predict(fit.svm,newdata=data4)

idx4 <- which(data4$z==1,arr.ind=TRUE)


plot(data4[idx4,1],data4[idx4,2],col="Gray",pch=20)
points(data[idx1b,1],data[idx1b,2],col="Blue",pch=20)
lines(x1,y1,pch=18,col="Green", lwd=2)
grid()
legend(x = 65,y=65,
       legend = c("true","from RF","From SVM"),
       col = c("Green","Blue","Gray"),lty = c(1,-1,-1),pch=c(-1,20,15),pt.cex=c(1,1,2.25))

Aşağıdaki resimde sonuçlanır.

görüntü tanımını buraya girin

Bu iyi bir SVM. Gri, SVM tarafından "1" sınıfı ile ilişkili alandır. Mavi noktalar RF tarafından "1" sınıfı ile ilişkili örneklerdir. RF bazlı filtre, açıkça empoze edilmiş bir temeli olmadan, SVM ile karşılaştırılabilir şekilde çalışır. Spiralin merkezine yakın "sıkı veri" nin RF tarafından çözülen çok daha "sıkı" olduğu görülebilir. RF'nin SVM tarafından bulunmadığı bir dernek bulduğu "kuyruk" yönünde "adalar" da vardır.

Ben eğlencem. Arkaplan olmadan, bu alanda çok iyi bir katkı yapan tarafından yapılan ilk işlerden birini yaptım. Orijinal yazar "referans dağılımı" nı kullandı ( bağlantı , bağlantı ).

DÜZENLE:

Bu modele rastgele FOREST uygulayın:
user777, rastgele bir ormanın unsuru olan bir CART hakkında iyi bir düşünceye sahip olsa da, rastgele ormanın temeli "zayıf öğrenenler topluluğudur". CART bilinen zayıf bir öğrenicidir, ancak bir "topluluk" yakınında uzaktan hiçbir şey değildir. Rastgele bir ormanda olmasına rağmen "topluluk", "çok sayıda örnek sınırında" amaçlanmıştır. Saçılma grafiğindeki kullanıcı777'nin cevabı, en az 500 örnek kullanır ve bu, bu durumda insan okunabilirliği ve örnek boyutları hakkında bir şeyler söyler. İnsan görsel sistemi (kendisi bir öğrenci topluluğu) şaşırtıcı bir algılayıcı ve veri işlemcisidir ve bu değeri işlem kolaylığı için yeterli bulmaktadır.

Bir rastgele orman aracında varsayılan ayarları bile uygularsak, ilk birkaç ağaç için sınıflandırma hatası artışlarının davranışını görebiliriz ve yaklaşık 10 ağaç olana kadar bir ağaç seviyesine ulaşmaz. Başlangıçta hata büyüdükçe hatanın azaltılması 60 ağaç çevresinde sabitleşir. Kararlı derken

x        <- cbind(x1, x2)
plot(rf,type="b",ylim=c(0,0.06))
grid()

Hangi verim:
görüntü tanımını buraya girin

"Minimum zayıf öğrenen" e bakmak yerine, aracın varsayılan ayarı için çok kısa bir buluşsal yöntem tarafından önerilen "minimum zayıf topluluğa" bakarsak, sonuçlar biraz farklıdır.

Not, yaklaşık çizginin kenarını gösteren daireyi çizmek için "çizgiler" kullandım. Kusursuz olduğunu ancak tek bir öğrencinin kalitesinden çok daha iyi olduğunu görebilirsiniz.

görüntü tanımını buraya girin

Orijinal örneklemede 88 "iç" örnek vardır. Numune boyutları arttırılırsa (grubun uygulanmasına izin verilir), yaklaştırma kalitesi de artar. 20.000 örnek ile aynı sayıda öğrenci şaşırtıcı derecede daha iyi bir uyum sağlar.

görüntü tanımını buraya girin

Çok daha yüksek kaliteli girdi bilgisi de uygun sayıda ağacın değerlendirilmesine izin verir. Yakınsama muayenesi, bu özel durumda verileri iyi bir şekilde temsil etmek için 20 ağacın minimum yeterli sayı olduğunu göstermektedir.

görüntü tanımını buraya girin


Bu, doğrusal bir model için yüksek kaliteli özellikleri seçmek için RF'nin kullanılabileceğini nasıl kanıtlar / kanıtlar? Cevabınızda özellik seçimini veya doğrusal modelleri tartışmıyorsunuz.
Monica,

Sorgunun öncülü, RF'yi ön filtre olarak kullanmak ve ardından doğrusal modelin parametrelerine bakmaktır. Ormanın parametrelerine bakmıyordu. Okuduğumda, derinlik ya da özgüllüğü olmadığı için "çoklu doğrusal model" ikincil görünüyordu. Bana göre bu, "bir RF, analitik araca x yapıştırmadan önce verileri önceden işleyebilir / temizleyebilir" gibi görünüyordu.
EngrStudent

Yatay ve dikey eserler görüyorum. 45 derece döndürülmüş koordinatlarda "eşlenik veri" oluşturmaya ve sütunları RF'ye eklemeye teşvik ediyorum. Bahse girerim, böyle bir dönüşümün, yapay değişkenlerin sayısını azaltacağına rağmen, bunun girdi parametrelerini nasıl değiştireceğinden emin değilim.
EngrStudent

2
Bir kenara, "rotasyon ormanı", PCA'nın yeni temeli belirlemek için kullanıldığı bu fikre yakın zamandaki bir değişikliktir. ncbi.nlm.nih.gov/pubmed/16986543
Monica

1
Düzenli: Liu, Fei Tony, Ting, Kai Ming ve Zhou, Zhi-Hua. “İzolasyon ormanı.” Veri Madenciliği, 2008. ICDM'08. Sekizinci IEEE Uluslararası Konferansı.
EngrStudent
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.