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 #
| Parametro | Rol | Ajuste |
|---|---|---|
eta | Learning rate | Mas bajo es mas estable, pero requiere mas rondas |
max_depth | Profundidad | Mas profundo, mas expresivo pero mas overfitting |
min_child_weight | Peso minimo del nodo hijo | Subirlo cuando hay mucho ruido |
subsample / colsample_bytree | Tasas de muestreo | 0.6–0.9 suele mejorar generalizacion |
lambda, alpha | Regularizacion L2 / L1 | Valores 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_graphvizyshap.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.cvconearly_stopping_roundspara 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.