Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 3 — Diagnóstico con datos de entrenamiento y prueba, 3.2 — Curvas de aprendizaje ·

Qué son

Curvas de aprendizaje: Qué son y cómo interpretarlas

Introducción

Las curvas de aprendizaje son una herramienta poderosa para diagnosticar los problemas de overfitting y underfitting en modelos de machine learning. Al comprender y analizar estas curvas, podemos identificar si nuestro modelo está subajustado o sobreajustado a los datos de entrenamiento. En esta unidad, aprenderás a interpretar las curvas de aprendizaje para mejorar la generalización del modelo.

Explicación principal

Las curvas de aprendizaje muestran cómo el rendimiento (error) de un modelo varía con respecto al tamaño del conjunto de entrenamiento. Es una forma visual de entender si nuestro modelo está ajustado correctamente a los datos, o si presenta problemas de overfitting o underfitting.

Ejemplo: Curva de aprendizaje

Supongamos que estamos usando un modelo lineal para predecir la temperatura en función del tiempo y las condiciones atmosféricas. Podemos representar la curva de aprendizaje con los siguientes datos:

import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Generamos datos ficticios
X_train = [[1], [2], [3], [4], [5]]
y_train = [0.8, 1.9, 3.1, 4.2, 5.3]

model = LinearRegression()
model.fit(X_train, y_train)

# Generamos predicciones con conjuntos de entrenamiento diferentes tamaños
train_sizes = [len(X_train), len(X_train)//2]
X_train_smaller = X_train[:len(X_train)//2]
y_train_smaller = y_train[:len(y_train)//2]

def plot_learning_curve(model, X_train, y_train):
    train_errors, test_errors = [], []
    for m in range(1, len(X_train) + 1):
        model.fit(X_train[:m], y_train[:m])
        train_pred = model.predict(X_train[:m])
        test_pred = model.predict(X_train)
        train_error = mean_squared_error(y_train[:m], train_pred)
        test_error = mean_squared_error(y_train, test_pred)
        train_errors.append(train_error)
        test_errors.append(test_error)

    plt.plot(range(1, len(X_train) + 1), train_errors, label='Error de entrenamiento')
    plt.plot(range(1, len(X_train) + 1), test_errors, label='Error de validación')
    plt.xlabel('Tamaño del conjunto de entrenamiento')
    plt.ylabel('Error (MSE)')
    plt.legend()
    plt.show()

plot_learning_curve(model, X_train_smaller, y_train_smaller)

En este ejemplo, la curva de aprendizaje muestra que el error en entrenamiento disminuye con el tamaño del conjunto de entrenamiento, mientras que el error de validación alcanza un mínimo y luego comienza a aumentar. Este comportamiento sugiere overfitting.

Errores típicos / trampas

  1. Interpretar los errores en entrenamiento como rendimiento final: Es importante recordar que el error en entrenamiento no es una buena medida del rendimiento real de nuestro modelo. Un buen modelo debe tener un error en validación similar o menor al error en entrenamiento.
  1. No utilizar curvas de aprendizaje para optimizar hiperparámetros: Las curvas de aprendizaje se utilizan principalmente para identificar overfitting y underfitting, no para ajustar hiperparámetros del modelo.
  1. Ignorar la diferencia entre validación y entrenamiento: Es fácil confundirse con el error en validación y el error en entrenamiento. Asegúrate de entender claramente la diferencia entre ambos y cómo interpretar las curvas correspondientes.

Checklist accionable

Diagnóstico de overfitting y underfitting:

  1. Comprueba los errores en entrenamiento e invalidación: Si el error en validación es significativamente mayor que el error en entrenamiento, tienes un problema de overfitting.
  2. Analiza la curva de aprendizaje: Busca puntos donde se produce un desacuerdo entre el error en entrenamiento y el error en validación.
  3. Ajusta el modelo: Si encuentras signos de overfitting, considera aplicar regularización o reducir el número de parámetros. Para underfitting, intenta aumentar la complejidad del modelo.

Mejoras a considerar:

  1. Más datos: Aumenta el tamaño de los conjuntos de entrenamiento y validación.
  2. Feature engineering: Mejora las características que se utilizan para entrenar el modelo.
  3. Técnicas de regularización: Aplica técnicas como Ridge, Lasso o Dropout.

Siguientes pasos

  • Implementa una curva de aprendizaje en tu modelo actual y analiza sus resultados.
  • Considera el uso de validación cruzada para obtener un mejor estimado del rendimiento real de tu modelo.
  • Ajusta el modelo según las indicaciones de la curva de aprendizaje.

Las curvas de aprendizaje son una herramienta esencial para mejorar la calidad de tus modelos y asegurar que estén correctamente ajustados a los datos. Utiliza estas técnicas con cuidado y te verás recompensado con modelos más robustos y generalizados.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).