Python Data Science Program
📓 Abrir notebook en GitHub

Clase 085 — Random Forests y Extra Trees

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

🎯 Objetivo

Entender Random Forests y Extra Trees como ensambles de árboles decorrelacionados, diferenciar sus mecanismos de aleatoriedad y elegir hiperparámetros razonables para problemas reales de clasificación y regresión.

📚 Resultados de aprendizaje

Al terminar la clase vas a poder:

  1. Explicar por qué un Random Forest reduce varianza respecto a un árbol único, usando los conceptos de bagging y subsampling de features.
  2. Diferenciar Random Forest vs Extra Trees (thresholds óptimos vs aleatorios) y argumentar cuándo conviene cada uno.
  3. Configurar los hiperparámetros clave (n_estimators, max_features, max_depth, bootstrap, min_samples_leaf) con criterios fundados.
  4. Entrenar y comparar RandomForestClassifier y ExtraTreesClassifier de scikit-learn en un dataset tabular, midiendo accuracy y tiempo.
  5. Interpretar oob_score_ como estimación honesta del error de generalización sin necesidad de validación cruzada.

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Baseline: entrená un DecisionTreeClassifier único sobre load_breast_cancer con random_state=42 y reportá accuracy en test (split 80/20).
  2. Random Forest: entrená un RandomForestClassifier(n_estimators=200, random_state=42) y compará accuracy y tiempo contra el árbol único.
  3. Extra Trees: entrená un ExtraTreesClassifier(n_estimators=200, random_state=42) y compará contra RF en accuracy y tiempo de entrenamiento.
  4. OOB: entrená un RF con oob_score=True, bootstrap=True y compará oob_score_ contra el accuracy de test; ¿se parecen?
  5. Sensibilidad a max_features: variá max_features en [1, 'sqrt', 'log2', 0.5, 1.0] y graficá accuracy de CV; identificá el óptimo.

📝 Homework verificable

Sobre fetch_california_housing:

  1. Entrená RandomForestRegressor y ExtraTreesRegressor con n_estimators=300, random_state=42.
  2. Reportá en test (split 80/20) y tiempo de entrenamiento de cada uno.
  3. Tuneá max_features con GridSearchCV (cv=3) sobre [0.3, 0.5, 0.7, 1.0] para el mejor de los dos.

Criterio de aprobación: el mejor modelo tuneado alcanza R² ≥ 0.80 en test, y entregás una tabla comparativa con accuracy, tiempo y max_features óptimo.

⚠️ Errores comunes

❓ Preguntas frecuentes

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 086 — Feature importance