27 · XGBoost: gradient boosting extremo
XGBoost es gradient boosting con esteroides: gradientes de segundo orden, regularización inteligente, búsqueda de splits en paralelo y optimizaciones de ingeniería que lo hacen 10–100× más rápido que el GB estándar.
XGBoost es gradient boosting con esteroides: gradientes de segundo orden, regularización inteligente, búsqueda de splits en paralelo y optimizaciones que lo hacen 10-100× más rápido que el GB estándar.
Sin esto:
Sin XGBoost (o LightGBM/CatBoost) perderías frente a cualquiera que los use — son el estándar de facto para ML tabular.
El gradient boosting estándar (sklearn's GradientBoostingClassifier) usa solo el gradiente de primer orden (el residuo) para guiar las decisiones de split de cada árbol. XGBoost (Chen & Guestrin, 2016) hace cuatro mejoras clave que explican su dominio:
1. Gradientes de segundo orden (Hessiano) XGBoost usa tanto el gradiente g (primera derivada) como el Hessiano h (segunda derivada) de la pérdida. El peso óptimo de la hoja se convierte en:
w* = − Σg / (Σh + λ)
Esto es un paso de Newton-Raphson — converge más rápido y toma mejores decisiones de split que los métodos de primer orden solos.
2. Regularización en el objetivo El objetivo de XGBoost agrega una penalización de complejidad explícita a la pérdida:
Obj = Σ loss(yi, yi_hat) + γ·T + ½·λ·Σwk² + α·Σ|wk|
donde T = número de hojas, λ = L2 sobre pesos de hojas, α = L1 sobre pesos de hojas. Esto previene que los árboles crezcan hojas que no mejoran genuinamente el ajuste.
3. Subsampling de columnas (colsample_bytree)
Como max_features de Random Forest, XGBoost muestrea aleatoriamente una fracción de columnas por árbol (o por split), añadiendo diversidad y reduciendo el sobreajuste.
4. Optimizaciones de ingeniería
- Búsqueda aproximada de splits: pre-ordena datos en bins de histograma en lugar de verificar cada umbral de split posible — dramáticamente más rápido en datasets grandes.
- Sparse-aware: maneja eficientemente valores faltantes y matrices dispersas.
- Soporte GPU: la construcción de árboles puede ejecutarse en GPU con
device="cuda".
Hiperparámetros clave
| Parámetro | Típico | Descripción |
|---|---|---|
| n_estimators | 200–2000 | Número de árboles |
| learning_rate | 0.05–0.1 | Reducción por árbol |
| max_depth | 3–10 | Profundidad del árbol |
| min_child_weight | 1–10 | Suma mínima del Hessiano en una hoja |
| subsample | 0.6–1.0 | Submuestra de filas por árbol |
| colsample_bytree | 0.6–1.0 | Submuestra de columnas por árbol |
| reg_alpha | 0–1 | Regularización L1 sobre pesos de hojas |
| reg_lambda | 1–10 | Regularización L2 sobre pesos de hojas |
XGBoost no está disponible como wheel de Pyodide en el navegador. Este código se ejecuta localmente (`pip install xgboost`) o en Colab. La API compatible con sklearn de `XGBClassifier` refleja casi exactamente `GradientBoostingClassifier` — puedes intercambiarlos con un cambio de una línea.
XGBoost expone tres tipos de importancia: `weight` (conteo de splits), `gain` (ganancia promedio por split — más informativo) y `cover` (cobertura promedio de muestras). `gain` es el default recomendado. Ejecutar localmente con `pip install xgboost matplotlib`.
Python (in browser)
GridSearchCV evalúa sistemáticamente cada combinación de hiperparámetros usando validación cruzada de 5-fold en el conjunto de entrenamiento — el conjunto de test permanece intacto. Para grids más grandes, reemplaza `GridSearchCV` con `RandomizedSearchCV` (muestreo aleatorio) u Optuna (optimización Bayesiana).
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Las tres bibliotecas comparten el mismo algoritmo subyacente de gradient boosting. Las diferencias están en la estrategia de crecimiento de árboles, ingeniería y cómo manejan tipos de datos específicos. En la práctica, prueba las tres en una búsqueda de hiperparámetros y elige la que tenga el mejor score de validación cruzada.
Comparado con GradientBoostingClassifier de sklearn, XGBoost generalmente es...
- XGBoost usa gradientes de segundo orden (Hessiano) para decisiones de split más inteligentes y rápidas — un paso de Newton-Raphson vs. descenso de gradiente a nivel de hoja.
- La regularización (L1 `reg_alpha`, L2 `reg_lambda`, penalización mínima de hoja `gamma`) está integrada en el objetivo de XGBoost — controla la complejidad sin necesitar un botón de ajuste separado.
- XGBoost NO está disponible en el entorno de navegador Pyodide — usa `GradientBoostingClassifier` de sklearn en el navegador, luego cambia a XGBoost localmente cuando importa.
- LightGBM (crecimiento hoja a hoja, el más rápido) y CatBoost (categoriales nativos, el más preciso sin ajuste) son las principales alternativas a XGBoost — las tres son bibliotecas de gradient boosting.
- Siempre ajusta XGBoost — XGBoost sin ajuste a menudo pierde frente a un Random Forest por defecto. `learning_rate` y `n_estimators` son los dos controles de mayor impacto.
Ganó el desafío Higgs Boson de Kaggle en 2014; ha sido parte del equipo de casi cada ganador tabular de Kaggle desde entonces. Detección de fraude en producción (Stripe, Square), recomendaciones (Airbnb), predicción de CTR (ad tech) — todos usan gradient boosting en producción.
Si lo quitas: Competirías en ML tabular con una mano atada a la espalda.