Я хотел бы сравнить модели, выбранные с ребристой, лассо и эластичной сеткой. На рисунке ниже показаны коэффициенты пути, используя все 3 метода: гребень (рис. A, альфа = 0), лассо (рис. B; альфа = 1) и эластичная сетка (рис. C; альфа = 0,5). Оптимальное решение зависит от выбранного значения лямбда, которое выбирается на основе перекрестной проверки.
Глядя на эти графики, я ожидал бы, что эластичная сетка (рис. C) продемонстрирует группирующий эффект. Однако в представленном случае это не ясно. Коэффициенты пути для лассо и упругой сетки очень похожи. Что может быть причиной этого? Это просто ошибка кодирования? Я использовал следующий код в R:
library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)
Код, используемый для построения траекторий упругих чистых коэффициентов, точно такой же, как для гребня и лассо. Разница лишь в значении альфа. Альфа-параметр для упругой чистой регрессии был выбран на основе наименьшего MSE (среднеквадратичная ошибка) для соответствующих значений лямбда.
Спасибо за помощь !
источник