Seleção automática de boosting rounds usando early_stopping
Agora, em vez de tentar escolher a dedo o melhor número de boosting rounds, você pode facilmente fazer com que o XGBoost selecione automaticamente esse número para você dentro de xgb.cv(). Isso é feito com uma técnica chamada early stopping.
O early stopping funciona testando o modelo do XGBoost a cada boosting round em um conjunto de validação e interrompendo a criação de rounds adicionais (finalizando o treinamento mais cedo) se a métrica do hold-out ("rmse", no nosso caso) não melhorar por um determinado número de rounds. Aqui, você usará o parâmetro early_stopping_rounds em xgb.cv() com um número máximo grande de boosting rounds (50). Tenha em mente que, se a métrica de validação continuar melhorando até atingir num_boost_rounds, o early stopping não ocorre.
Aqui, o DMatrix e o dicionário de parâmetros já foram criados para você. Sua tarefa é usar validação cruzada com early stopping. Mãos à obra!
Este exercício faz parte do curso
Extreme Gradient Boosting com XGBoost
Instruções do exercício
- Faça validação cruzada com 3 folds usando early stopping e
"rmse"como métrica. Use10rounds de early stopping e50boosting rounds. Especifiqueseedigual a123e garanta que a saída seja um DataFrame dopandas. Lembre-se de especificar os outros parâmetros, comodtrain,paramsemetrics. - Imprima
cv_results.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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(____)