Gradient boosted trees : modélisation
Le gradient boosting est une technique qui améliore les performances d’autres modèles. L’idée est d’entraîner un modèle « faible » mais rapide à calculer. Ensuite, vous remplacez les valeurs de réponse par les résidus de ce modèle et ajustez un nouveau modèle. En « additionnant » 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 autant de fois que nécessaire : à chaque itération, un nouveau modèle prédit les résidus des modèles précédents, et vous ajoutez les résultats. À chaque itération, le modèle devient de plus en plus performant.
Pour un exemple concret, sparklyr utilise des gradient boosted trees, c’est‑à‑dire du gradient boosting avec des arbres de décision comme modèles faibles mais rapides à calculer. Ils s’appliquent aussi bien aux problèmes de classification (variable réponse catégorielle) qu’aux problèmes de régression (variable réponse continue). Dans le cas de la régression, comme ici, la mesure de la qualité d’ajustement d’un point est le résidu.
Les arbres de décision sont présentés plus en détail dans les cours Supervised Learning in R: Classification et Supervised Learning in R: Regression. Ce dernier aborde également 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é abordée dans le premier exercice de ce chapitre.
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions
Une connexion Spark a été créée pour vous sous le nom spark_conn. Une tibble associée aux métadonnées de pistes et aux données de timbre combinées et filtrées, stockées dans Spark, a été prédéfinie sous le nom track_data_to_model_tbl.
- Récupérez les colonnes contenant la chaîne
"timbre"à utiliser comme variables explicatives.- Utilisez
colnames()pour obtenir les noms de colonnes detrack_data_to_model_tbl. Remarque :names()ne donnera pas le résultat souhaité. - 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. - Utiliser
reformulate()de cette manière combine toutes les variables defeature_colnamesavec un signe+pour former le membre de droite 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()avecyear_formulacomme unique argument. - Assignez le résultat à
gradient_boosted_trees_model.
- Appelez
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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
___