Encontre o número certo de árvores para um gradient boosting machine
Neste exercício, você vai se preparar para construir um modelo de gradient boosting para prever o número de bicicletas alugadas por hora em função do clima e do tipo e horário do dia. Você vai treinar o modelo com dados do mês de julho.
Os dados de julho já foram carregados. Lembre-se de que bikesJuly.treat não tem mais a coluna de desfecho, então você precisa obtê-la dos dados não tratados: bikesJuly$cnt.
Você usará o pacote xgboost para ajustar o modelo de random forest. A função xgb.cv() (docs) usa validação cruzada para estimar o erro de aprendizado fora da amostra à medida que cada nova árvore é adicionada ao modelo. O número adequado de árvores a usar no modelo final é aquele que minimiza o RMSE do conjunto de validação.
Para este exercício, os principais argumentos da chamada xgb.cv() são:
data: uma matriz numérica.label: vetor de desfechos (também numérico).nrounds: o número máximo de rodadas (árvores a construir).nfold: o número de folds para a validação cruzada. 5 é um bom número.objective:"reg:squarederror"para desfechos contínuos.eta: a taxa de aprendizado.max_depth: profundidade máxima das árvores.early_stopping_rounds: após esse número de rodadas sem melhoria, parar.verbose:FALSEpara ficar em silêncio.
Este exercício faz parte do curso
Aprendizado Supervisionado em R: Regressão
Instruções do exercício
- Preencha os espaços para executar
xgb.cv()nos dados de treino tratados; atribua a saída à variávelcv.- Use
as.matrix()para converter o data frame tratado em matriz. - Use 50 rodadas e validação cruzada com 5 folds.
- Defina
early_stopping_roundscomo 5. - Defina
etacomo 0.75 emax_depthcomo 5.
- Use
- Obtenha o data frame
evaluation_loga partir decve atribua-o à variávelelog. Cada linha deevaluation_logcorresponde a uma nova árvore, então o número da linha indica o número de árvores no modelo. - Preencha os espaços para obter o número de árvores com o valor mínimo das colunas
train_rmse_meanetest_rmse_mean.which.min()(docs) retorna o índice do valor mínimo em um vetor.- Quantas árvores você precisa?
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Run xgb.cv
cv <- xgb.cv(data = ____,
label = ___,
nrounds = ___,
nfold = ___,
objective = "reg:squarederror",
eta = ___,
max_depth = ___,
early_stopping_rounds = ___,
verbose = FALSE # silent
)
# Get the evaluation log
elog <- ___
# Determine and print how many trees minimize training and test error
elog %>%
summarize(ntrees.train = ___, # find the index of min(train_rmse_mean)
ntrees.test = ___) # find the index of min(test_rmse_mean)