XGBoost

Basic

XGBoost | Gradient boosting rapido y preciso

XGBoost (eXtreme Gradient Boosting) es una implementacion de gradient boosting con enfoque en regularizacion y velocidad. Ofrece manejo de faltantes, optimizacion de arboles y entrenamiento paralelo, por lo que es un clasico en competiciones y produccion.


1. Caracteristicas clave #

  • Perdida regularizada: L1/L2 reducen overfitting.
  • Direccion por defecto para faltantes: los faltantes se enrutan automaticamente.
  • Paralelizacion: construccion de arboles en paralelo para entrenar mas rapido.
  • Parametros avanzados: control fino de profundidad, hojas y muestreo.

2. Entrenamiento con el paquete xgboost #

import xgboost as xgb
from sklearn.metrics import mean_absolute_error

dtrain = xgb.DMatrix(X_train, label=y_train)
dvalid = xgb.DMatrix(X_valid, label=y_valid)

params = {
    "objective": "reg:squarederror",
    "eval_metric": "rmse",
    "max_depth": 6,
    "eta": 0.05,
    "subsample": 0.8,
    "colsample_bytree": 0.8,
    "lambda": 1.0,
}

evals = [(dtrain, "train"), (dvalid, "valid")]
bst = xgb.train(
    params,
    dtrain,
    num_boost_round=1000,
    evals=evals,
    early_stopping_rounds=50,
)

pred = bst.predict(xgb.DMatrix(X_test), iteration_range=(0, bst.best_iteration + 1))
print("MAE:", mean_absolute_error(y_test, pred))

early_stopping_rounds detiene el entrenamiento cuando la validacion no mejora y selecciona la mejor iteracion automaticamente.


3. Hiperparametros principales #

ParametroRolAjuste
etaLearning rateMas bajo es mas estable, pero requiere mas rondas
max_depthProfundidadMas profundo, mas expresivo pero mas overfitting
min_child_weightPeso minimo del nodo hijoSubirlo cuando hay mucho ruido
subsample / colsample_bytreeTasas de muestreo0.6–0.9 suele mejorar generalizacion
lambda, alphaRegularizacion L2 / L1Valores altos reducen overfitting; alpha favorece sparsity

4. Uso practico #

  • Datos estructurados: buen rendimiento en tablas codificadas.
  • Faltantes: se gestionan internamente.
  • Importancia de variables: Gain/Weight/Cover.
  • SHAP: compatible con xgboost.to_graphviz y shap.TreeExplainer.

5. Consejos extra #

  • Bajar el learning rate (p. ej., 0.1 → 0.02) y aumentar rondas suele mejorar la precision.
  • tree_method: "hist" para velocidad, "gpu_hist" para GPU, "approx" para datos grandes.
  • Validacion cruzada: xgb.cv con early_stopping_rounds para encontrar la mejor ronda.

Resumen #

  • XGBoost combina regularizacion, manejo de faltantes y velocidad para datos tabulares.
  • Ajuste eta, max_depth, min_child_weight, muestreo y regularizacion en conjunto.
  • Elija entre XGBoost, LightGBM y CatBoost segun las caracteristicas de los datos.