Glmnet lojistik regresyonu, kukla değişkenlere ihtiyaç duymadan faktör (kategorik) değişkenleri doğrudan işleyebilir mi? [kapalı]


15

Ben işlevlerle LASSO yöntemi kullanarak R lojistik regresyon inşa ediyorum cv.glmnetseçilmesi için lambdave glmnetnihai model için.

Otomatik model seçimiyle ilgili tüm dezavantajları zaten biliyorum ama yine de yapmam gerekiyor.

Benim sorunum, model (faktör) değişkenleri dahil etmeliyim, çok kukla değişkenler oluşturmadan bunu yapmak için herhangi bir yolu var mı? Bu değişkenler sayı değil, neredeyse tüm dizelerdir.


2
Bu konuda en iyi yolu merak ediyorum.
theforestecologist

Yanıtlar:


26

glmnet doğrudan faktörü alamaz, faktör değişkenlerini mankenlere dönüştürmeniz gerekir. Örneğin, model.matrix kullanarak yalnızca basit bir adımdır:

x_train <- model.matrix( ~ .-1, train[,features])
lm = cv.glmnet(x=x_train,y = as.factor(train$y), intercept=FALSE ,family =   "binomial", alpha=1, nfolds=7)
best_lambda <- lm$lambda[which.min(lm$cvm)]

alpha = 1 bir LASSO oluşturur.


1
+1 Harika cevap! Neden siz veya birisinin neden intercept = FALSE kullandığını sorabilir miyim?
Erosennin

İki kategorik değişken olduğunda bu başarısız gibi görünüyor: var1 L1 düzeyleri varsa L1 sütunları, ancak var2 için L2-1 sütunları (L2 düzeyleri olan) haklı olarak alıyorum.
Peter Straka

@Peter Straka: toplam (var1 için L1 kuklaları üzerinde) = 1 tüm kayıtlar için ve toplam (V2 için L2 kuklaları üzerinde) = 1 tüm kayıtlar için, bu nedenle var1 için L1 kuklaları ve var2 için L2 kuklaları doğrusal olarak bağımlıdır. Var2 için L2 mankenlerinden en az biri gereksizdir (doğrusal bir model oluşturmak amacıyla).
VictorZurkowski
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.