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
Instrucciones del ejercicio
- Realiza una validación cruzada de 3 particiones con early stopping y
"rmse"como métrica. Usa10rondas de early stopping y50rondas de boosting. Especifica unaseedde123y asegúrate de que la salida sea un DataFrame depandas. Recuerda especificar los otros parámetros comodtrain,paramsymetrics. - 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(____)