Sobreajuste.

Sobreajuste Sobreajuste

El sobreajuste ocurre cuando un algoritmo aprende en  exceso los detalles de los datos de entrenamiento, capturando no solo la esencia de la relación entre ellos, sino también el ruido aleatorio que siempre va a estar presente. Esto afecta negativamente su rendimiento y su capacidad de generalización cuando introduzcamos datos nuevos, no vistos durante el entrenamiento.

¿Sabíais que hay una teoría que sugiere que, si sincronizas el álbum The Dark Side of the Moon de Pink Floyd con la película El Mago de Oz, obtienes una experiencia audiovisual sorprendentemente coherente? Esta idea, conocida como «The Dark Side of the Rainbow,» ha fascinado a fanáticos y curiosos durante años. Se dice que desde el momento en que Dorothy empieza su viaje hacia la tierra de Oz, la música de Pink Floyd parece coincidir misteriosamente con la acción de la película. ¿Coincidencia? ¿O algo más profundo?

Es aquí donde entra en juego la apofenia, ese fenómeno psicológico en el que los llamados seres humanos encontramos patrones significativos en datos aleatorios. La forma más común de apofenia es la pareidolia, la cual sucede cuando vemos imágenes de rostros o de animales donde no los hay. ¿Quién no ha visto alguna vez un precioso cerdito donde no hay más que una inocente nube?

La fascinación por «The Dark Side of the Rainbow» es un ejemplo perfecto de cómo nuestra mente busca y encuentra conexiones incluso donde no las hay. Mientras Dorothy sigue el camino de ladrillos amarillos, nuestro cerebro tiende a crear narrativas, buscando darle sentido a todo, desde las letras de las canciones hasta los cambios de ritmo en la música.

¿Y qué tiene que ver esto con la estadística? Pues más de lo que uno podría pensar, en realidad. La apofenia es una trampa común de la que pueden ser presa los algoritmos que tratan de interpretar nuestros datos, por lo que es importante que seamos conscientes de ella. Claro que, en este mundo de datos y patrones, hemos inventado otra palabra que, mucho menos sonora, se ha hecho más celebre que la apofenia: el sobreajuste (overfitting, para los que prefieran el inglés).

En la entrada de hoy exploraremos cómo esta tendencia natural puede influir en la investigación y el análisis de datos, llevándonos a ver patrones que no existen y sacando conclusiones precipitadas. Así que, al igual que con «The Dark Side of the Rainbow,» hay que estar alerta y ser críticos para no dejarnos llevar por la magia de las coincidencias.

Aprende de los datos, pero no los memorices

¡Cuánto más sencillo sería todo si pudiésemos dar este consejo de una manera directa a nuestros algoritmos cuando empiezan a entrenarse con los datos! Poder hacer esto ayudaría a marcar la diferencia entre conseguir modelos que hagan predicciones útiles o, por el contrario, desarrollar otros totalmente inútiles.

Para aclarar un poco las cosas, recordemos que un algoritmo es un conjunto de instrucciones secuenciales diseñadas para resolver un problema específico o realizar una tarea. Tomemos, como ejemplo, uno muy sencillo: la regresión lineal simple.

Un modelo de regresión lineal simple trata de predecir el valor de una variable dependiente (y) en función del valor conocido de una variable independiente (x), según la siguiente ecuación, de todos conocida:

y = a + bx

En un modelo como este tenemos dos parámetros, a y b (el intercepto y la pendiente de la recta), que nos permitirán estimar el valor de y para un valor de x determinado. Nuestra función será encontrar los valores de los parámetros que nos permitan una mejor estimación.

En este caso podríamos optar por resolver los coeficientes utilizando el método de los mínimos cuadrados, ya que disponemos de una solución algebraica conocida. Pero hay otra forma de hacerlo, que es construir un algoritmo y entrenarlo con una muestra de datos para que encuentre estos valores óptimos para los coeficientes.

En un abordaje típico de aprendizaje automático supervisado, se introducen los valores de «𝑥» y se indica al algoritmo los valores de «𝑦» que debe predecir, para que ajuste los coeficientes para minimizar el error de predicción.

Durante el entrenamiento, el algoritmo aprende de los datos los mejores parámetros para el modelo. Comienza con valores aleatorios, compara la predicción con el valor esperado, mide el error y ajusta los parámetros iterativamente para reducir el error al mínimo posible. En resumen, el algoritmo aprende la relación entre los datos y encuentra los valores óptimos de los parámetros del modelo.

El problema del sobreajuste

El sobreajuste ocurre cuando un algoritmo aprende demasiado bien los detalles de los datos de entrenamiento, capturando no solo la esencia de la relación entre ellos (si existe relación, claro está), sino también el ruido aleatorio que siempre va a estar presente.

Esto afecta negativamente su rendimiento cuando introduzcamos datos nuevos, no vistos durante el entrenamiento. Siguiendo el símil entre “aprender” y “memorizar”, el algoritmo «memoriza» los datos de entrenamiento en lugar de «aprender» de ellos. Esto significa que el modelo funcionará excepcionalmente bien en el conjunto de datos que ha visto antes, pero fallará al generalizar cuando se le presenten nuevos datos.

Pensad un momento en la importancia del problema. Nosotros disponemos de una muestra de datos, pero nuestro interés no está en que haga predicciones sobre esa muestra (de hecho, conocemos el valor de “y” que debe predecir), sino sobre nuevos datos en los que el valor de “y” sea desconocido.

Siempre podemos hacer que el algoritmo aprenda los datos de memoria, incluso si le damos un conjunto de datos aleatorios, sin ninguna relación o patrón existente, pero esto carecerá de utilidad para hacer nuevas predicciones.

La solución está en los datos

Vamos a ver cómo tenemos que organizar nuestros datos durante la fase del entrenamiento para evitar que se produzca sobreajuste del modelo.

Lo primero será obtener un conjunto de datos representativo del problema que se quiere resolver. Después tendremos que limpiar y transformar los datos en el formato más adecuado para el algoritmo que queramos entrenar (valores faltantes o anómalos, normalización, codificación de variables cualitativas, etc.).

Una vez que los datos están preparados, los dividimos en tres lotes: entrenamiento, validación y prueba. Suele dejarse una mayor proporción para entrenamiento, entre un 60-80%, según cada caso, y el resto para validación y prueba.

Ya estamos listos. Empezamos el entrenamiento con el conjunto de datos de, ¡oh sorpresa!, entrenamiento.

Entrenamiento

El algoritmo empieza a dar vueltas de manera iterativa, ajustando sus parámetros en cada vuelta para disminuir de forma progresiva el error de las predicciones. ¿Cuándo paramos este proceso y dejamos de dar vueltas? Dependerá de los datos y de la naturaleza del algoritmo, pero si podemos razonar cómo elegir el momento óptimo para cada caso.

Si paramos muy pronto, el algoritmo no habrá ajustado sus parámetros todo lo posible, con lo que el modelo resultante hará predicciones menos precisas que las que podríamos haber conseguido. Durante esta primera fase del entrenamiento se produce un subajuste (underfitting), en la que aún no hemos conseguido el mejor rendimiento posible.

Por otra parte, si paramos muy tarde y el algoritmo realiza más iteraciones de las necesarias, llegará un momento en que dejará de aprender de los datos y comenzará a aprendérselos de memoria. Hemos entrado en el terreno del sobreajuste: el error del algoritmo con los datos de entrenamiento tenderá a cero, pero también disminuirá su capacidad de predicción con datos nuevos.

Parece evidente que hay que parar en el momento justo, ni muy pronto y sufrir de subajuste, ni demasiado tarde y padecer de sobreajuste. ¿Cómo lo hacemos? Pues ayudándonos del conjunto de datos que reservamos para validación.

Validación

La solución es realizar el entrenamiento de manera simultánea con los datos de entrenamiento y validación. El truco, utilizar solo los datos de entrenamiento para ajustar los parámetros del algoritmo. La pista de cuando terminar el entrenamiento nos la dará la representación gráfica de la exactitud de las predicciones y la magnitud del error en función de las iteraciones del algoritmo, tal cómo se muestra en la siguiente figura.

Sobreajuste

El gráfico representa las iteraciones del algoritmo (eje x) frente al error de la predicción en cada iteración (parte superior) y la exactitud de las predicciones (parte inferior), tanto para los datos de entrenamiento (en color rojo) como para los de validación (color azul).

Vamos a fijarnos primero en los datos de entrenamiento. Tal cómo hemos explicado, a medida que progresa el número de iteraciones, el error va disminuyendo cada vez más hasta tender a un valor mínimo próximo a cero, mientras que la exactitud va aumentando, más o menos rápido al inicio y estabilizándose en un valor máximo tras cierto número de iteraciones.

Hasta aquí no hay sorpresas, pero, si nos fijamos, no ocurre lo mismo con los datos de validación. La clave está en recordar que el ajuste de los parámetros se hace con los datos de entrenamiento. Al principio, el algoritmo aprende los datos y va capturando la relación entre ellos. Como los datos de validación son de la misma muestra que los de entrenamiento, ocurre el mismo fenómeno con el error y con la exactitud de las predicciones.

Pero llega un momento en que el algoritmo deja de aprender y comienza a memorizar: entramos en la fase de sobreajuste. A partir de aquí, lo que hace es capturar el ruido de los datos de entrenamiento, por lo que los resultados con los datos de validación dejan de ser tan buenos: la exactitud se estanca en un valor inferior al de la exactitud de los datos de entrenamiento y la tasa de error deja de disminuir o, incluso, aumenta, empeorando el rendimiento del algoritmo con los datos de validación.

Como veis en el gráfico, marcado con la línea vertical discontinua, esto ocurre a partir de las 5 iteraciones del algoritmo. Hasta ahí, estábamos en subajuste. A partir de ahí, entramos en sobreajuste. Yo diría que el mejor modelo para este caso se puede conseguir con 5-6 iteraciones del algoritmo. No solo no hacen falta más, sino que empeoraríamos su rendimiento con datos nuevos.

Prueba

Nos queda un conjunto de datos que no hemos utilizado aun: el conjunto de prueba. Los más despiertos ya os imaginaréis para que los hemos guardado. Efectivamente, para probar el modelo una vez entrenado.

Os preguntaréis por qué hay que hacer otra verificación del rendimiento del modelo, si ya lo hemos hecho con los datos de validación. La razón es porque el modelo se ha entrenado ajustando sus parámetros tendiendo en cuenta también sus resultados con los datos de validación. Esto hace que parte de la información de los datos de validación se «filtre» en el entrenamiento, por lo que lo correcto es, una vez entrenado, medir su desempeño con un conjunto de datos no utilizado hasta ahora: los datos de prueba.

Por regla general, el rendimiento será más alto con los datos de entrenamiento, seguido de los datos de validación y, en tercer lugar, los de prueba.

Y aquí no acaba la cosa. Para poder generalizar mejor la capacidad del modelo para la tarea para la que ha sido desarrollado, habrá que hacer una validación externa con datos nuevos que provengan de una población diferente de la que obtuvimos los datos de entrenamiento, validación y prueba.

Sobreajuste ¿amigo o enemigo?

Llegados a este punto podemos pensar que el sobreajuste de los modelos es un enemigo que batir en nuestra lucha por obtener las mejores predicciones con nuestros datos, pero pensemos un momento si nos interesa librarnos de él.

Cuando empezamos el entrenamiento, estamos en fase de subajuste. Si paramos aquí, el modelo será mejorable y funcionará a un nivel subóptimo. ¿Cuándo sabemos cuál es el punto óptimo hasta el cual entrenar? Es evidente, cuando empieza a haber sobreajuste, o un poco antes.

Está claro, no solo no nos interesa prescindir de él, sino que la capacidad de un modelo para hacer sobreajuste de los datos es esencial para conseguir el modelo óptimo.

Una vez más, en el punto medio está la virtud. Nos interesa que el modelo pueda sobreajustar, pero no demasiado. Existen razones diversas que pueden llevar a un modelo a hacer un sobreajuste excesivo.

Una de ellas es la complejidad del modelo. Cuánto más complejo, más probable es que haya riesgo de sobreajuste. Las redes neuronales profundas con muchas capas o los árboles de decisión con gran profundidad tienen la capacidad de capturar incluso las más mínimas variaciones en los datos de entrenamiento. Esto puede llevar a que el modelo no solo aprenda las relaciones verdaderas en los datos, sino también el ruido y las irregularidades.

Otro problema frecuente es el de contar con datos insuficientes para el entrenamiento del modelo. Si el conjunto de datos de entrenamiento es pequeño, el modelo no tendrá suficiente información para aprender patrones generales. En cambio, aprenderá los detalles específicos del conjunto de datos limitado, lo que llevará al sobreajuste.

Para muchos de estos problemas existen técnicas que nos ayudan a mitigar el riesgo de sobreajuste excesivo.

Lo primero sería utilizar un modelo menos complejo o, en su defecto, intentar simplificar el modelo que pretendemos entrenar.

Cuando los datos sean insuficientes podemos recurrir a técnicas de aumento de datos, como se hace con frecuencia en algunos modelos de visión por computadora que emplean redes neuronales convolucionales. En cualquier caso, siempre se debe cuidar la calidad de los datos, procesándolos de manera adecuada, recodificando variables, etc.

Cuando hay pocos datos para dividirlos en los tres subconjunto que hemos mencionado, podemos utilizar técnicas de validación cruzada. Estas dividen el conjunto de datos en múltiples subconjuntos y entrena el modelo varias veces, cada vez utilizando un subconjunto diferente como conjunto de prueba. Esto ayuda a asegurar que el modelo generalice bien a diferentes partes de los datos.

Por último, ya hemos visto cómo la parada temprana del entrenamiento es una de las armas más potentes que tenemos para evitar que se haga un sobreajuste excesivo de los datos, arruinando la capacidad de generalizar del modelo obtenido.

Nos vamos…

Y aquí vamos a dejar los ajustes por hoy.

Hemos visto que el sobreajuste supone un desafío común y crítico en el entrenamiento de algoritmos que, aunque ya estaba presente en los modelos estadísticos más clásico, cobra especial importancia con los modelos más complejos de aprendizaje automático y aprendizaje profundo que se desarrollan en la actualidad.

Comprender cómo se produce y aplicar las técnicas adecuadas para prevenirlo es esencial para construir modelos que no solo funcionen bien con datos conocidos, sino que también sean capaces de generalizar a datos nuevos. Recordemos siempre: aprender de los datos es esencial, pero memorizar cada detalle puede ser contraproducente. En la estadística y la ciencia de datos, como en la vida, el equilibrio es la clave.

Hemos visto someramente algunas estrategias para mantener el sobreajuste a raya, pero no hemos hablado nada de algunas técnicas que se utilizan con los modelos más complejos, como son las técnicas de regularización, que penalizan la complejidad del modelo, desalientan el sobreajuste excesivo de los datos de entrenamiento y favorecen la generalización de los resultados con datos nuevos. Pero esa es otra historia…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Manuel Molina Arias.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Aleph que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Antes de aceptar puedes ver Configurar cookies para realizar un consentimiento selectivo.    Más información
Privacidad