Sí, se incluye una intersección en un modelo glmnet , pero no está regularizada (cf. Rutas de regularización para modelos lineales generalizados a través del descenso coordinado , p. 13). Ciertamente, se podrían obtener más detalles sobre la implementación observando cuidadosamente el código (para una familia gaussiana, es la elnet()
función que se llama glmnet()
), pero está en Fortran.
Puede probar el paquete penalizado , que permite eliminar la intercepción pasando 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))
Para obtener la regularización de Lasso, puede intentar algo como
> fit1b <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)
Como se puede ver en la siguiente figura, existen pequeñas diferencias entre los parámetros de regresión calculados con ambos métodos (izquierda), y puede trazar la solución de ruta de lazo muy fácilmente (derecha).