Estoy pasando por la sección de LABORATORIO §6.6 en la Cresta de Regresión/Lazo en el libro "Una Introducción a la Estadística de Aprendizaje con Aplicaciones en R' por James, Witten, Hastie, Tibshirani (2013).
Más específicamente, estoy tratando de hacer aplicar la scikit-learn Ridge
modelo de los 'Pesos pesados' del conjunto de datos del paquete de R 'ISLR'. He creado el mismo conjunto de características, como se muestra en el código R. Sin embargo, no puedo llegar cerca de los resultados de la glmnet()
modelo. He seleccionado una L2 parámetro de ajuste para comparar. ("alfa", argumento en scikit-learn).
Python:
regr = Ridge(alpha=11498)
regr.fit(X, y)
http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Chapter%206.ipynb
R:
Tenga en cuenta que el argumento alpha=0
en glmnet()
significa que una L2 pena debe ser aplicado (regresión Ridge). La documentación advierte de no introducir un valor único para lambda
, pero el resultado es el mismo que en ISL, donde se utiliza un vector.
ridge.mod <- glmnet(x,y,alpha=0,lambda=11498)
https://github.com/JWarmenhoven/ISL-python/blob/master/R_glmnet.png
¿Qué causa las diferencias?
Editar:
Cuando se utiliza penalized()
de la penalizado paquete en R, los coeficientes son los mismos que con scikit-learn.
ridge.mod2 <- penalized(y,x,lambda2=11498)
Quizá la pregunta podría ser: ¿Cuál es la diferencia entre glmnet()
y penalized()
al hacer la regresión contraída?