Conoce Atico34 - Solicita presupuesto
Inteligencia artificial

Overfitting. Qué es, causas, consecuencias y cómo solucionarlo

La construcción de un modelo de aprendizaje automático no se trata solo de alimentar los datos, hay muchas deficiencias que afectan la precisión de cualquier modelo. El overfitting en el aprendizaje automático es una de las deficiencias en el aprendizaje automático que dificulta la precisión y el rendimiento del modelo. En este artículo explicamos qué es el overfitting, cuáles son sus causas y consecuencias y cómo solucionarlo.

¿Qué es el overfitting en el aprendizaje automático?

Probablemente ya hayas experimentado, en la era del big data y la inteligencia artificial, una situación que se parece a la siguiente: comienzas a aprender un modelo de aprendizaje automático y obtienes resultados muy prometedores, después de lo cual rápidamente lanzas el modelo a producción. Sin embargo, unos días después, te das cuenta de que tus clientes te llaman para quejarse de los malos resultados de tus predicciones. ¿Qué sucedió?

Lo más probable es que hayas sido demasiado optimista y no hayas validado su modelo con la base de datos correcta. O más bien, no usaste tu base de aprendizaje de la manera correcta.

Cuando desarrollamos un modelo de machine learning, intentamos enseñarle cómo lograr un objetivo: detectar un objeto en una imagen, clasificar un texto según su contenido, reconocimiento de voz, etc. Para ello partimos de una base de datos que será utilizada para entrenar el modelo, es decir, para aprender a utilizarlo para lograr el objetivo deseado. Sin embargo, si no hacemos las cosas correctamente, es posible que el modelo considere como validado, solo los datos que se han usado para entrenar el modelo, sin reconocer ningún otro dato que sea un poco diferente a la base de datos inicial. Este fenómeno se llama overfitting en machine learning.

Se dice que un modelo estadístico está sobreajustado cuando lo entrenamos con muchos datos. Cuando un modelo se entrena con tantos datos, comienza a aprender del ruido y las entradas de datos inexactas en nuestro conjunto de datos. Entonces, el modelo no categoriza los datos correctamente, debido a demasiados detalles y ruido.

Las causas del sobreajuste son los métodos no paramétricos y no lineales porque estos tipos de algoritmos de aprendizaje automático tienen más libertad para construir el modelo basado en el conjunto de datos y, por lo tanto, realmente pueden construir modelos poco realistas. Una solución para evitar el overfitting es usar un algoritmo lineal si tenemos datos lineales o usar parámetros como la profundidad máxima si estamos usando árboles de decisión.

Conceptos clave

Para entender el overfitting, es necesario comprender una serie de conceptos clave.

Sweet spot

Sweet spot es el punto medio que debemos encontrar en el aprendizaje de nuestro modelo en el que nos aseguremos de que no estamos incurriendo en underfitting u overfitting, lo cual a veces puede resultar una complicada tarea.

El comportamiento de los modelos de aprendizaje automático con cantidades crecientes de datos es interesante. Si estás construyendo una empresa basada en el aprendizaje automático, en primer lugar, debes asegurarte de que más datos tle brinden mejores algoritmos.

Pero esa es una condición necesaria, no suficiente. También necesitas encontrar un punto óptimo donde:

  • No es demasiado fácil recopilar suficientes datos, porque entonces el valor de sus datos es pequeño.
  • No es demasiado difícil recopilar suficientes datos, porque entonces gastarás demasiado dinero para resolver el problema.
  • El valor de los datos sigue creciendo a medida que obtienes más datos.

Bias

Se trata de la diferencia entre los valores predichos y los valores reales o verdaderos en el modelo. No siempre es fácil para el modelo aprender de señales bastante complejas.

Imaginemos ajustar una regresión lineal a un modelo con datos no lineales. No importa qué tan eficientemente el modelo aprenda las observaciones, no modelará las curvas de manera eficiente. Se lo conoce como desajuste o bias.

De manera muy simple, un alto sesgo o bias indican que el modelo sufre de underfitting o subajuste.

Varianza

Se refiere a la sensibilidad del modelo a conjuntos específicos en los datos de entrenamiento. Un algoritmo de alta varianza producirá un modelo extraño que es drásticamente diferente del conjunto de entrenamiento.

Imagina un algoritmo que se adapte al modelo sin restricciones y súper flexible, también aprenderá del ruido en el conjunto de entrenamiento que causa el sobreajuste.

Un algoritmo de aprendizaje automático no puede percibirse como un método de una sola vez para entrenar el modelo, sino que es un proceso repetitivo.

Los algoritmos de baja varianza y alto sesgo son menos complejos, con una estructura simple y rígida.

  • Entrenarán los modelos que sean consistentes, pero en promedio inexactos.
  • Estos incluyen algoritmos lineales o paramétricos, como regresión, Naive Bayes, etc.

Los algoritmos de alta varianza y bajo sesgo tienden a ser más complejos, con una estructura flexible.

  • Entrenarán los modelos que son inconsistentes pero precisos en promedio.
  • Estos incluyen algoritmos no lineales o no paramétricos como árboles de decisión, vecino más cercano , etc.

Accuracy

La evaluación de tu algoritmo de aprendizaje automático es una parte esencial de cualquier proyecto. Tu modelo puede brindarte resultados satisfactorios cuando se evalúa con una métrica, por ejemplo, precision_score, pero puede dar resultados deficientes cuando se evalúa con otras métricas, como logarithmic_loss o cualquier otra métrica similar.

La mayoría de las veces usamos la precisión de clasificación para medir la precisión de nuestro modelo, sin embargo, no es suficiente para juzgar realmente nuestro modelo.

Accuracy es la relación entre el número de predicciones correctas y el número total de muestras de entrada.

Por ejemplo, considera que hay un 98% de muestras de clase A y un 2% de muestras de clase B en nuestro conjunto de entrenamiento. Entonces nuestro modelo puede obtener fácilmente una precisión de entrenamiento del 98% simplemente prediciendo cada muestra de entrenamiento perteneciente a la clase A.

Cuando se prueba el mismo modelo en un equipo de prueba con un 60% de muestras de clase A y un 40% de muestras de clase B, la precisión de la prueba se reduciría al 60%. La precisión de clasificación es excelente, pero nos da la falsa sensación de lograr una alta precisión.

¿Cuáles son sus causas?

Las causas del overfitting pueden ser complicadas. Generalmente, podemos categorizarlas en tres
tipos:

  • Aprendizaje de ruido en el conjunto de entrenamiento: cuando el conjunto de entrenamiento es demasiado pequeño o tiene menos datos representativos o demasiados ruidos. Esta situación hace que los ruidos tengan grandes posibilidades de ser aprendidos, y luego actuar como base de predicciones. Por lo tanto, un algoritmo que funcione bien debería poder distinguir los datos representativos de los ruidos.
  • Complejidad de la hipótesis: la compensación en complejidad, un concepto clave en el aprendizaje de la estadística y el mecanizado, es un compromiso entre Varianza y Sesgo. Eso se refiere a un equilibrio entre precisión y coherencia. Cuando los algoritmos tienen demasiadas hipótesis (demasiadas entradas), el modelo se vuelve más preciso en promedio con menor consistencia. Esta situación significa que los modelos pueden ser drásticamente diferentes en diferentes conjuntos de datos.
  • Múltiples procedimientos de comparación que son omnipresentes en los algoritmos de inducción, así como en otros Algoritmos de inteligencia artificial. Durante estos procesos, siempre comparamos varios elementos en función de puntuaciones de una función de evaluación y seleccionamos el elemento con la puntuación máxima. Sin embargo, este proceso probablemente elegirá algunos elementos que no mejorarán o incluso reducirán la precisión de la clasificación.

El overfitting puede tener muchas causas y normalmente es una combinación de las siguientes:

  • Modelo demasiado potente: por ejemplo, permite polinomios hasta el grado 100. Con polinomios hasta el grado 5, tendría un modelo mucho menos potente que es mucho menos propenso a sobreajustarse.
  • No hay suficientes datos: obtener más datos a veces puede solucionar problemas de sobreajuste.

¿Qué consecuencias negativas puede tener?

El sobreajuste u overfitting, en pocas palabras, significa tener en cuenta demasiada información de sus datos y / o conocimientos previos, y utilizarla en un modelo. Para hacerlo más sencillo, considera el siguiente ejemplo: algunos científicos te contratan para proporcionarles un modelo para predecir el crecimiento de algún tipo de plantas. Los científicos te han brindado información recopilada de su trabajo con dichas plantas durante todo un año, y continuamente te brindarán información sobre el desarrollo futuro de su plantación.

Entonces, revisa los datos recibidos y crea un modelo a partir de ellos. Ahora supón que, en tu modelo, has considerado tantas características como sea posible para averiguar siempre el comportamiento exacto de las plantas que viste en el conjunto de datos inicial. Ahora, a medida que continúa la producción, siempre tendrás en cuenta esas características y producirás resultados muy precisos. Sin embargo, si la plantación eventualmente sufre algún cambio estacional, los resultados que recibirás pueden ajustarse a tu modelo de tal manera que tus predicciones comenzarán a fallar.

Además de ser incapaz de detectar variaciones tan pequeñas y de clasificar sus entradas de manera incorrecta, el detalle del modelo, es decir, la gran cantidad de variables, puede hacer que el procesamiento sea demasiado costoso. Ahora, imagina que tus datos ya son complejos. Sobreajustar tu modelo a los datos no solo hará que la clasificación / evaluación sea muy compleja, sino que probablemente hará que te equivoques en la predicción por la más mínima variación que pueda tener en la entrada.

El sobreajuste es empíricamente malo. Supón que tienes un conjunto de datos que divides en dos, prueba y entrenamiento. Un modelo sobreajustado es aquel que tiene un rendimiento mucho peor en el conjunto de datos de prueba que en el conjunto de datos de entrenamiento. A menudo se observa que modelos como ese también, en general, funcionan peor en conjuntos de datos de prueba adicionales que los modelos que no están sobreajustados.

¿Cómo detectar el overfitting en un modelo predictivo?

Detectar el overfitting es casi imposible antes de probar los datos. Puede ayudar a abordar la característica inherente del sobreajuste, que es la incapacidad de generalizar conjuntos de datos. Por lo tanto, los datos se pueden separar en diferentes subconjuntos para facilitar el entrenamiento y las pruebas. Los datos se dividen en dos partes principales, es decir, un conjunto de prueba y un conjunto de entrenamiento.

El conjunto de entrenamiento representa la mayoría de los datos disponibles (alrededor del 80%) y entrena el modelo. El conjunto de prueba representa una pequeña parte del conjunto de datos (aproximadamente el 20%) y se utiliza para probar la precisión de los datos con los que nunca antes interactuó. Al segmentar el conjunto de datos, podemos examinar el rendimiento del modelo en cada conjunto de datos para detectar el sobreajuste cuando ocurre, así como ver cómo funciona el proceso de entrenamiento.

El rendimiento se puede medir utilizando el porcentaje de precisión observado en ambos conjuntos de datos para concluir sobre la presencia de sobreajuste. Si el modelo funciona mejor en el conjunto de entrenamiento que en el conjunto de prueba, significa que es probable que el modelo esté sobreajustado.

¿Cómo evitar el overfitting o sobreajuste?

A continuación, se muestran algunas de las formas de evitar el overfitting:

Entrenamiento con más datos

Es posible que esta técnica no funcione todas las veces. Básicamente, ayuda al modelo a identificar mejor la señal.

Pero en algunos casos, el aumento de los datos también puede significar alimentar más ruido al modelo. Cuando entrenamos el modelo con más datos, debemos asegurarnos de que los datos estén limpios y libres de aleatoriedad e inconsistencias.

Detención anticipada

Cuando el modelo se está entrenando, puedes medir el rendimiento del modelo en función de cada iteración. Podemos hacer esto hasta un punto en el que las iteraciones mejoren el rendimiento del modelo. Después de esto, el modelo sobreajusta los datos de entrenamiento a medida que la generalización se debilita después de cada iteración.

Entonces, básicamente, la detención anticipada significa detener el proceso de entrenamiento antes de que el modelo pase el punto donde el modelo comienza a sobreajustarse a los datos de entrenamiento. Esta técnica se utiliza principalmente en el aprendizaje profundo.

Eliminación de funciones

Aunque algunos algoritmos tienen una selección automática de funciones. Para un número significativo de aquellos que no tienen una selección de características incorporada, podemos eliminar manualmente algunas características irrelevantes de las características de entrada para mejorar la generalización.

Una forma de hacerlo es derivar una conclusión sobre cómo encaja una característica en el modelo. Es bastante similar a depurar el código línea por línea.

En caso de que una característica no pueda explicar la relevancia en el modelo, simplemente podemos identificar esas características. Incluso podemos usar algunas heurísticas de selección de características para un buen punto de partida.

Ensamblaje

Esta técnica básicamente combina predicciones de diferentes modelos de Machine Learning. A continuación se enumeran dos de los métodos más comunes para ensamblar:

  • El embolsado intenta reducir la posibilidad de sobreajuste de los modelos
  • Impulsar los intentos de mejorar la flexibilidad predictiva de modelos más simples

Aunque ambos son métodos de conjunto, el enfoque comienza totalmente en direcciones opuestas. Bagging usa modelos base complejos e intenta suavizar sus predicciones mientras que el impulso usa modelos base simples e intenta aumentar su complejidad agregada.

Parada anticipada

Cuando entrenas un algoritmo de aprendizaje de forma iterativa, puedes medir qué tan bien se desempeña cada iteración del modelo.

Hasta cierto número de iteraciones, las nuevas iteraciones mejoran el modelo. Sin embargo, después de ese punto, la capacidad del modelo para generalizar puede debilitarse a medida que comienza a sobreajustarse a los datos de entrenamiento.

La detención anticipada se refiere a detener el proceso de capacitación antes de que el alumno pase ese punto.

Hoy en día, esta técnica se utiliza principalmente en el aprendizaje profundo, mientras que otras técnicas se prefieren para el aprendizaje automático clásico.

Validación cruzada

La validación cruzada es una poderosa medida preventiva contra el sobreajuste.

La idea es inteligente: usa tus datos de entrenamiento inicial para generar múltiples divisiones de prueba de mini tren. Utiliza estas divisiones para ajustar tu modelo.

En la validación cruzada estándar de k veces, dividimos los datos en k subconjuntos, llamados pliegues. Luego, entrenamos iterativamente el algoritmo en k-1 pliegues mientras usamos el pliegue restante como conjunto de prueba (llamado “pliegue reservado”).

La validación cruzada te permite ajustar los hiperparámetros solo con su conjunto de entrenamiento original. Esto permite mantener tu conjunto de prueba como un conjunto de datos realmente invisible para seleccionar tu modelo final.