certmundo.
es‑mx

6 min de lectura

¿Qué es el sobreajuste y cómo evitarlo?

¿Cuántas veces has estudiado tanto para un examen que memorizaste las respuestas exactas, pero cuando el maestro cambió una sola palabra, ya no supiste qué contestar? Tu modelo de machine learning puede caer en el mismo error.

El estudiante que memorizó sin entender

Imagina a dos estudiantes que se preparan para un examen de matemáticas. El primero memoriza cada ejercicio del libro: sabe de memoria que el problema número 14 tiene la respuesta 42. El segundo aprende el método: entiende cómo multiplicar fracciones. En el examen, el maestro cambia los números. El primer estudiante falla. El segundo resuelve cualquier variación.

El sobreajuste —u overfitting— ocurre cuando tu modelo actúa como el primer estudiante: aprende los datos de entrenamiento de memoria, pero falla con datos nuevos.

Este es el problema más común en machine learning. Y según un análisis de Kaggle con más de 50,000 proyectos, el sobreajuste es la causa número uno de que los modelos no sirvan en producción real.

El Experimento del Memorista

Antes de seguir, responde esto mentalmente: si entrenas un modelo con 1,000 datos y obtienes 99% de exactitud en esos mismos datos, ¿tu modelo es bueno?

La respuesta correcta es: no lo sabes todavía.

Un modelo puede alcanzar 99% de exactitud en datos de entrenamiento simplemente memorizando cada fila. Pero cuando le presentas datos que nunca vio —lo que en la industria se llama datos de prueba— su desempeño puede caer a 60% o menos. Eso es sobreajuste puro.

En la lección anterior aprendiste que siempre debes evaluar con datos separados del entrenamiento. Esto es exactamente por qué. Sin esa separación, nunca detectas el sobreajuste.

Cómo reconocer el sobreajuste con números

El síntoma clásico del sobreajuste tiene una firma clara:

  • Exactitud en entrenamiento: 97%
  • Exactitud en prueba: 61%

Esa brecha enorme entre ambos números es la señal de alarma. Un modelo bien calibrado debería tener resultados parecidos en ambos conjuntos, quizá con una diferencia de 2% a 5%.

Supón que trabajas en Liverpool y construyes un modelo para predecir si un cliente va a devolver un producto. Entrenas el modelo con datos de los últimos seis meses. En esos datos logras 98% de exactitud. Pero cuando el modelo entra en producción y ve clientes reales de la siguiente semana, su exactitud cae a 58%. El modelo aprendió patrones específicos de esos seis meses —quizá una promoción especial, una temporada atípica— y no patrones generales del comportamiento del cliente.

El Marco BRECHA: diagnóstico rápido

Para detectar y corregir el sobreajuste, usa el Marco BRECHA:

  • Brecha entre métricas de entrenamiento y prueba
  • Reduce la complejidad del modelo
  • Expande los datos de entrenamiento
  • Controla con regularización
  • Haz validación cruzada
  • Aplica early stopping si usas redes neuronales

Cada paso de este marco es una herramienta concreta. Vamos a explorar las más importantes.

Técnica 1: Reducir la complejidad del modelo

Un modelo demasiado complejo tiene demasiada capacidad para memorizar. En un árbol de decisión, esto significa que el árbol crece sin límite y crea una rama para cada dato individual.

La solución es limitar la profundidad del árbol. En scikit-learn, el parámetro max_depth controla esto:

from sklearn.tree import DecisionTreeClassifier

# Árbol sin límite: sobreajuste casi garantizado
modelo_sobreajustado = DecisionTreeClassifier()

# Árbol con límite: más general
modelo_controlado = DecisionTreeClassifier(max_depth=5)

En Bimbo, si construyeras un modelo para predecir qué rutas de reparto son más rentables, un árbol sin límite memorizaría cada ruta histórica exacta. Un árbol con max_depth=5 aprendería patrones generales: zonas de alto consumo, días de la semana, temporadas.

Técnica 2: Más datos

Esta es la solución más poderosa y la más subestimada. Con más datos, el modelo tiene más ejemplos variados y no puede simplemente memorizar.

Un estudio de Google Brain mostró que duplicar el tamaño del conjunto de datos reduce el error de generalización más que cualquier ajuste de hiperparámetros. En términos prácticos: si tienes 500 registros y tu modelo sobreajusta, conseguir 2,000 registros resolverá el problema mejor que cualquier técnica sofisticada.

En FEMSA, por ejemplo, un modelo que predice ventas de bebidas con solo tres meses de datos puede memorizar patrones de ese trimestre. Con dos años de datos, aprende estacionalidad real, efectos de clima y comportamiento en distintas regiones de México.

Técnica 3: Regularización

La regularización es un "impuesto" matemático que castica al modelo por ser demasiado complejo. Le dice: "puedes ajustarte a los datos, pero no demasiado."

Existen dos tipos principales:

  • L1 (Lasso): Empuja los coeficientes poco importantes a cero. Selecciona automáticamente las variables más relevantes.
  • L2 (Ridge): Reduce todos los coeficientes, pero sin eliminarlos. Distribuye la influencia de forma más pareja.

En scikit-learn, los modelos de regresión incluyen regularización con el parámetro alpha:

from sklearn.linear_model import Ridge, Lasso

# Ridge: regularización L2
modelo_ridge = Ridge(alpha=1.0)

# Lasso: regularización L1
modelo_lasso = Lasso(alpha=0.1)

Un alpha más alto significa más regularización y un modelo más simple. Empieza con alpha=1.0 y ajusta según los resultados en tu conjunto de validación.

Técnica 4: Validación cruzada

En la lección anterior separaste tus datos en entrenamiento y prueba. La validación cruzada lleva eso más lejos.

En lugar de usar una sola división, divide tus datos en k partes iguales (por ejemplo, 5). Entrenas el modelo 5 veces, cada vez usando 4 partes para entrenar y 1 parte diferente para validar. Al final, promedias los resultados.

from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
import numpy as np

modelo = DecisionTreeClassifier(max_depth=5)
puntuaciones = cross_val_score(modelo, X, y, cv=5)

print(f"Exactitud promedio: {puntuaciones.mean():.2f}")
print(f"Desviación estándar: {puntuaciones.std():.2f}")

Si la desviación estándar es alta —digamos, 0.15 o más— tu modelo es inestable. Eso también es señal de sobreajuste. Un modelo robusto tiene una desviación estándar pequeña, idealmente menor a 0.05.

Mercado Libre usa validación cruzada en sus modelos de detección de fraude. Un solo conjunto de prueba podría estar sesgado hacia un tipo de fraude específico. Con 5 o 10 divisiones, el modelo se evalúa contra múltiples escenarios y el resultado es mucho más confiable.

El lado opuesto: el subajuste

Existe un error contrario que también debes conocer: el subajuste (underfitting). Ocurre cuando el modelo es demasiado simple para capturar los patrones reales.

Si usas un árbol con max_depth=1 para predecir precios de casas en la Ciudad de México, el modelo solo puede hacer una pregunta y dará resultados muy pobres tanto en entrenamiento como en prueba. La brecha entre ambos será pequeña, pero ambas métricas serán malas.

El objetivo es encontrar el punto medio: un modelo suficientemente complejo para aprender los patrones reales, pero no tan complejo que memorice el ruido.

La Curva de Complejidad

Visualiza esto como una curva en forma de U invertida:

  • A la izquierda: modelo demasiado simple → subajuste → error alto en entrenamiento Y en prueba
  • En el centro: modelo bien calibrado → buen desempeño en ambos
  • A la derecha: modelo demasiado complejo → sobreajuste → error bajo en entrenamiento, alto en prueba

Tu trabajo como practicante de machine learning es encontrar ese punto central. La validación cruzada y el monitoreo constante de la brecha entre entrenamiento y prueba son tus herramientas principales.

Errores comunes al enfrentar el sobreajuste

El primer error es ajustar el modelo usando los datos de prueba. Si cada vez que ves malos resultados en prueba cambias el modelo y vuelves a medir, estás filtrando información del conjunto de prueba hacia el modelo. Esto se llama data leakage y contamina tu evaluación. La solución es tener un tercer conjunto separado —el conjunto de validación— para ajustar parámetros, y guardar los datos de prueba solo para la evaluación final.

El segundo error es asumir que más variables siempre ayudan. Agregar variables irrelevantes da al modelo más ruido para memorizar. Antes de agregar una variable, pregunta: ¿tiene sentido lógico que esta variable explique lo que quiero predecir?

El tercer error es ignorar el problema de la temporalidad. Si predices ventas futuras y mezclas datos pasados y futuros al dividir entrenamiento y prueba, el modelo "verá el futuro" durante el entrenamiento. Siempre divide los datos respetando el orden cronológico.

En la práctica diaria

Cuando construyas tu próximo modelo, sigue esta secuencia:

  1. Divide tus datos: 70% entrenamiento, 15% validación, 15% prueba final.
  2. Entrena con el conjunto de entrenamiento.
  3. Mide la brecha entre entrenamiento y validación.
  4. Si la brecha es mayor a 10%, aplica las técnicas del Marco BRECHA.
  5. Solo cuando estés satisfecho, evalúa una sola vez con el conjunto de prueba final.

Este proceso te protege de construir modelos que funcionan perfecto en tu computadora pero fallan en el mundo real.

Puntos clave

  • El sobreajuste ocurre cuando un modelo aprende los datos de entrenamiento de memoria y falla con datos nuevos; la señal más clara es una brecha grande entre la exactitud de entrenamiento y la de prueba.
  • El Marco BRECHA ofrece seis herramientas concretas: detectar la brecha, reducir complejidad, expandir datos, aplicar regularización, usar validación cruzada y hacer early stopping.
  • Más datos es casi siempre la solución más efectiva contra el sobreajuste; duplicar el tamaño del conjunto de datos supera en impacto a cualquier ajuste de hiperparámetros.
  • La regularización L1 y L2 castiga la complejidad matemáticamente: L1 elimina variables irrelevantes; L2 reduce todos los coeficientes de forma pareja.
  • El subajuste es el error opuesto: un modelo demasiado simple que da malos resultados tanto en entrenamiento como en prueba; el objetivo es encontrar el punto de equilibrio entre ambos extremos.

Comparte esta lección:

¿Qué es el sobreajuste y cómo evitarlo? | Machine Learning Básico | Certmundo