Regularización ElasticNet con Scikit-learn: Conceptos y Aplicación

Clase 16 de 37Curso Profesional de Machine Learning con scikit-learn

ElasticNet: Una técnica intermedia:

Hasta el momento hemos podido ver dos técnicas de regularización en las cuales añadimos un componente de penalización en el proceso donde encontramos los valores de los parámetros 𝛽 minimizando la función de error.

Por ejemplo, si usamos el método de Mínimos Cuadrados Ordinarios, tenemos por definición nuestra función definida como:

Ahora bien. Si aplicamos la regularización L1 también conocida como Lasso (Least Absolute Shrinkage and Selection Operator), tenemos una ecuación de la forma:

donde tenemos un parámetro de ajuste llamado ƛ que si tiene valores altos para el problema mandará el valor de 𝛽j a 0.

Por otro lado. Si aplicamos la regularización L2 también conocida como Ridge, tendremos la siguiente ecuación:

Tendremos una penalización también pero que no tiene la posibilidad de llevar los valores de los coeficientes a cero. Sin embargo esto nos permitirá realizar el intercambio de +sesgo por -varianza.

Recordando que :

  1. Ninguna de las dos es mejor que la otra para todos los casos.

  2. Lasso envía algunos coeficientes a cero permitiendo así seleccionar variables significativas para el modelo.

  3. Lasso funciona mejor si tenemos pocos predictores que influyen sobre el modelo.

  4. Ridge funciona mejor si es el caso contrario y tenemos una gran cantidad.

Para aplicarlos y decidir cuál es el mejor en la práctica, podemos probar usando alguna técnica como cross-validation iterativamente. o bien, podemos combinarlos...

Regularización ElasticNet

Es común encontrarnos en la literatura con un camino intermedio llamado ElasticNet. Esta técnica consiste en combinar las dos penalizaciones anteriores en una sola función. Así, nuestra ecuación de optimización quedará:

Donde tenemos ahora un parámetro adicional 𝛂 que tiene un rango de valores entre 0 y 1. Si 𝛂 = 0 , ElasticNet se comportará como Ridge, y si 𝛂 = 1 , se comportará como Lasso. Por lo tanto, nos brinda todo el espectro lineal de posibles combinaciones entre estos dos extremos.

  1. Tenemos una forma de probar ambas L1 y L2 al tiempo sin perder información.

  2. Supera las limitaciones individuales de ellas.

  3. Si hace falta experiencia, o el conocimiento matemático de fondo, puede ser la opción preferente para probar la regularización.

ElasticNet con Scikit-learn

Para implementar esta técnica añadimos primero el algoritmo ubicado en el módulo linear_model.

from sklearn.linear_model import ElasticNet

Y luego simplemente lo inicializamos con el constructor ElasticNet() y entrenamos con la función fit().

regr = ElasticNet(random_state=0)

regr.fit(X, y)