La función R cv.glm (biblioteca: arranque) calcula el error estimado de predicción de validación cruzada K-fold para modelos lineales generalizados y devuelve delta. ¿Tiene sentido usar esta función para una regresión de lazo (biblioteca: glmnet) y, de ser así, ¿cómo se puede llevar a cabo? La biblioteca glmnet utiliza una validación cruzada para obtener el mejor parámetro de giro, pero no encontré ningún ejemplo que valide la ecuación glmnet final.
r
regression
cross-validation
lasso
glmnet
kalakaru
fuente
fuente
Respuestas:
Un ejemplo sobre cómo hacer una validación cruzada simple para el lazo en
glmnet
elmtcars
conjunto de datos.Cargar conjunto de datos.
Preparar características (variables independientes). Deberían ser de
matrix
clase. La forma más fácil de convertir quedf
contiene variables categóricasmatrix
es a través demodel.matrix
. Eso sí, por defecto seglmnet
ajusta a la intercepción, por lo que será mejor que elimine la intercepción de la matriz del modelo.Preparar respuesta (variable dependiente). Codifiquemos los automóviles con un promedio superior
mpg
al eficiente ('1') y el resto como ineficiente ('0'). Convierta esta variable en factor.Ejecute la validación cruzada a través de
cv.glmnet
. Se recogeráalpha=1
de losglmnet
parámetros predeterminados , que es lo que solicitó: regresión de lazo.Al examinar el resultado de la validación cruzada, puede estar interesado en al menos 2 piezas de información:
lambda, que minimiza el error de validación cruzada.
glmnet
en realidad proporciona 2 lambdas:lambda.min
ylambda.1se
. Es su criterio, como estadístico en ejercicio, cuál usar.coeficientes regularizados resultantes.
Consulte el código R según las instrucciones anteriores:
Comentarios finales:
tenga en cuenta que la salida del modelo no dice nada sobre la significación estadística de los coeficientes, solo valores.
l1 penalizer (lazo), que solicitó, es notorio por la inestabilidad como se evidencia en esta publicación de blog y esta pregunta de intercambio de pila . Una mejor manera podría ser la validación cruzada
alpha
también, lo que le permitiría decidir sobre la combinación adecuada de penalizadores l1 y l2.una forma alternativa de hacer una validación cruzada podría ser recurrir a caret's
train( ... method='glmnet')
y finalmente, la mejor manera de aprender más
cv.glmnet
y sus valores predeterminados provienen, porglmnet
supuesto,?glmnet
de la consola de R)))fuente