Gradient boosting: GBM y XGBoost
Boosting frente a bagging, GradientBoostingClassifier, XGBClassifier y early stopping.
Gradient boosting: GBM y XGBoost es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
Boosting frente a bagging
Bagging entrena árboles en paralelo y promedia sus predicciones. Boosting entrena árboles secuencialmente, de modo que cada árbol nuevo corrige los errores de los anteriores.
Boosting reduce el sesgo y suele lograr una mayor exactitud que bagging en datos estructurados.
Aprendices débiles secuenciales
El boosting de gradiente construye un ensamble de árboles poco profundos (aprendices débiles). Cada árbol se ajusta a los residuos (gradientes de la pérdida) que deja el ensamble actual.
Añadir muchas pequeñas correcciones permite construir un modelo general sólido.
GradientBoostingClassifier
Scikit-learn ofrece GradientBoostingClassifier. Sus parámetros principales son n_estimators (número de árboles), learning_rate (reducción) y max_depth (tamaño del árbol).
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=200,
learning_rate=0.1,
max_depth=3,
random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))El compromiso de la tasa de aprendizaje
learning_rate escala la contribución de cada árbol. Una tasa de aprendizaje menor necesita más árboles, pero normalmente se generaliza mejor.
Una estrategia habitual consiste en establecer una tasa de aprendizaje baja (por ejemplo, 0.05) y muchos estimadores, y después usar la detención temprana.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)Por qué max_depth se mantiene pequeño
En boosting, cada árbol es un aprendiz débil, por lo que max_depth suele estar entre 3 y 6. Los árboles profundos sobreajustarían rápidamente los residuos. El ensamble adquiere fuerza gracias a muchos árboles poco profundos, no a unos pocos árboles profundos.
Introducción a XGBoost
XGBoost es una biblioteca optimizada de boosting de gradiente: más rápida, con regularización y gestión integrada de valores ausentes. Ofrece un rendimiento excelente en competiciones de ML con datos tabulares.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=300,
learning_rate=0.1,
max_depth=4,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Parámetros clave de XGBoost
Los controles principales reflejan los de GBM:
n_estimatorsnúmero de rondas de boostinglearning_ratereducción por rondamax_depthprofundidad del árbolsubsampleycolsample_bytreeañaden aleatoriedad para regularizar
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)Regularización en XGBoost
XGBoost añade penalizaciones L1 (reg_alpha) y L2 (reg_lambda), además de gamma (reducción mínima de la pérdida necesaria para dividir). Estos parámetros controlan la complejidad y reducen el sobreajuste más allá de lo que ofrece un GBM simple.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)Detención temprana
early_stopping_rounds detiene el entrenamiento cuando la métrica de validación deja de mejorar durante N rondas. Esto encuentra automáticamente el número adecuado de árboles y evita el sobreajuste.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=2000,
learning_rate=0.05,
early_stopping_rounds=50,
eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)Interpretación de la importancia de las características
XGBoost ofrece feature_importances_ y un método más completo, get_booster().get_score(), con tipos de importancia como gain y weight. Gain refleja cuánto mejoró una característica la pérdida.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))Cuándo recurrir al boosting
El boosting de gradiente suele superar a los bosques aleatorios en datos tabulares cuando se ajusta correctamente. El costo es una mayor sensibilidad a los hiperparámetros y un entrenamiento secuencial más lento. Comience con los valores predeterminados de XGBoost, después ajuste learning_rate y max_depth, y use la detención temprana.
Comprobación rápida
Compruebe sus conocimientos sobre boosting.
Resumen
Resumen: Boosting entrena árboles secuencialmente, y cada uno corrige los errores anteriores. Ajuste n_estimators, learning_rate (tasa baja + muchos árboles) y un max_depth pequeño. XGBoost añade regularización (reg_alpha, reg_lambda, gamma) y early_stopping_rounds para elegir automáticamente el número óptimo de árboles.
Preguntas frecuentes
¿La lección «Gradient boosting: GBM y XGBoost» es gratis?
Sí — el texto completo de «Gradient boosting: GBM y XGBoost» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Gradient boosting: GBM y XGBoost»?
Boosting frente a bagging, GradientBoostingClassifier, XGBClassifier y early stopping. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Gradient boosting: GBM y XGBoost»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Árboles de decisión: teoría e implementación
- Random Forests y bagging
- Gradient boosting: GBM y XGBoost
- LightGBM y CatBoost