Lasso vanilya düz çapraz doğrulama yapmak için nasıl bir örnek glmnetile ilgili mtcars
veri seti.
Veri kümesini yükleyin.
Özellikleri hazırlayın (bağımsız değişkenler). matrixSınıfları olmalı . Dönüştürmek için en kolay yolu dfiçine kategorik değişkenler içeren matrixyoluyladır model.matrix. Varsayılan olarak glmnetkesmeye uyduğunu unutmayın, böylece model matrisinden kesmeyi daha iyi çıkarırsınız.
Yanıt hazırlayın (bağımlı değişken). Ortalamanın üzerinde arabaları mpgverimli ('1') ve geri kalanı verimsiz ('0') olarak kodlayalım. Bu değişkeni faktöre dönüştürün.
Üzerinden çapraz doğrulamayı çalıştırın cv.glmnet. İstediğiniz alpha=1varsayılan glmnetparametrelerden başlayacaktır : Kement regresyonu.
Çapraz doğrulamanın çıktısını inceleyerek en az 2 bilgi ile ilgilenebilirsiniz:
lambda, çapraz doğrulanmış hatayı en aza indirir. glmnetaslında 2 lambda sağlar: lambda.minve lambda.1se. Kullanmak için pratik bir istatistikçi olarak sizin karar çağrınız.
sonuçta düzenli katsayılar.
Lütfen yukarıdaki talimatlara göre R koduna bakın:
# Load data set
data("mtcars")
# Prepare data set
x <- model.matrix(~.-1, data= mtcars[,-1])
mpg <- ifelse( mtcars$mpg < mean(mtcars$mpg), 0, 1)
y <- factor(mpg, labels = c('notEfficient', 'efficient'))
library(glmnet)
# Run cross-validation
mod_cv <- cv.glmnet(x=x, y=y, family='binomial')
mod_cv$lambda.1se
[1] 0.108442
coef(mod_cv, mod_cv$lambda.1se)
1
(Intercept) 5.6971598
cyl -0.9822704
disp .
hp .
drat .
wt .
qsec .
vs .
am .
gear .
carb .
mod_cv$lambda.min
[1] 0.01537137
coef(mod_cv, mod_cv$lambda.min)
1
(Intercept) 6.04249733
cyl -0.95867199
disp .
hp -0.01962924
drat 0.83578090
wt .
qsec .
vs .
am 2.65798203
gear .
carb -0.67974620
Son Yorumlar:
modelin çıktısı, katsayıların istatistiksel önemi hakkında hiçbir şey söylemez, sadece değerler.
İstediğiniz l1 cezalandırıcı (kement), bu blog gönderisinde ve bu yığın değiş tokuş sorusunda kanıtlandığı gibi istikrarsızlıktan dolayı ünlüdür . Daha iyi bir yol da çapraz onaylamak olabilir alpha, bu da l1 ve l2 cezalandırıcılarının uygun karışımına karar vermenizi sağlar.
çapraz doğrulama yapmanın alternatif bir yolu, caret'e yönelmek olabilir train( ... method='glmnet')
ve son olarak, hakkında daha fazla bilgi edinmenin en iyi yolu cv.glmnetve varsayılan olarak gelenler glmnetelbette ?glmnetR'nin konsolunda))))