Sì, un'intercettazione è inclusa in un modello glmnet , ma non è regolarizzata (cfr. Percorsi di regolarizzazione per modelli lineari generalizzati tramite Discesa coordinata , p. 13). Maggiori dettagli sull'implementazione potrebbero certamente essere ottenuti esaminando attentamente il codice (per una famiglia gaussiana, è la elnet()
funzione che viene chiamata da glmnet()
), ma è in Fortran.
È possibile provare il pacchetto penalizzato , che consente di rimuovere l'intercettazione passando unpenalized = ~0
a 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))
Per ottenere la regolarizzazione del Lazo, potresti provare qualcosa del genere
> fit1b <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)
Come si può vedere nella figura successiva, ci sono piccole differenze tra i parametri di regressione calcolati con entrambi i metodi (a sinistra) e puoi tracciare la soluzione del percorso Lazo molto facilmente (a destra).