Ich möchte ausgewählte Modelle mit First, Lasso und elastischem Netz vergleichen. Die folgende Abbildung zeigt die Koeffizientenpfade mit allen drei Methoden: Grat (Abb. A, alpha = 0), Lasso (Abb. B; alpha = 1) und elastisches Netz (Abb. C; alpha = 0,5). Die optimale Lösung hängt vom ausgewählten Lambda-Wert ab, der anhand einer Kreuzvalidierung ausgewählt wird.
Bei Betrachtung dieser Diagramme würde ich erwarten, dass das elastische Netz (Abb. C) einen Gruppierungseffekt aufweist. Im vorliegenden Fall ist dies jedoch nicht klar. Der Koeffizientenpfad für Lasso und elastisches Netz ist sehr ähnlich. Was könnte der Grund dafür sein? Ist es nur ein Codierungsfehler? Ich habe den folgenden Code in R verwendet:
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)
Der Code zum Zeichnen von Pfaden mit elastischen Nettokoeffizienten ist genau der gleiche wie für Ridge und Lasso. Der einzige Unterschied besteht im Wert von Alpha. Der Alpha-Parameter für die elastische Netto-Regression wurde basierend auf dem niedrigsten MSE (Mean Squared Error) für die entsprechenden Lambda-Werte ausgewählt.
Danke für deine Hilfe !
quelle