ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Faça validação cruzada com 3 folds usando early stopping e "rmse" como métrica. Use 10 rounds de early stopping e 50 boosting rounds. Especifique seed igual a 123 e garanta que a saída seja um DataFrame do pandas. Lembre-se de especificar os outros parâmetros, como dtrain, params e metrics.
  • 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(____)
Editar e executar o código