Recuerdo perfectamente la frustración. Tenía un modelo de clasificación que en mi conjunto de entrenamiento era una maravilla, un 99% de accuracy. Me sentía un genio. Luego, lo probaba con datos nuevos, del mundo real, y el rendimiento caía en picado, a veces por debajo del 60%. Aquello no solo era decepcionante; era inútil. Pasé muchas horas de depuración a las 3 de la mañana hasta que entendí que el problema no era un bug en mi código, sino un exceso de entusiasmo del propio modelo: estaba memorizando, no aprendiendo.
Ahí es donde entró la regularización en mi vida. Y, créeme, una vez que la adoptas, es difícil concebir un modelo de Machine Learning robusto sin ella. Para mí, la regularización no es un truco; es una parte fundamental de la higiene de cualquier proyecto de ML serio.
¿Qué demonios es la regularización y por qué la necesito?
Piénsalo así: cuando tu modelo aprende demasiado bien los datos de entrenamiento, hasta el punto de memorizar el ruido y las peculiaridades que no se generalizarán a datos nuevos, estás en problemas de overfitting. Hemos hablado de esto antes en Overfitting y Underfitting: Claves para Construir Modelos de Machine Learning Robustos.
La regularización es una técnica que añade una penalización a la función de coste del modelo. Esta penalización disuade al modelo de asignar pesos muy grandes a las características, forzándolo a ser más simple y, por lo tanto, a generalizar mejor. No queremos modelos complejos que se adapten a cada rincón del set de entrenamiento; queremos modelos que capturen la tendencia general, la esencia de los datos.
Mis herramientas favoritas: L1, L2 y Dropout
En mi caja de herramientas, tengo tres tipos de regularización que uso constantemente, cada una con su momento:
Regularización L2 (Ridge Regression)
Esta es mi caballo de batalla. La L2, también conocida como Ridge Regression, añade a la función de coste una penalización proporcional al cuadrado de la magnitud de los coeficientes de las características. ¿Qué consigue esto? Que los pesos tiendan a ser pequeños, cercanos a cero, pero rara vez los elimina por completo. Esto es genial para modelos con muchas características donde todas aportan algo, aunque sea poco. Hace que el modelo sea más estable y menos sensible a pequeñas variaciones en los datos de entrada.
Yo la uso por defecto en casi todos mis proyectos lineales o cuando veo que los coeficientes de mi modelo se están volviendo exageradamente grandes, lo que es una señal clara de que está intentando encajar cada punto a la perfección.
Regularización L1 (Lasso Regression)
Si L2 es mi herramienta para la estabilidad, L1, o Lasso Regression, es mi limpiador de características. A diferencia de L2, L1 añade una penalización proporcional al valor absoluto de los coeficientes. La magia de L1 es que puede reducir la magnitud de los coeficientes hasta cero, eliminando efectivamente las características menos importantes del modelo. Esto es brutalmente útil si sospechas que tienes muchas características irrelevantes o redundantes y quieres que el modelo te diga cuáles son realmente importantes. Es una forma elegante de hacer selección de características de forma automática.
Cuando estoy haciendo Ingeniería de Características y tengo una cantidad ingente de variables, L1 es lo primero que pruebo para ver qué sobrevive. Me ahorra mucho trabajo manual y me da una visión clara de qué realmente importa.
Dropout (para Redes Neuronales)
Si estás trabajando con redes neuronales, el Dropout es tu mejor amigo. Esta técnica es un poco diferente: durante el entrenamiento, se