まとめ
- Una curva de aprendizaje muestra las puntuaciones de entrenamiento y validación a medida que crece el tamaño del conjunto de entrenamiento.
- Usa
learning_curvepara dibujar ambas curvas, evaluar el sesgo/varianza y decidir si más datos ayudarán. - Aplica las conclusiones a la recolección de datos, la capacidad del modelo y la ingeniería de características.
1. ¿Qué es una curva de aprendizaje? #
Registra puntuación de entrenamiento y puntuación de validación mientras se incrementa progresivamente el número de muestras usadas para entrenar. Sirve para responder:
- ¿El modelo sufre de alto sesgo (underfitting) o de alta varianza (overfitting)?
- ¿Aumentar el dataset mejoraría de forma significativa el rendimiento?
- ¿Conviene ajustar hiperparámetros o cambiar la arquitectura del modelo?
2. Ejemplo en Python (regresión Ridge) #
from __future__ import annotations
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import Ridge
from sklearn.model_selection import learning_curve
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
def plot_learning_curve_for_ridge() -> None:
"""Dibuja la RMSE frente al tamaño del conjunto de entrenamiento."""
features, targets = make_regression(
n_samples=1500,
n_features=25,
n_informative=8,
noise=12.0,
random_state=42,
)
model = make_pipeline(StandardScaler(), Ridge(alpha=10.0))
train_sizes, train_scores, valid_scores = learning_curve(
estimator=model,
X=features,
y=targets,
train_sizes=np.linspace(0.1, 1.0, 8),
cv=5,
scoring="neg_mean_squared_error",
shuffle=True,
random_state=42,
n_jobs=None,
)
train_rmse = np.sqrt(-train_scores.mean(axis=1))
valid_rmse = np.sqrt(-valid_scores.mean(axis=1))
train_std = np.sqrt(train_scores.var(axis=1))
valid_std = np.sqrt(valid_scores.var(axis=1))
plt.figure(figsize=(7, 5))
plt.plot(train_sizes, train_rmse, color="#1d4ed8", label="Train RMSE")
plt.fill_between(
train_sizes,
train_rmse - train_std,
train_rmse + train_std,
alpha=0.2,
color="#1d4ed8",
)
plt.plot(train_sizes, valid_rmse, color="#ea580c", label="Validation RMSE")
plt.fill_between(
train_sizes,
valid_rmse - valid_std,
valid_rmse + valid_std,
alpha=0.2,
color="#ea580c",
)
plt.xlabel("Muestras de entrenamiento")
plt.ylabel("RMSE")
plt.title("Learning Curve for Ridge Regression (RMSE)")
plt.legend(loc="upper right")
plt.grid(alpha=0.3)
plot_learning_curve_for_ridge()

Al aumentar las muestras, la RMSE de entrenamiento empeora y se acerca a la de validación, que mejora y se estabiliza. Cuando ambas convergen, añadir datos tiene un retorno decreciente.
3. Interpretación #
- Alta varianza / sobreajuste: la curva de entrenamiento es excelente y la de validación queda atrás. Refuerza la regularización, reduce características o suma más datos.
- Alto sesgo / infraajuste: ambas curvas son altas (mal rendimiento). Cambia a un modelo más expresivo, ingenia nuevas variables o suaviza la regularización.
- Curvas convergentes: los valores se acercan; más datos apenas mueven la aguja y es mejor replantear modelo o features.
4. Aplicaciones prácticas #
- ROI de la recolección: si la curva de validación sigue mejorando, más datos son valiosos; si se estabiliza, prioriza otras tareas.
- Capacidad del modelo y regularización: analiza la curva antes de ajustar profundidad, ancho o intensidad de regularización.
- Ingeniería de características: si ambas curvas se mantienen altas y paralelas, indica que necesitas mejores atributos.
- Complemento con otras diagnósticas: combínala con curvas de validación o análisis temporal para planificar ciclos de iteración.
Conclusiones #
- Las curvas de aprendizaje desvelan el balance entre overfitting y underfitting y cuantifican el efecto del tamaño de entrenamiento.
- Con
learning_curvees sencillo generarlas y decidir sobre adquisición de datos o cadencia de tuning. - Úsalas junto a otras herramientas de diagnóstico para equilibrar datos, complejidad y objetivos de negocio.