Gradient boosted trees : modélisation
Le gradient boosting est une technique qui améliore la performance d'autres modèles. L'idée est d'exécuter un modèle faible mais facile à calculer. Ensuite, vous remplacez les valeurs de la variable réponse par les résidus de ce modèle et vous ajustez un autre modèle. En « ajoutant » le modèle de prédiction de la réponse initiale et le nouveau modèle de prédiction des résidus, vous obtenez un modèle plus précis. Vous pouvez répéter ce processus encore et encore : exécuter de nouveaux modèles pour prédire les résidus des modèles précédents et additionner les résultats. À chaque itération, le modèle devient de plus en plus performant.
Pour donner un exemple concret, sparklyr utilise des gradient boosted trees, c'est‑à‑dire du gradient boosting où l'on emploie des arbres de décision comme modèles faibles mais rapides à calculer. Ceux‑ci peuvent servir autant pour des problèmes de classification (variable réponse catégorielle) que de régression (variable réponse continue). Dans le cas de la régression, que vous utiliserez ici, la mesure de la mauvaise qualité d'ajustement d'un point est le résidu.
Les arbres de décision sont traités plus en profondeur dans les cours Supervised Learning in R: Classification et Supervised Learning in R: Regression. Ce dernier aborde aussi le gradient boosting.
Pour exécuter un modèle de gradient boosted trees dans sparklyr, appelez ml_gradient_boosted_trees(). L'utilisation de cette fonction a été discutée dans le premier exercice de ce chapitre.
Cette activité fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions de l’exercice
Une connexion Spark a été créée pour vous sous le nom spark_conn. Une tibble rattachée aux métadonnées des pistes et aux données de timbre combinées et filtrées, stockées dans Spark, a été préalablement définie sous track_data_to_model_tbl.
- Récupérez les colonnes contenant la chaîne
"timbre"à utiliser comme caractéristiques (features).- Utilisez
colnames()pour obtenir les noms de colonnes detrack_data_to_model_tbl. Notez quenames()ne donnera pas ce qu'il vous faut. - Utilisez
str_subset()pour filtrer les colonnes. - L'argument
patternde cette fonction doit êtrefixed("timbre"). - Assignez le résultat à
feature_colnames.
- Utilisez
- Créez la
formuladu modèle à l'aide dereformulate().- L'argument
termlabels(entrées de la formule) doit êtrefeature_colnames. - L'argument
response(sortie de la formule) doit être"year". - Assignez le résultat à
year_formula. - En utilisant
reformulate()de cette façon, toutes les variables defeature_colnamessont combinées avec un signe+pour former le côté droit de laformula. On obtient ainsi une formuleyear ~ timbre1 + timbre2 + ... + timbre12, qui définit la relation entre les variables à inclure dans le modèle.
- L'argument
- Exécutez le modèle de gradient boosting.
- Appelez
ml_gradient_boosted_trees()avec layear_formulaque vous avez créée comme seul argument. - Assignez le résultat à
gradient_boosted_trees_model.
- Appelez
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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
___