Gradient boosted trees: modelagem
Gradient boosting é uma técnica para melhorar o desempenho de outros modelos. A ideia é rodar um modelo fraco, mas fácil de calcular. Em seguida, você substitui os valores de resposta pelos resíduos desse modelo e ajusta outro modelo. Ao “somar” o modelo de predição da resposta original com o novo modelo de predição dos resíduos, você obtém um modelo mais preciso. Esse processo pode ser repetido várias vezes: você executa novos modelos para prever os resíduos dos modelos anteriores e soma os resultados. A cada iteração, o modelo fica mais forte.
Para tornar isso mais concreto, o sparklyr usa gradient boosted trees, ou seja, gradient boosting com árvores de decisão como o modelo fraco e fácil de calcular. Elas podem ser usadas tanto para problemas de classificação (quando a variável resposta é categórica) quanto para regressão (quando a variável resposta é contínua). No caso de regressão, que é o que você usará aqui, a medida de quão mal um ponto foi ajustado é o resíduo.
Árvores de decisão são abordadas com mais profundidade nos cursos Supervised Learning in R: Classification e Supervised Learning in R: Regression. Este último também cobre gradient boosting.
Para executar um modelo de gradient boosted trees no sparklyr, chame ml_gradient_boosted_trees(). O uso dessa função foi discutido no primeiro exercício deste capítulo.
Este exercício faz parte do curso
Introdução ao Spark com sparklyr em R
Instruções do exercício
Uma conexão Spark foi criada para você como spark_conn. Uma tibble vinculada aos metadados/timbre de faixas combinados e filtrados armazenados no Spark foi predefinida como track_data_to_model_tbl.
- Obtenha as colunas que contêm a string
"timbre"para usar como features.- Use
colnames()para obter os nomes das colunas detrack_data_to_model_tbl. Observe quenames()não vai fornecer o que você precisa. - Use
str_subset()para filtrar as colunas. - O argumento
patterndessa função deve serfixed("timbre"). - Atribua o resultado a
feature_colnames.
- Use
- Crie a
formulado modelo usandoreformulate().- O argumento
termlabels(entradas da fórmula) deve serfeature_colnames. - O argumento
response(saída da fórmula) deve ser"year". - Atribua o resultado a
year_formula. - Usar
reformulate()dessa forma combina todas as variáveis emfeature_colnamescom um sinal+para formar o lado direito daformula. Isso resulta em uma fórmulayear ~ timbre1 + timbre2 + ... + timbre12, que define a relação entre as variáveis a serem incluídas no modelo.
- O argumento
- Execute o modelo de gradient boosting.
- Chame
ml_gradient_boosted_trees()com ayear_formulaque você criou como único argumento. - Atribua o resultado a
gradient_boosted_trees_model.
- Chame
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl
feature_colnames <- track_data_to_model_tbl %>%
# Get the column names
___ %>%
# Limit to the timbre columns
___(___(___))
feature_colnames
# Create the formula for the model
year_formula <- ___
gradient_boosted_trees_model <- track_data_to_model_tbl %>%
# Run the gradient boosted trees model
___