Ich habe die GLMNET-Version des elastischen Netzes für die lineare Regression mit einer anderen Software als R implementiert. Ich habe meine Ergebnisse mit der R-Funktion glmnet im Lasso-Modus für Diabetesdaten verglichen .
Die Variablenauswahl ist in Ordnung, wenn der Wert des Parameters (Lambda) variiert wird, aber ich erhalte leicht unterschiedliche Koeffizientenwerte. Aus diesem und anderen Gründen denke ich, dass es vom Achsenabschnitt in der Aktualisierungsschleife kommt, wenn ich die aktuelle Anpassung berechne, weil ich den Achsenabschnitt (den ich als Mittelwert der Zielvariablen nehme) im gesamten Algorithmus nicht verändere: as erklärt in Trevor Hasties Artikel ( Regularisierungspfade für verallgemeinerte lineare Modelle über Koordinatenabstieg , Seite 7, Abschnitt 2.6):
Der Achsenabschnitt wird nicht reguliert, [...] für alle Werte von [...] Lambda [dem L1-Constraint-Parameter]
Trotz des Artikels liefert die R-Funktion glmnet unterschiedliche Werte für den Achsenabschnitt entlang des Regularisierungspfads (die unterschiedlichen Lambda-Werte). Hat jemand eine Ahnung, wie die Werte des Intercept berechnet werden?
glmnet
Ich denke, hier können Sie falsch liegen: Im Gegensatz zum linearen Modell können Sie die Prädiktoren nicht so umparametrieren, dass sie immer orthogonal zum Achsenabschnitt sind. Daher kann der Achsenabschnitt nicht einfach als Mittelwert berechnet werden.
quelle