Gradient boosted trees: modelización
El gradient boosting es una técnica para mejorar el rendimiento de otros modelos. La idea es ejecutar un modelo débil pero fácil de calcular. Luego sustituyes los valores de la variable respuesta por los residuos de ese modelo y ajustas otro modelo. Al «sumar» el modelo original que predice la respuesta y el nuevo modelo que predice los residuos, obtienes un modelo más preciso. Puedes repetir este proceso una y otra vez, ejecutando nuevos modelos para predecir los residuos de los modelos anteriores y sumando los resultados. Con cada iteración, el modelo se vuelve más sólido.
Para un ejemplo más concreto, sparklyr utiliza gradient boosted trees, es decir, gradient boosting con árboles de decisión como el modelo débil y fácil de calcular. Pueden usarse tanto en problemas de clasificación (cuando la variable respuesta es categórica) como de regresión (cuando la variable respuesta es continua). En el caso de regresión, que es el que usarás aquí, la medida de lo mal que se ajusta un punto es el residuo.
Los árboles de decisión se tratan con más detalle en los cursos Supervised Learning in R: Classification y Supervised Learning in R: Regression. Este último curso también cubre el gradient boosting.
Para ejecutar un modelo de gradient boosted trees en sparklyr, llama a ml_gradient_boosted_trees(). El uso de esta función se comentó en el primer ejercicio de este capítulo.
Este ejercicio forma parte del curso
Introducción a Spark con sparklyr en R
Instrucciones del ejercicio
Ya tienes creada una conexión a Spark como spark_conn. También se ha predefinido track_data_to_model_tbl, un tibble asociado a los metadatos combinados y filtrados de las pistas y a los datos de timbre almacenados en Spark.
- Obtén las columnas que contienen la cadena
"timbre"para usarlas como características.- Usa
colnames()para obtener los nombres de columnas detrack_data_to_model_tbl. Nota quenames()no te dará lo que necesitas. - Usa
str_subset()para filtrar las columnas. - El argumento
patternde esa función debe serfixed("timbre"). - Asigna el resultado a
feature_colnames.
- Usa
- Crea la
formuladel modelo usandoreformulate().- El argumento
termlabels(entradas de la fórmula) debe serfeature_colnames. - El argumento
response(salida de la fórmula) debe ser"year". - Asigna el resultado a
year_formula. - Usar
reformulate()de esta manera combina todas las variables defeature_colnamescon un signo+para formar el lado derecho de laformula. Esto da como resultado una fórmulayear ~ timbre1 + timbre2 + ... + timbre12, que define la relación entre las variables que se incluirán en el modelo.
- El argumento
- Ejecuta el modelo de gradient boosting.
- Llama a
ml_gradient_boosted_trees()con layear_formulaque creaste como único argumento. - Asigna el resultado a
gradient_boosted_trees_model.
- Llama a
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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
___