Modelos sobreajustados (overfitting), desajustados (underfitting) y generalizados
Tags: machinelearning, spanish, ai, datascience
Published: 2022-09-29 14:11:28

## Motivación

El objetivo principal de un modelo es lograr el resultado correcto para la mayor cantidad de datos nuevos. En el presente post se pretende explicar algunos detalles a tener en cuenta para lograrlo

## Introducción

Despues que un modelo a sido entrenado, se desea que pueda predecir la mejor respuesta para la mayor cantidad de datos. Lograr este resultado puede ser complicado dependiendo del conjunto de datos que utilicemos para entrenar el modelo.

## Modelo desajustado (underfitting)

Un modelo se encuentra desajustado cuando es demasiado simple y no se puede adaptar a la complejidad del conjunto de datos de entrenamiento.

![Underfitting](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwrcgb7irc80y2qg7759.png)

Para resolver el problema podemos:
- Incrementar la complejidad del modelo
- Entrenar el modelo por un periodo mas largo de tiempo, (incrementar las épocas) para reducir el error

## Modelo sobreajustado (overfitting)

Un modelo se encuentra sobreajustado cuando memoriza detalles específicos de la data de entrenamiento y no logra generalizar sus predicciones.

![Overfitting](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cx7sfo1qlb1b06cylg11.png)

Los modelos sobreajustados funcionan bien con el conjunto de datos de entrenamiento, pero falla con datos nuevos (datos de prueba)

## Generalizado

Un modelo que realiza buenas predicciones durante el entrenamiento y las pruebas (conjuntos de datos que no ha visto antes) es considerado un buen modelo.

![Generalized](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4e03nd1k8dax6ytmncbi.png)

El objetivo es lograr modelos generalizados.

## ¿Como prevenir el sobreajustamiento (overfitting)?

1.- Realizar para temprana (early stopping)

- Deje de entrenar el modelo cuando observe que la pérdida de validación (validation loss) aumenta mientras que la pérdida de entrenamiento (training loss) disminuye. 

2.- Hacer regularizacion

- La regularización mejora la capacidad de generalización del modelo. Por ejemplo utilizar Regularizacion L1 (Lasso regression) o Regularizacion L2 (Ridge regression).

3.- Agregar mas conjuntos de datos

- Si incrementa el conjunto de datos de entreamiento el modelo podria generalizar mejor

4.- Realizar seleccion de caracteristicas

- Eliminar las caracteristicas de poco interes podria mejorar la capacidad de generalizacion del modelo

5.- Utilizar boosting y bagging (ensemble learning)

- Al combinar la votación de muchos modelos diferentes a través de bagging y boosting, mejorará la generalización del modelo.

6.- Agregar mas ruido

- Agregar ruido podría permitir que el modelo generalice mejor

7.- Usar la tecnica de expulsion (dropout technique)

- En el entrenamiento de redes neuronales artificiales, la eliminación de algunas neuronas mediante la técnica Dropout mejora la capacidad de generalización de las redes.

## Conclusión

La generalización es la característica mas importante a lograr en nuestro modelo, para lograrlo también es muy importante la cantidad y calidad de nuestros.