Introducción al Overfitting
El sobreajuste es un comportamiento de Machine Learning que ocurre cuando el modelo está alineado tan estrechamente con los datos de entrenamiento que no sabe cómo responder ante datos nuevos. El sobreajuste puede ocurrir porque:
- El modelo de Machine Learning es demasiado complejo y memoriza patrones extremadamente sutiles en los datos de entrenamiento que no se pueden aplicar a nuevos datos.
- Los datos de entrenamiento no son suficientes para la complejidad del modelo, o bien contienen gran cantidad de información irrelevante.
Gestionar la complejidad del modelo y mejorar el conjunto de datos de entrenamiento son dos formas de evitar el sobreajuste.
Sobreajuste y subajuste
El subajuste, contrario al sobreajuste, ocurre cuando el modelo no se alinea bien con los datos de entrenamiento o no logra aplicar patrones a datos nuevos. El sobreajuste y el subajuste pueden ocurrir tanto en modelos de clasificación como de regresión. La siguiente figura muestra cómo el límite de decisión de clasificación y la línea de regresión siguen los datos de entrenamiento demasiado cerca para un modelo sobreajustado, y no lo suficiente para un modelo subajustado.
Cuando solo se observa el error calculado de un modelo de Machine Learning para los datos de entrenamiento, es más difícil detectar el sobreajuste que el subajuste. Por lo tanto, para evitar el sobreajuste, es importante validar un modelo de Machine Learning antes de utilizarlo con datos de prueba.
Error |
Sobreajuste |
Ajuste correcto |
Subajuste |
Entrenamiento |
Bajo |
Bajo |
Alto |
Pruebas |
Alto |
Bajo |
Alto |
Con MATLAB®, Statistics and Machine Learning Toolbox™ y Deep Learning Toolbox™, puede evitar el sobreajuste de modelos de Machine Learning y Deep Learning. MATLAB proporciona funciones y métodos diseñados específicamente para evitar el sobreajuste de modelos. Puede emplear estas herramientas cuando entrene o ajuste un modelo para evitar así el sobreajuste.
Prevención del sobreajuste reduciendo la complejidad del modelo
Con MATLAB, puede entrenar modelos de Machine Learning y Deep Learning, como CNN, desde cero, o bien aprovechar modelos de Deep Learning previamente entrenados. Para evitar el sobreajuste, se debe validar el modelo para confirmar que tiene el nivel de complejidad adecuado. De lo contrario, deberá utilizar la regularización para reducir la complejidad del modelo.
Validación de modelos
El error de un modelo sobreajustado es bajo cuando se calcula para los datos de entrenamiento. Una práctica recomendada es validar el modelo con otro conjunto de datos, como un conjunto de datos de validación, antes de introducir datos nuevos. En modelos de Machine Learning de MATLAB, puede utilizar la función cvpartition
para dividir aleatoriamente un conjunto de datos a fin de crear conjuntos de entrenamiento y validación. En el caso de modelos de Deep Learning, puede supervisar la precisión de la validación durante el entrenamiento. La medida de precisión mejorada que se validada correctamente, lograda a través de la selección de modelos y el ajuste de hiperparámetros, debería dar como resultado una mayor precisión cuando los modelos se enfrentan a datos nuevos.
La validación cruzada es una técnica de evaluación de modelos para evaluar el rendimiento de un algoritmo de Machine Learning al hacer predicciones con conjuntos de datos que no se han utilizado para entrenarlo. La validación cruzada ayuda a seleccionar un algoritmo que no sea demasiado complejo, lo que podría provocar un sobreajuste. Utilice la función crossval
para calcular la estimación de error de validación cruzada con técnicas comunes, tales como k-fold, donde los datos se dividen en k subconjuntos seleccionados aleatoriamente de aproximadamente el mismo tamaño, y retención, donde los datos se dividen aleatoriamente en exactamente dos subconjuntos con una proporción especificada.
Regularización
La regularización es una técnica utilizada para evitar el sobreajuste estadístico en un modelo de Machine Learning. Los algoritmos de regularización generalmente funcionan aplicando una penalización por complejidad o rugosidad. Mediante la introducción de información adicional en el modelo, los algoritmos de regularización pueden gestionar multicolinealidad y predictores redundantes, ya que consiguen que el modelo sea más moderado y preciso.
Para Machine Learning, puede seleccionar entre tres técnicas de regularización habituales: Lasso L1, Ridge L2 y Elastic Net, con varios tipos de modelos de Machine Learning lineales. En el caso de Deep Learning, puede aumentar el factor de regularización L2 de las opciones de entrenamiento especificadas o emplear capas de regularización por dropout en la red para evitar el sobreajuste.
Ejemplos y procedimientos
Prevención del sobreajuste mejorando el conjunto de datos de entrenamiento
La validación cruzada y la regularización ayudan a gestionar la complejidad de los modelos y evitar el sobreajuste. Otro enfoque es mejorar el conjunto de datos. Los modelos de Deep Learning requieren grandes cantidades de datos para evitar el sobreajuste.
Aumento de datos
Cuando la disponibilidad de datos es limitada, el aumento de datos permite ampliar artificialmente los puntos de datos del conjunto de entrenamiento, incorporando versiones aleatorizadas de los datos existentes al conjunto de datos. MATLAB permite aumentar datos de imágenes, audio y otros tipos. Por ejemplo, puede aumentar datos de imágenes aleatorizando la escala y la rotación de imágenes existentes.
Generación de datos
La generación de datos sintéticos es otro método para ampliar un conjunto de datos. MATLAB permite generar datos sintéticos mediante el uso de redes generativas antagónicas (GAN) o gemelos digitales (generación de datos a través de simulación).
Limpieza de datos
El ruido en los datos propicia el sobreajuste. Un enfoque común para reducir puntos de datos no deseados consiste en eliminar valores atípicos de los datos empleando la función rmoutliers
.