ComenzarEmpieza gratis

Selección automática de rondas de boosting con early_stopping

Ahora, en lugar de tratar de elegir a mano el mejor número posible de rondas de boosting, puedes hacer que XGBoost seleccione automáticamente el número de rondas dentro de xgb.cv(). Esto se hace con una técnica llamada early stopping.

El early stopping funciona evaluando el modelo de XGBoost después de cada ronda de boosting contra un conjunto de validación y deteniendo la creación de rondas adicionales (terminando así el entrenamiento antes) si la métrica del conjunto de validación ("rmse" en nuestro caso) no mejora durante un número determinado de rondas. Aquí usarás el parámetro early_stopping_rounds en xgb.cv() con un número máximo de rondas de boosting grande (50). Ten en cuenta que si la métrica del conjunto de validación mejora de forma continua hasta alcanzar num_boost_rounds, entonces no se aplica el early stopping.

Aquí ya tienes creada la DMatrix y el diccionario de parámetros. Tu tarea es usar validación cruzada con early stopping. ¡Adelante!

Este ejercicio forma parte del curso

Extreme Gradient Boosting con XGBoost

Ver curso

Instrucciones del ejercicio

  • Realiza una validación cruzada de 3 particiones con early stopping y "rmse" como métrica. Usa 10 rondas de early stopping y 50 rondas de boosting. Especifica una seed de 123 y asegúrate de que la salida sea un DataFrame de pandas. Recuerda especificar los otros parámetros como dtrain, params y metrics.
  • Imprime cv_results.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}

# Perform cross-validation with early stopping: cv_results
cv_results = ____

# Print cv_results
print(____)
Editar y ejecutar código