Koeffizientenpfade - Vergleich von Grat, Lasso und elastischer Netzregression

13

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.

Koeffizientenprofile für Grat (A, alpha = 0), Lasso (B, alpha = 1) und elastische Netzregression (C, alpha = 0,5).  Die Zahlen oben im Diagramm geben die Größe der Modelle an. Die optimale Lösung hängt vom ausgewählten Lambda-Wert ab.  Die Auswahl von Lambda basiert auf einer Kreuzvalidierung.

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 !

Anfänger
quelle

Antworten:

5

p<npn

Wenn die ursprünglichen Merkmale nicht sehr korrelieren, würde ich sagen, dass es vernünftig ist, dass Lasso in Bezug auf den Koeffizientenpfad ähnlich wie Elastic Net abschneidet. Wenn ich die Dokumentation für das glmnet- Paket betrachte, sehe ich auch keinen Fehler in Ihrem Code.

skd
quelle
Vielen Dank für Ihren Kommentar. Ich begann über einen Regularisierungsansatz nachzudenken, um das beste Modell auszuwählen, da ich eine starke Multikollinearität zwischen meinen Variablen beobachtet habe (VIF >> 10). Viele von ihnen waren auf einem Niveau von> 0,8 korreliert. Daher erwartete ich, dass sich das elastische Netz anders verhält als das Lasso und einen Gruppierungseffekt zeigt (im Fall von korrelierten Variablen).
Anfänger
Möglicherweise müssen Sie nur eine stärkere Kammstrafe verwenden?
dcl
Haben Sie die eingestellte Multikollinearität überprüft? Faktorvariablen haben normalerweise Multikollinearität, weil sie sich gegenseitig ausschließen. Ich weiß nicht, ob diese Art von Multikollinearität Probleme mit Lasso gibt.
Bakaburg