ComenzarEmpieza gratis

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

Ver curso

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 de track_data_to_model_tbl. Nota que names() no te dará lo que necesitas.
    • Usa str_subset() para filtrar las columnas.
    • El argumento pattern de esa función debe ser fixed("timbre").
    • Asigna el resultado a feature_colnames.
  • Crea la formula del modelo usando reformulate().
    • El argumento termlabels (entradas de la fórmula) debe ser feature_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 de feature_colnames con un signo + para formar el lado derecho de la formula. Esto da como resultado una fórmula year ~ timbre1 + timbre2 + ... + timbre12, que define la relación entre las variables que se incluirán en el modelo.
  • Ejecuta el modelo de gradient boosting.
    • Llama a ml_gradient_boosted_trees() con la year_formula que creaste como único argumento.
    • Asigna el resultado a gradient_boosted_trees_model.

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
  ___
Editar y ejecutar código