Underfitting vs Overfitting
west

Underfitting vs Overfitting

Qué es, causas, cómo detectarlo y solucionarlo


Nodd3r
6 de Septiembre de 2022 . 10 min
 ...


Si has llegado hasta aquí, asumimos que ya tienes ciertas nociones sobre lo que conocemos como machine learning y deep learning.

De lo contrario, te recomendamos que leas nuestros posts relacionados Deep learning y redes neuronales y ¿Qué es el machine learning y qué aplicaciones tiene?

En resumidas cuentas, machine learning es una rama dentro de la inteligencia artificial la cual pretende, mediante una serie de algoritmos, brindar a nuestra computadora de la capacidad de identificar patrones en un conjunto masivo de datos y realizar predicciones.

Y dentro del machine learning tenemos a su vez, como si de una matrioshka rusa se tratase, el deep learning.ç

Entendamos el deep learning como un tipo de machine learning basado en redes neuronales que entrena a nuestro modelo para que realice tareas como lo haría un ser humano. Pero nosotros no queremos que nuestro modelo se limite a responder a través de una serie de ecuaciones predefinidas, ¿verdad? Nosotros queremos que nuestro modelo ¡PIENSE!, queremos que sea capaz de aprender por su cuenta y esto se logra mediante el uso de capas de procesamiento. 

Pero, ¿qué ocurre cuando sobreentrenamos nuestro modelo? ¿Y si generalizamos demasiado el conocimiento que pretendemos que el modelo adquiera? 


¿QUÉ ES UNDERFITTING?

La traducción al castellano sería sub-ajuste y el problema no vendría a ser otro que el anteriormente mencionado: Generalizar en exceso los inputs que introducimos en el modelo siendo poco precisos con los conocimientos que pretendemos que adquiera. 

Para entenderlo fácil, supongamos que nosotros jamás hemos visto ninguna fruta. Un día, de repente, llega un amable señor y nos ofrece una naranja. Curiosos e ignorantes de nosotros, preguntamos: ¿Esto qué es? a lo que el amable señor responde: Esto es una fruta. Al día siguiente nos encontramos al mismo amable señor y nos ofrece esta vez un plátano: ¿Te apetece fruta? A lo que nosotros le respondemos confundidos: Perdona, eso no es una fruta, la fruta es naranja y redonda. 

Tanto el plátano como la naranja son frutas, pero el plátano no se parece en nada a las características con que el amable señor nos describió la fruta el día anterior.

Sin embargo, supongamos ahora que ese hombre era el dueño de una frutería y al ofrecernos una pieza de fruta nos da a elegir entre: naranjas, melocotones, plátanos, kiwis, pomelos... Probablemente, la próxima vez que viéramos un tipo de fruta que desconocíamos hasta la fecha, seríamos capaces de reconocer esa nueva fruta como "fruta" al identificar características en común con el resto de frutas que ya conocíamos.

Esto es así porque como seres humanos somos capaces de conceptualizar y es lo que pretendemos que sea capaz de hacer un modelo cuando lo entrenamos. No obstante, si somos bastante genéricos o escuetos a la hora de introducir un conjunto de datos en nuestro modelo, el algoritmo no será capaz de ofrecernos un resultado bueno debido a la falta de recursos por parte del sistema para consolidar su conocimiento, abstraerse o generalizar.

A este problema se le conoce como sub-ajuste o underfitting. 



Causas del underfitting:

El problema de sub-ajuste o underfitting durante el entrenamiento del modelo puede venir determinado por una o más de las siguientes causas:

  • No hay suficientes parámetros para modelar adecuadamente los datos.
  • El algoritmo de aprendizaje automático no ha tenido suficiente tiempo para entrenar.
  • Baja entropía en el conjunto de datos de entrenamiento del modelo.


¿Cómo detectar underfitting?

Hemos mencionado anteriormente que cuando un modelo es demasiado simple con respecto a los datos que pretende modelar nos referimos a un problema de underfitting. Si nuestro modelo funciona mejor con el conjunto de datos de prueba que con el conjunto de datos de entrenamiento probablemente estemos incurriendo en underfitting.


¿Cómo solucionar el subajuste o underfitting?

Una vez sabemos que nuestro modelo sufre un sub-ajuste una de las soluciones más obvias sería ampliar el conjunto de datos de entrenamiento. De esta manera se estaría forzando al modelo a trabajar con patrones más complejos y ayudar así a reducir el underfitting. Sin embargo no siempre podemos ampliar el conjunto de datos. A veces el conjunto de datos es limitado y acceder a más de ellos no es posible. ¿Qué haríamos en estos casos? 

Podríamos generar datos sintéticos, técnica conocida como Data Augmentation. Una aplicación recurrente mediante este enfoque es la manipulación de imágenes, a partir de las imágenes ya existentes en nuestro dataset podemos girarlas, recortarlas, hacerles zoom... para la obtención de nuevas imágenes.


¿QUÉ ES OVERFITTING?

Supongamos ahora el caso contrario. Imaginemos que entrenamos al modelo con frutas como puedan ser: naranjas, mandarinas, caquis, melocotones, albaricoques... y tras el entrenamiento le mostramos una sandía. 

Nuestro modelo no reconocerá la sandía como fruta porque una característica inherente a los ejemplos de fruta con los que entrenó es el color "naranja". La sandía no cumple con las características que el modelo aprendió durante el entrenamiento (la condición de ser estrictamente naranja).

Así es que, cuando nos refiramos al sobre-ajuste u overfitting, de lo que estamos hablando realmente es de una deficiencia que dificulta la precisión y rendimiento del modelo.

Como concepto, esta es la esencia del overfitting. No obstante, hay una serie de conceptos estadísticos con los que te recomiendo familiarizarte si estas pensando entrenar un modelo. Para entender el sesgo existente entre los valores que introducimos y los que nos devuelve el modelo es necesario entender los siguientes términos:

  • Sweet spot: el punto de equilibrio que debemos encontrar en el aprendizaje del modelo en el que nos aseguremos de no incurrir en underfitting u overfitting.
  • BIAS:  El BIAS o sesgo puede interpretarse como un modelo que no ha tenido en cuenta toda la información disponible en el dataset, de manera que niveles altos de BIAS indicaría un sub-ajuste o underfitting dentro del modelo. Esto ocurre cuando el modelo es demasiado simple para el problema que se quiere solucionar.
  • Varianza: Indica la sensibilidad del modelo a conjuntos específicos en los datos de entrenamiento. Un algoritmo de alta varianza también aprenderá del ruido en el conjunto de entrenamiento que produce el sobreajuste.


Causas del overfitting:

A continuación dejamos algunos factores frecuentes que pueden provocar el sobre-ajuste del modelo

  • Modelo demasiado potente: Cuantas más entradas se le añaden  al algoritmo (por entradas nos referimos a hipótesis), el modelo se vuelve más preciso pero por contra menos consistente. Dicho de otra manera tenemos que encontrar el equilibrio entre varianza y sesgo para que exista un equilibrio también entre la precisión y la coherencia de lo que se esta midiendo. De lo contrario, podemos encontrarnos con la situación de que los modelos pueden ser radicalmente distintos si cambiamos el conjunto de datos. Ejemplo: Un modelo que permita polinomios de hasta grado 100 será más potente que uno que permita solo polinomios de hasta grado 10, no obstante, el segundo será mucho menos propenso al sobre-ajuste.
  • Aprendizaje del ruido en el conjunto de entrenamiento: ocurre cuando el conjunto de entrenamiento es demasiado pequeño, el conjunto de datos tiene poca representatividad o hay demasiados ruidos (entiéndase como ruido estadístico esa variabilidad inexplicable dentro de una muestra de datos). Un algoritmo de aprendizaje automático debería ser capaz de discernir los ruidos de las variables representativas pero cuando se da alguna de las situaciones mencionadas los ruidos pueden ser tomados como valores representativos dentro de la curva de aprendizaje del algoritmo y actuar como base de predicciones.


¿Cómo detectar el overfitting?

Dentro del deep learning o aprendizaje profundo la incapacidad del modelo para generalizar conjuntos de datos es uno de los problemas más frecuentes con los que nos encontraremos. Dicha incapacidad de generalizar conjuntos de datos es una característica intrínseca de lo que denominamos sobr-ajuste del modelo y resulta prácticamente imposible detectarlo sin antes probar los datos. 

Sin embargo, si hay algo que podamos hacer para concluir la presencia de overfitting.

Dividimos el conjunto principal de datos en dos subconjuntos: Conjunto de datos de entrenamiento (80% aprox. del conjunto principal) y conjunto de datos de prueba (20% aprox del conjunto principal). 

El conjunto de entrenamiento contiene la mayoría de datos disponible y es con el que entrenamos el modelo mientras que el conjunto de prueba tiene una representación mucho menor y se utiliza para probar la precisión del modelo con datos con los que no actuó anteriormente. 

Mediante la segmentación de los datos en subconjuntos podemos medir la precisión del modelo en cada conjunto para determinar la existencia de sobre-ajuste. Si el modelo funciona claramente mejor con el conjunto de entrenamiento que en el conjunto de prueba, probablemente nos encontremos ante un caso de overfitting.


¿Cómo solucionar el overfitting o sobreajuste del modelo?

Veamos algunas de las técnicas más frecuentes para lidiar con el sobre-ajuste de un modelo.

  • Simplificación del modelo: La manera de lograrlo dependera del método de machine learning utilizado. En caso de trabajar con redes neuronales habríamos de disminuir el numero de capas o neuronas. Podemos lograr este objetivo mediante el uso de técnicas como el Dropout que consistiría en la eliminación de neuronas de la red neuronal basándonos en la probabilidad dada por la distribución de Bernoulli; o bien mediante Early Stopping. La técnica Early Stopping o Parada Temprana consiste en evaluar el modelo durante el entrenamiento tanto en el conjunto de entrenamiento como en el conjunto de prueba. Al principio lo lógico y más probable es que el modelo mejore rendimientos en ambos conjuntos sin embargo, llegará un punto en el que el modelo mejore en el conjunto de entrenamiento pero comience a empeorar en el conjunto de prueba. Utilizando este método de regularización de modelos lineales, este es el punto que denominamos de Parada Temprana para evitar el sobre-ajuste. 
  • Data Augmentation: Generación de nuevos datos a partir de los ya existentes. Aplicable normalmente a imágenes como vimos anteriormente.
  • Eliminación del ruido del conjunto de entrenamiento: Cuando recibimos los datos antes de entrenar al modelo debemos realizar lo que se conoce como Data Cleaning y no es otra cosa que depurar el modelo limpiándolo de impurezas eliminando outliers, estandarizando los datos y eliminando toda información irrelevante que pueda añadir ruido a nuestro modelo. Una mala limpieza de datos del modelo antes de ponernos a trabajar con él puede generar overfitting.
  •  Conseguir más datos: No siempre es fácil o posible, pero siempre que se pueda aumentar el numero de observaciones puede ayudar a solucionar el problema y si no es el caso, habrá que recurrir a alguna de las otras metodologías mencionadas.
  • Transfer Learning: Puede darse el caso en el que no sea posible conseguir más datos ni generarlos y que el sobre-ajuste venga determinado por la escasez de datos a nuestra disposición. En estos casos se puede coger un modelo ya entrenado y funcional, que tenga una función similar al que estamos intentando entrenar y reentrenarlo con el conjunto de datos de entrenamiento actual.


Y hasta aquí todos los conceptos y diferencias clave entre el overfitting y underfitting.

X

¿Quieres recibir el eBook de Conceptos básicos de Data Science?



¡Descargar aquí el eBook en PDF GRATIS!


También te puede interesar





...
¿Merece la pena estudiar Data Science?

Teniendo en cuenta que la ciencia de datos está considerada como una de las ciencias más destacadas de la actualidad, ¿merece la pena estudiar un máster en ciencia de datos? Quédate leyendo este post si quieres saber por qué.

...
TOP 12 IDEAS PROYECTOS DE PYTHON PARA PRINCIPIANTES

¿Quieres empezar a realizar proyectos de Python pero no tienes ideas o simplemente te parecen muy difíciles los proyectos que encuentras?

...
FORMAS FÁCILES DE OBTENER DATOS PARA ENTRENAR MODELOS DE IA Y MACHINE LEARNING

La calidad y cantidad de los datos influye notablemente en los resultados que se obtienen, ¿quieres saber de dónde puedes obtener datos para tus modelos?

...
¿Cuánto gana un Data Scientist?

El salario: Uno de los motivos por los que deberías de aprender Data Science, proyectos de Machine Learning y Deep Learning para convertirte en Data Scientist.

...
Qué son y diferencias entre bases de datos SQL y bases de datos NoSQL

Aquí encontrarás unas breves pinceladas sobre qué son verdaderamente las bases de datos y qué tipos hay, además de las diferencias entre las bases de datos SQL y NoSQL.

...
Keras vs TensorFlow vs PyTorch: Diferencias clave entre frameworks de Deep Learning

En las últimas décadas, el Deep Learning está ganando popularidad.

...
Ventajas de aprender a programar en Python

A día de hoy, Python es el lenguaje de programación más usado. Si aún estás dudando de sus múltiples ventajas, en este post encontrarás algunas de las razones por las que deberías aprender a programar en Python

...
¿Cómo elegir el mejor modelo de machine learning?

Si estás pensando en crear un proyecto de machine learning, tienes que tener en cuenta que no siempre tener un modelo con mejor rendimiento será tu mejor solución.

...
Test de Turing

Qué es, cómo funciona y limitaciones del Test de Turing

...
Tipos de redes neuronales

El futuro de la Inteligencia Artificial ha llegado.

...
Underfitting vs Overfitting

Qué es, causas, cómo detectarlo y solucionarlo

...
Data Science: qué es, qué se hace, qué se necesita y aplicaciones

Descubre qué es la ciencia de datos, para qué sirve y qué salidas tiene

...
Chatbot: ¿Qué es, para qué sirve y qué tipos existen?

Un chatbot es mucho más que un servicio de mensajería automática, pero... ¿sabes todo lo necesario sobre ellos?

...
¿Cómo funciona el algoritmo y el sistema de recomendación de Spotify?

¿Quieres saber cómo funciona el algoritmo de recomendación de Spotify? Descubre los tres modelos en los que se apoya su sistema de recomendación: Modelo de Filtrado Colaborativo, Modelo de Procesamiento del Lenguaje Natural y Modelo de Audio Sin Procesar

...
Errores más comunes en Python

Si quieres aprender a programar en Python o ya has empezado y quieres conocer los errores más comunes que se cometen, te invitamos a que leas este post.

...
¿Cómo hacer un proyecto de Data Science de forma eficiente?

En el post de hoy te vamos a dar algunos consejos para que puedas sacar el máximo partido a tu tiempo mientras desarrollas un proyecto de Data Science.

...
¿Qué es Git?

¿Conoces Git? ¿Sabes lo que es un sistema de control de versiones? Si te gusta la programación, desarrollar tus propios proyectos, el desarrollo de software, etc. seguro que has leído algo sobre Git. Hoy te contamos todos los detalles acerca de esta herramienta.

...
¿Por qué se utiliza Python en Data Science?

Si quieres saber a qué se debe la alta demanda de Python en Data Science y cómo se utiliza, no te pierdas esta nueva entrada a nuestro blog.

...
Cómo usa Netflix la Inteligencia Artificial para recomendar series

A través de su algoritmo de recomendación Netflix predice qué contenidos te van a gustar. Si quieres saber cómo funciona no te pierdas este blog.

...
Los 10 mejores proyectos de Machine Learning si eres Principiante

¿Quieres descubrir qué proyectos reales de Machine Learning puedes hacer si eres principiante?¿Quieres aplicar tus conocimientos de Machine Learning? ¿No sabes por dónde empezar? En el post de hoy te contamos 10 proyectos de ML que puedes hacer si eres principiante.

...
¿Cuál es la diferencia entre la Inteligencia Artificial y el Machine Learning?

¿Son la Inteligencia Artificial y el Machine Learning lo mismo? Si son dos conceptos distintos, ¿de qué forma están relacionados? Estas son algunas de las preguntas que mucha gente se hace, en el post de hoy veremos las diferencias entre ambos y la relación que tienen.

...
¿Qué es Inteligencia Artificial?

En este post hablamos un poco de la historia de la inteligencia artificial, qué es, los tipos que hay, sus aplicaciones y sus ventajas e inconvenientes.

...
¿Cómo aplicar Data Science en áreas como Marketing, Biología, Justicia y Arqueología?

El uso de la ciencia de datos está muy extendido, en el blog de hoy vamos a ver cómo podemos usarla en distintas áreas.

...
Deep Learning y Redes Neuronales Artificiales

En este post encontrarás que es el deep learning y todo lo que necesitas para poder comprender su funcionamiento y sus utilidades.

...
Historia del Data Science

En este post hacemos un repaso por la historia de la Ciencia de Datos, cómo surgió y cómo fue evolucionando.

...
¿Qué es el Machine Learning y qué aplicaciones tiene?

En este post vamos a hablar sobre Machine Learning, qué es y cuáles son algunas de sus aplicaciones.

...
¿Cómo el data science y el big data puede ayudar a tu negocio?

En este post vamos a hablar sobre cómo la ciencia de datos puede ayudar a mejorar un negocio.

...
¿Qué se necesita saber para ser Data Scientist?

En este post te hacemos un resumen sobre los conocimientos necesarios para trabajar como científico de datos.

...
¿Por qué estudiar Data Science?

En este post, te damos las claves de la importancia de estudiar ciencia de datos.

...
¿Cómo proteger nuestros datos?

En este post, te dejamos alguna información y trucos que puedes hacer para proteger mejor tus datos

...
¿Qué es Data Science?

Si no sabes lo que es la la ciencia de datos, ni para qué sirve, te lo contamos en este post.

...
¡Bienvenidos Nodd3rs!

¡Bienvenidos a nuestro blog!

whatsapp