← Volver a Aprende con CDIA

Clasificación: de los modelos a su evaluaciónXGBoost

AvanzadoMachine Learning9 min de lectura

XGBoost

Boosting de gradiente regularizado: árboles secuenciales que corrigen los errores del anterior, hoy el rey de los datos tabulares.

XGBoost (Extreme Gradient Boosting) construye árboles uno tras otro, donde cada árbol nuevo se especializa en corregir los errores que dejaron los anteriores. En lugar de votar en paralelo como Random Forest, aquí los árboles colaboran en secuencia.

Boosting: aprender de los errores

La idea del boosting es sencilla y poderosa. Empezamos con una predicción tosca y la vamos mejorando sumando árboles pequeños, cada uno enfocado en lo que aún falla:

donde cada es un árbol y es el número total. Los árboles se agregan de forma aditiva: en el paso , el modelo ya construido se mantiene fijo y solo se aprende .

El gradiente como brújula

¿Cómo sabe cada árbol nuevo hacia dónde ir? Mirando el gradiente de la función de pérdida: la dirección en la que el error disminuye más rápido. Cada árbol se ajusta a esos residuos (los errores del modelo actual). De ahí el nombre gradient boosting.

XGBoost afina esta idea usando una aproximación de segundo orden (gradiente y curvatura) y añadiendo un término de regularización que penaliza árboles demasiado complejos:

Ese control extra sobre la complejidad es parte de por qué XGBoost gana tantas competencias.

La tasa de aprendizaje

Un hiperparámetro clave es la tasa de aprendizaje (learning rate), que encoge la contribución de cada árbol:

  • pequeña (p. ej. ): pasos cautelosos, necesita más árboles pero generaliza mejor.
  • grande: aprende rápido, pero corre el riesgo de pasarse.

Es el clásico intercambio entre velocidad y estabilidad.

Random Forest vs. XGBoost

Random ForestXGBoost
EstrategiaBagging (paralelo)Boosting (secuencial)
Cada árbolIndependienteCorrige al anterior
Reduce sobre todoVarianzaSesgo
AjusteFácil, robustoRequiere más cuidado

En código

La librería xgboost ofrece una interfaz idéntica a la de scikit-learn. Los hiperparámetros clave son la tasa de aprendizaje y la regularización:

from xgboost import XGBClassifier

modelo = XGBClassifier(
    n_estimators=400,
    learning_rate=0.05,  # η: pasos pequeños → necesita más árboles, generaliza mejor
    max_depth=4,         # árboles poco profundos, para no sobreajustar
    reg_lambda=1.0,      # regularización L2 (el término Ω sobre las hojas)
).fit(X_train, y_train)

modelo.predict(X_test)

learning_rate y n_estimators van de la mano: al bajar uno, sube el otro. Se afinan con validación cruzada.

Para llevar

XGBoost es boosting de gradiente regularizado: árboles secuenciales que corrigen errores previos, guiados por el gradiente de la pérdida y frenados por la tasa de aprendizaje. Suele ofrecer la mayor precisión en datos tabulares, a cambio de un ajuste más delicado. Ya tenemos tres modelos; ahora toca evaluarlos bien.