Los algoritmos ensemble combinan múltiples learners débiles para construir un predictor más robusto y generalizable. En lugar de confiar en un único modelo, el ensemble agrega las predicciones de muchos modelos entrenados de formas distintas, reduciendo así el error global. Este módulo cubre dos familias principales: Bagging, representado por Random Forest, y Boosting, representado por XGBoost. Entender sus diferencias te permitirá elegir el algoritmo adecuado según las características de cada problema.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/HelenDiMo/pildora-bootcamp-preprocesamiento/llms.txt
Use this file to discover all available pages before exploring further.
¿Qué es un ensemble?
Imagina que consultas a cien expertos independientes en lugar de a uno solo: aunque cada uno pueda equivocarse de vez en cuando, la decisión colectiva suele ser mucho más acertada que la de cualquier individuo. Este principio se conoce como la sabiduría de las multitudes y es exactamente la intuición detrás de los métodos ensemble. Un árbol de decisión individual tiende a sobreajustarse: memoriza el conjunto de entrenamiento en lugar de aprender patrones generales. Al construir muchos árboles sobre subconjuntos distintos de los datos y combinar sus predicciones (por votación o promedio), el ensemble reduce la varianza del modelo y mejora su capacidad de generalización a datos nuevos. El resultado es un predictor más estable que la suma de sus partes.Bagging vs. Boosting
Las dos familias de ensemble difieren fundamentalmente en cómo y en qué orden construyen sus árboles:| Concepto | Bagging | Boosting |
|---|---|---|
| Estrategia | Entrenar múltiples árboles en paralelo sobre muestras bootstrap independientes | Entrenar árboles secuencialmente, cada uno corrigiendo los errores del anterior |
| Entrenamiento | Paralelo — los árboles no se comunican entre sí durante el entrenamiento | Secuencial — cada árbol depende del residuo del árbol previo |
| Dependencia entre árboles | Independientes; la predicción final se obtiene por votación mayoritaria | Dependientes; el peso de cada árbol refleja su contribución a la corrección acumulada |
| Riesgo principal | Subajuste si los árboles individuales son demasiado superficiales | Sobreajuste en datos ruidosos si se usan demasiados árboles o un learning_rate alto |
| Ejemplo canónico | Random Forest | XGBoost |
Subespacio aleatorio
Random Forest no solo introduce aleatoriedad mediante el muestreo bootstrap de filas — también aplica el principio de subespacio aleatorio a las columnas. En cada nodo de cada árbol, en lugar de evaluar todas las variables disponibles para la mejor división, se selecciona aleatoriamente un subconjunto demax_features características (por defecto 'sqrt' del total).
Esta doble fuente de aleatoriedad decorrelaciona los árboles entre sí: dos árboles construidos sobre el mismo conjunto de datos producirán estructuras distintas porque han visto subconjuntos distintos de variables. Cuando árboles menos correlacionados votan juntos, sus errores no se suman — se cancelan — lo que reduce drásticamente la varianza del ensemble.
Learning rate en Boosting
En XGBoost, el hiperparámetrolearning_rate (también llamado shrinkage, por defecto 0.1) controla cuánto contribuye cada árbol nuevo a la predicción acumulada. Formalmente, cada árbol se multiplica por este factor antes de sumarse al ensemble:
Un learning_rate más bajo significa que cada árbol individual tiene menos peso, lo que obliga al modelo a necesitar más árboles (n_estimators mayor) para alcanzar la misma capacidad expresiva. A cambio, el proceso de optimización avanza más despacio y con más cuidado, lo que mejora la generalización y reduce el riesgo de sobreajuste. En la práctica, suele preferirse un learning_rate entre 0.05 y 0.3 junto con un número elevado de estimadores, ajustando ambos mediante búsqueda de hiperparámetros.
Random Forest
Entrena un RandomForestClassifier dentro de un Pipeline de scikit-learn y evalúa con accuracy y matriz de confusión.
XGBoost
Entrena XGBClassifier para clasificación multi-clase con etiquetas de texto directas y eval_metric=‘mlogloss’.