Ja, ein Achsenabschnitt ist in einem glmnet- Modell enthalten, aber nicht reguliert (vgl. Regularisierungspfade für verallgemeinerte lineare Modelle über Koordinatenabstieg , S. 13). Weitere Details zur Implementierung könnten sicherlich durch sorgfältiges Betrachten des Codes erhalten werden (für eine Gaußsche Familie ist es die elnet()
Funktion, die von aufgerufen wird glmnet()
), aber sie befindet sich in Fortran.
Sie können das bestrafte Paket ausprobieren , mit dem Sie den Abschnitt entfernen können, indem Sie unpenalized = ~0
an übergeben penalized()
.
> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE)
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))
Um die Lasso-Regularisierung zu erhalten, können Sie etwas wie versuchen
> fit1b <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)
Wie in der nächsten Abbildung zu sehen ist, gibt es kaum Unterschiede zwischen den mit beiden Methoden berechneten Regressionsparametern (links), und Sie können die Lasso-Pfadlösung sehr einfach darstellen (rechts).