Lasso vanilya düz çapraz doğrulama yapmak için nasıl bir örnek glmnet
ile ilgili mtcars
veri seti.
Veri kümesini yükleyin.
Özellikleri hazırlayın (bağımsız değişkenler). matrix
Sınıfları olmalı . Dönüştürmek için en kolay yolu df
içine kategorik değişkenler içeren matrix
yoluyladır model.matrix
. Varsayılan olarak glmnet
kesmeye 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ı mpg
verimli ('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=1
varsayılan glmnet
parametrelerden 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. glmnet
aslında 2 lambda sağlar: lambda.min
ve 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.glmnet
ve varsayılan olarak gelenler glmnet
elbette ?glmnet
R'nin konsolunda))))