2012-09-05 58 views
20

Esta es una pregunta para principiantes sobre la regularización con regresión. La mayor parte de la información sobre Elastic Net y Lasso Regression en línea replica la información de Wikipedia o el documento original de 2005 de Zou y Hastie (Regularización y selección de variables a través de la red elástica).¿Cómo se usa Elastic Net?

¿Recurso para la teoría simple? ¿Existe alguna explicación simple y fácil acerca de qué hace, cuándo y por qué es necesaria la regulación y cómo usarla, para aquellos que no están estadísticamente inclinados? Entiendo que el documento original es la fuente ideal si puede entenderlo, pero ¿hay algún lugar que más simplemente el problema y la solución?

¿Cómo usar en sklearn? ¿Hay algún ejemplo paso a paso que muestre por qué se eligen las redes elásticas (sobre cresta, lazo o simplemente simple OLS) y cómo se calculan los parámetros? Muchos de los examples on sklearn simplemente incluyen alfa y Rho parámetros directamente en el modelo de predicción, por example:

from sklearn.linear_model import ElasticNet 
alpha = 0.1 
enet = ElasticNet(alpha=alpha, rho=0.7) 
y_pred_enet = enet.fit(X_train, y_train).predict(X_test) 

Sin embargo, no explican cómo éstos se calcularon. ¿Cómo se calculan los parámetros para el lazo o la red?

+3

Puede aprender los conceptos básicos de la regularización en [prof. El excelente curso de aprendizaje automático de Andrew Ng] (https://www.coursera.org/ml). Discute la regularización L2 solamente, pero la matemática para L1 o E-net es muy similar. En cuanto a encontrar los parámetros correctos, scikit-learn tiene clases como 'ElasticNetCV' para eso. –

+1

También recomiendo buscar '' Elementos de aprendizaje estadístico'' un gran libro sobre aprendizaje automático, que está disponible en línea de forma gratuita. Por cierto, la etiqueta de regresión aquí no parece significar lo que quiere decir;) –

+0

Acabo de editar la descripción de la etiqueta para 'regression'. La mayoría de las preguntas parecen referirse a "cómo usar R/SciPy/Matlab/Octave", por lo que probablemente no se trate de pruebas. –

Respuesta

19

Falta la documentación. Creé un nuevo issue para mejorarlo. Como dijo Andreas, el mejor recurso es probablemente el ESL II disponible en línea y de forma gratuita como PDF.

para sintonizar automáticamente el valor de alfa es de hecho posible de usar ElasticNetCV que sobra cálculo redundante serie respecto a la utilización de GridSearchCV en la clase ElasticNet para la sintonización alpha. En complemento, puede usar un GridSearchCV normal para encontrar el valor óptimo de rho. Consulte la docstring de ElasticNetCV para obtener más información.

En cuanto a Lasso vs ElasticNet, ElasticNet tenderá a seleccionar más variables, por lo tanto, dará lugar a modelos más grandes (también más caros de entrenar) pero también será más preciso en general. En particular, Lasso es muy sensible a la correlación entre las características y puede seleccionar aleatoriamente una de las dos características informativas muy correlacionadas, mientras que ElasticNet tendrá más probabilidades de seleccionar ambas, lo que debería conducir a un modelo más estable (en términos de capacidad de generalización, muestras nuevas).

+1

Sí, el lazo elegirá una variable de un grupo de características altamente correlacionadas. Este es un proceso algo aleatorio como lo menciona @ogrisel. Elastic Net, por otro lado, hace la elección de dejar o no todo el grupo de características altamente correlacionadas. –