
Regularización
La regularización es una técnica utilizada para evitar el sobreajuste que se produce cuando un modelo es demasiado complejo y se ajusta demasiado a los datos de entrenamiento, lo que da lugar a un escaso rendimiento a la hora de aplicarlo a nuevos datos. La regularización añade un término de penalización a la función de coste que el modelo intenta optimizar, lo que le disuade de ajustarse al ruido o a las fluctuaciones de los datos de entrenamiento.
¡No te pierdas ningún nuevo vídeo!
Visita mi canal de Youtube
En un artículo anterior he hablado de la transformación de las variables (basis expansion) para conseguir un mejor ajuste cuando la relación no es lineal. Si por una parte este proceso mejora el ajuste, por otra parte añade complejidad al modelo. Vimos como el modelo mejoraba al añadir complejidad, pero era solo frente a los mismos datos de entrenamiento. De hecho, al aplicar el modelo a un nuevo conjunto de datos, el error se disparaba. Este concepto se puede tener en cuenta no sólo cuando aplicamos el modelo a nuevos datos, sino también mientras entrenamos el modelo, más concretamente en la función de coste. Esto se llama “regularización” y lo que hace as añadir más “coste” cuanto más la función sea compleja, por ejemplo utilizando los coeficientes (cuanto más, más complejidad).
Hemos visto en post anteriores que para las regresiones la función de coste puede ser la suma de los errores al cuadrado y en este artículo hablaré de las técnicas más utilizadas para este tipo de modelo:
– Regresión Ridge (L2)
– Regresión Lasso (L1)
– Elastic Net
Regresión Ridge
La regresión Ridge regulariza el modelo añadiendo una penalización al tamaño de los coeficientes que se suma a nuestra función de coste (para más información sobre la función de coste échale un vistazo a mi anterior post “como aprende un modelo de machine learning“).


En la ecuación anterior notamos la función de coste a la izquierda del “+” y la penalización a la derecha. La penalización tiene un peso representado por la letra lambda (λ) que es el grado de penalización. Cuando este es “0”, estaríamos utilizando nuestra habitual función de coste para una simple regresión lineal. Después tenemos la sumatoria de nuestros coeficientes al cuadrado que podemos desglosar de la siguiente manera en el caso, por ejemplo, de una regresión polinomial de tercer grado.
Utilizando el ejemplo visto en algunos artículos anteriores (Transformaciones para modelos no lineales), la regresión polinomial de tercer grado para predecir el precio de las viviendas era así:
y = 0,00032 x3 – 0,047 x2 + 3,029 x -29,5
Así que en este caso la penalización sería la siguiente:
λ (0,000322 + 0,0472 + 3,0292 + 29,52)
El ejemplo anterior es solo para ayudar en la interpretación dado que si hubiéramos aplicado una regresión Ridge estos no hubieran sido los coeficientes porque en la función de coste estaríamos aplicando la penalización. Esto hace que, aunque mantengamos todos los predictores en el modelo, los coeficientes tienden a disminuir para reducir la penalización.
Pero ¿cómo elegimos el valor óptimo de λ? Es importante entender que, si por una parte al aumentar la penalización disminuimos la varianza, por otra parte, el sesgo aumenta. Es decir que al penalizar el modelo lo hacemos más estable, pero corremos el riesgo de desviarnos de representar la relación “verdadera” entre la variable objetivo y las variables predictoras.
Idealmente, tendríamos que entrenar el modelo con diferentes valores y testearlo con un conjunto de datos independiente de validación, o podemos testearlo con una técnica llamada cross-validation.
Regresión Lasso
La regresión Lasso penaliza la función de coste del modelo sumando los valores absolutos de los coeficientes. En este caso también tendremos que definir el peso que aplicamos a la penalización (λ).

Este tipo de penalización hace que algunos coeficientes sean exactamente “0”, de facto eliminándolos del modelo.
Ventajas y desventajas
La ventaja de utilizar Lasso es que reduce algunos coeficientes a cero, lo que significa que aplica una selección de los predictores, mientras que Ridge no llega a excluir ninguno. Esto es muy útil cuando queremos simplificar un modelo que tiene muchos predictores, en particular para la interpretabilidad. Sin embargo, cuando los predictores están correlacionados entre ellos (colinealidad) Lasso tiende a seleccionar uno de ellos y asignarle todo el peso, mientras que Ridge disminuye el peso de todos proporcionalmente. En este caso, Lasso es más inestable en sus resultados. Por lo general, Ridge es preferibles cuando hay muchas variables predictoras con menor peso que representan, mientras que Lasso funciona mejor cuando hay pocas variables con mucho peso. Sin embargo, dado que no sabemos la verdadera relación de las variables, tendremos que aplicar ambos modelos, con diferentes pesos, y utilizar una cross-validation para escoger el mejor. También podemos utilizar un método híbrido llamado Elastic Net que combina Lasso y Ridge.

En este caso utilizamos el parámetro 𝛼 para definir el peso de Lasso vs Ridge con un valor entre 0 y 1 (con 𝛼=1 estamos aplicado una regresión Lasso).
En conclusión, aunque utilicemos la combinación de Lasso y Ridge con Elastic Net, tendremos que utilizar una cross-validation para definir los parámetros alfa y lambda (que definen el peso de Lasso vs Ridge y el peso global de la penalización).
Ejemplos concretos
Para presentar un ejemplo concreto en R he preferido utilizar una situación con diferentes variables en lugar de utilizar la regresión polinomial utilizada anteriormente (dado que presenta algo más de complejidad para utilizarla con Lasso y Ridge). Cuantas más variables predictoras añadamos, más complejo será nuestro modelo por lo que podríamos utilizar una regularización. El ejemplo original lo puedes encontrar aquí: https://www.datacamp.com/tutorial/tutorial-ridge-lasso-elastic-net.
Vamos a utilizar el conjunto de datos mtcars disponible en R e intentaremos estimar las millas por galón en base a las características de los coches. En una primera fase, utilizaré la técnica de cross-validation para determinar el valor óptimo de lambda y luego utilizaré este valor para la regresión. Repetiré el proceso para Ridge y Lasso.
Empezamos con la regresión Ridge. Si descargas la plantilla R (mira al final del post), verás que he centrado los datos de la variable y (mpg = millas por galón) mientras que las variables predictoras, guardadas en la matriz X se estandarizan en el modelo mismo. Esta transformación es necesaria para la regresión Ridge dado que, de lo contrario, los coeficientes no se penalizarían de manera igual.
Con los resultados del cross-validation podemos analizar la media del error cuadrado en diferentes valores de lambda. El valor de lambda óptimo será el que corresponde al error menor en nuestro gráfico.