2015-03-27 19 views
5

Bir grup olayın sonuç üzerinde yarattığı potansiyel etkiyi gösterecek bir proje üzerinde çalışıyorum. Özellikle Poisson özelliğini kullanarak glmnet() paketini kullanıyorum.R içinde glmnet() ve cv.glmnet() arasındaki fark?

# de <- data imported from sql connection   
x <- model.matrix(~.,data = de[,2:7]) 
y <- (de[,1]) 
reg <- cv.glmnet(x,y, family = "poisson", alpha = 1) 
reg1 <- glmnet(x,y, family = "poisson", alpha = 1) 

**Co <- coef(?reg or reg1?,s=???)** 

summ <- summary(Co) 
c <- data.frame(Name= rownames(Co)[summ$i], 
     Lambda= summ$x) 
c2 <- c[with(c, order(-Lambda)), ] 

başlangıç ​​SQL benim veritabanından veri büyük miktarda ithal: İşte benim kod. Sonra matris formatına koyarım ve cevabı tahmin edicilerden ayırdım.

Burası şaşkınım: glmnet() işlevi ve cv.glmnet() işlevi arasındaki farkın tam olarak ne olduğunu anlayamıyorum. Cv.glmnet() işlevinin glmnet() 'in k katlama çapraz doğrulaması olduğunu anlıyorum, ancak pratik açıdan tam olarak ne anlama geliyor? Onlar lambda için aynı değeri veriyorlar, ama ikisinin arasındaki fark hakkında önemli bir şeyi kaçırmadığımdan emin olmak istiyorum.

Ayrıca, alfa = 1 (varsayılan olarak varsayılan) belirttiğimde neden iyi çalıştığını da belirsiz değilim, ama dışarı çıksam da değil mi?

Şimdiden teşekkürler!

+0

'plot (reg)' a bakmayı deneyin. – Roland

+1

** Hiçbir zaman glmnet'in varsayılan lambda dizisine güvenmeyin! ** Kötü bir konu. Her zaman kendi sıranızı sağlayın. Daha sonra uygun lambda değerini "fit $ lambda.min" 'den alıp, 'predik()', 'coef()' vb. Tüm çağrılarda 's = lambda.min' parametresiyle birlikte kullanın. – smci

+0

@smci neden olmasın lambda.1se kullanarak? Tam olarak bu bir tahmin() – Tonja

cevap

6

glmnet() regresyon modelleri, kement modeli ve diğerleri uyacak şekilde kullanılabilecek bir R, bir pakettir. Alfa argümanı hangi modelin uygun olduğunu belirler. Alpha = 0 olduğunda, Ridge Modeli uygundur ve alfa = 1 ise, bir lasso modeli uygundur.

cv.glmnet() nfolds kullanılarak ayarlanabilir varsayılan 10 misli, çapraz doğrulama gerçekleştirir. 10 kat CV, gözlemlerinizi rasgele olarak eşit olmayan 10 örtüşen grup/katlara böler. İlk katlama, doğrulama seti için kullanılacaktır ve model 9 katına uygundur. Bias Variance avantajları genellikle bu model doğrulama yöntemlerini kullanmanın ardındaki motivasyondur. Kement ve sırt modelleri söz konusu olduğunda, CV ayar parametresi lambda'nın değerini seçmeye yardımcı olur. Örnekte

, en küçük CV hatayla sonuçlanır lambda değerini görmek için arsa (reg) VEYA reg $ lambda.min yapabilirsiniz. Daha sonra, Test MSE'yi bu lambda değeri için türetebilirsiniz. Varsayılan olarak, glmnet(), en düşük test MSE'sini vermeyebilen otomatik olarak seçilmiş bir lambda aralığı için Ridge veya Lasso regresyonunu gerçekleştirir. Bu yardımcı olur umarım!

Bu yardımcı olur umarız!

reg $ lambda.min ve reg $ lambda.1se Arasında
+1

Daha açık bir şekilde ifade edildi: ** Glmnet'in varsayılan lambda dizisine asla güvenme! Her zaman kendi dizinizi verin. ** – smci

1

; lambda.min açıkça size en düşük MSE verecektir, ancak, hata ile ne kadar esnek olabileceğinize bağlı olarak, bu değer daha fazla yordayıcı sayısını daraltacağından reg $ lambda.1se'yi seçmek isteyebilirsiniz. Ayrıca, lambda değeriniz olarak reg $ lambda.min ve reg $ lambda.1se'nin ortalamasını da seçebilirsiniz.

İlgili konular