XGBoost
XGBoost es una biblioteca de gradient boosting que añade árboles de decisión regularizados de uno en uno, y es una de las mejores opciones para datos tabulares. Explica cómo funciona e incluye código.
XGBoost (impulso extremo del gradiente) es una biblioteca de código abierto para árboles de decisión con impulso del gradiente y una de las herramientas más utilizadas para datos tabulares. Tianqi Chen la inició como proyecto de investigación en la Universidad de Washington y la publicó en 2014; el artículo de KDD de 2016 XGBoost: un sistema escalable de impulso de árboles, escrito junto con Carlos Guestrin, describió su función objetivo regularizada y el diseño del sistema. La biblioteca, mantenida por la comunidad DMLC, gestiona clasificación, regresión y clasificación por orden desde Python, R, la JVM y C, funciona en CPU y GPU y escala horizontalmente con Dask y Spark. El artículo indica que 17 de las 29 soluciones ganadoras de competiciones publicadas en el blog de Kaggle en 2015 utilizaron XGBoost.
Cómo funciona XGBoost#
XGBoost crea un conjunto de forma secuencial: parte de una predicción constante y añade un árbol en cada ronda de boosting, cada uno entrenado para reducir la pérdida que dejaron los árboles anteriores. La predicción final suma las salidas de los árboles, cada una reducida por la tasa de aprendizaje (eta, 0.3 de forma predeterminada) para que ningún árbol domine por sí solo. Dos ideas del artículo definen cómo se construye cada árbol:
- Función objetivo de segundo orden: Para cada fila, XGBoost calcula las derivadas primera y segunda de la pérdida con respecto a la predicción actual: el gradiente
gy el hessianoh. Una hoja cuyas filas tienen una suma de gradientesGy una suma de hessianosHrecibe el peso-G / (H + λ), el mismo paso de Newton que dan los optimizadores de segundo orden. - Árboles regularizados: La función objetivo añade una penalización
γpor hoja y una penalización L2λsobre los pesos de las hojas, además de una penalización L1 opcionalα. Solo se conserva una división cuando su ganancia,½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ, es positiva, lo que incorpora la regularización a la construcción del árbol y limita el sobreajuste.
Los árboles tienen una profundidad limitada (max_depth, 6 de forma predeterminada) y crecen nivel a nivel, a menos que grow_policy="lossguide" active el crecimiento por hojas. El entrenamiento suele ejecutarse con parada temprana sobre un conjunto de validación:
Valores ausentes, velocidad y escala#
La búsqueda de divisiones adaptada a la dispersión de XGBoost permite entrenar con tablas que contienen huecos sin una etapa de imputación. En cada división, prueba a enviar a la izquierda y luego a la derecha las filas con un valor ausente, y conserva como rama predeterminada del nodo la dirección con mayor ganancia. El mismo mecanismo permite recorrer únicamente las entradas almacenadas de matrices dispersas, como las codificaciones one-hot. En este ejemplo se oculta el 30 % de todos los valores de características del conjunto de datos de cáncer de mama de scikit-learn y se entrena directamente con los huecos:
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)
for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
model.fit(train, y_train)
print(f"{name}: accuracy {model.score(test, y_test):.3f}")Imprime una precisión de prueba de 0.972 con los datos completos y de 0.951 con un 30 % de los valores ausentes tanto en el entrenamiento como en los conjuntos de prueba.
Para acelerar el proceso, el método de árbol predeterminado hist agrupa cada característica en un máximo de 256 intervalos (max_bin) y busca divisiones en los límites de los intervalos, el mismo enfoque que utiliza LightGBM, mientras que exact enumera todos los valores ordenados. Al establecer device="cuda", el entrenamiento pasa a una GPU NVIDIA; enable_categorical=True divide columnas categóricas de forma nativa, y el modo de memoria externa permite entrenar con conjuntos de datos mayores que la RAM. Desde la versión 2.1, los modelos se guardan de forma predeterminada en el formato binario UBJSON.
XGBoost y métodos relacionados#
- LightGBM: El framework de boosting de Microsoft de 2016, que hace crecer los árboles por hojas de forma predeterminada y añade muestreo de filas basado en gradientes y agrupación de características dispersas. Ambas bibliotecas utilizan ahora histogramas de forma predeterminada y comparten la mayoría de las técnicas.
- CatBoost: La biblioteca de boosting de Yandex, que crea árboles simétricos y codifica las características categóricas con estadísticas ordenadas del objetivo.
- Bosque aleatorio: Un método de bagging que entrena árboles profundos de forma independiente con muestras bootstrap y calcula su promedio, lo que reduce la varianza y requiere pocos ajustes.
- Aprendizaje profundo: El estándar para entradas no estructuradas como imágenes, audio y texto, donde las redes aprenden características a partir de datos sin procesar. En tablas de características diseñadas, los árboles con boosting siguen siendo la referencia que hay que superar, y los modelos fundacionales tabulares, como TabPFN, ya compiten con ellos en conjuntos de datos pequeños.
Aplicaciones en el mundo real#
- Detección de fraude y riesgo crediticio: Las empresas de pagos puntúan cada transacción a partir del importe, el comercio, la ubicación, el dispositivo y el historial de la cuenta; es una tarea central de modelado predictivo en la que la inferencia rápida de XGBoost se adapta a las decisiones en tiempo real.
- Inspección visual: Los sistemas de calidad de fabricación combinan datos de cámaras y sensores. Las predicciones de Ultralytics YOLO26 proporcionan la parte de la cámara:
result.summary()devuelve la clase, la confianza y las coordenadas de la caja de cada defecto detectado, que una planta puede agrupar por pieza y combinar con lecturas de temperatura y presión como características de un modelo XGBoost que predice averías. - Clasificación por orden y predicción de clics:
XGBRankerentrena de forma predeterminada con la función objetivorank:ndcgpara ordenar los resultados de búsqueda, y los clasificadores binarios predicen las tasas de clics en anuncios. - Problemas que ganan competiciones: El artículo de KDD enumera las tareas que dieron lugar a las soluciones ganadoras de 2015, entre ellas la predicción de ventas en tiendas, la clasificación de eventos de física de altas energías, la clasificación de malware y la predicción del abandono masivo de cursos en línea.










