Python Data Science Program
📓 Abrir notebook en GitHub

Clase 072 — Curvas de aprendizaje y bias-variance tradeoff

Parte: 1 — Machine Learning Clásico · Fuente: Géron, cap. 4. ⏱️ Duración estimada: 60 min.

🎯 Objetivo

Diagnosticar si un modelo sufre de alto sesgo o alta varianza leyendo curvas de aprendizaje (sklearn.model_selection.learning_curve) y decidir, con criterio, si conviene conseguir más datos, aumentar la capacidad del modelo o regularizar.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

  1. Graficar una curva de aprendizaje (RMSE train vs. RMSE validación en función de train_size) con learning_curve.
  2. Identificar patrones canónicos: underfitting (curvas altas y juntas) vs. overfitting (gap persistente).
  3. Descomponer conceptualmente el error esperado en bias² + variance + irreducible noise.
  4. Decidir acción correctiva apropiada: más datos, más capacidad, features nuevas, o regularización.
  5. Justificar por qué "más datos" no siempre es la solución (caso de high bias).

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Curva base. Generá 200 puntos del dataset cuadrático ruidoso. Ajustá una regresión lineal y graficá la curva de aprendizaje (train vs. val RMSE). ¿Qué patrón observás?
  2. Aumentar capacidad. Repetí con PolynomialFeatures(degree=2) + LinearRegression. Comparalo con degree=10. Identificá cuál es underfit, cuál fit, cuál overfit.
  3. ¿Más datos ayudan? Para el polinomio de grado 10, extendé el dataset a 2000 puntos y volvé a plotear. ¿Se cierra el gap? Cuantificá.
  4. Validation curve. Usá validation_curve para barrer degree de 1 a 15 sobre el mismo dataset. Encontrá el "sweet spot" donde val_RMSE es mínimo.
  5. Bias-variance empírico. Entrená 100 modelos degree=10 sobre bootstraps del dataset y calculá, para una grilla de x de test, la varianza de las predicciones y el bias² vs. la función verdadera. Verificá que la suma bias² + var se acerca al MSE total menos σ².

📝 Homework verificable

Sobre el dataset california_housing:

  1. Entrená DecisionTreeRegressor(max_depth=d) para d ∈ {2, 5, 10, None}.
  2. Para cada uno, generá la curva de aprendizaje con learning_curve(cv=5, scoring='neg_root_mean_squared_error').
  3. Clasificá cada modelo como underfit, fit razonable o overfit justificando con el gap final y el nivel de error.
  4. Recomendá explícitamente, para cada caso, una de tres acciones: ["más datos", "más capacidad", "regularizar/podar"].

Criterio de aceptación: un .py o notebook que, al ejecutarse, imprima una tabla con columnas depth | train_rmse_final | val_rmse_final | gap | diagnostico | accion_recomendada y guarde los 4 gráficos en figs/learning_curve_depth_{d}.png.

⚠️ Errores comunes

❓ Preguntas frecuentes

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 073 — Regularización: Ridge, Lasso, Elastic Net