1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Exercice

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.

Instructions

100 XP

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 de track_data_to_model_tbl. Notez que names() ne donnera pas ce qu'il vous faut.
    • Utilisez str_subset() pour filtrer les colonnes.
    • L'argument pattern de cette fonction doit être fixed("timbre").
    • Assignez le résultat à feature_colnames.
  • Créez la formula du modèle à l'aide de reformulate().
    • L'argument termlabels (entrées de la formule) doit être feature_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 de feature_colnames sont combinées avec un signe + pour former le côté droit de la formula. On obtient ainsi une formule year ~ timbre1 + timbre2 + ... + timbre12, qui définit la relation entre les variables à inclure dans le modèle.
  • Exécutez le modèle de gradient boosting.
    • Appelez ml_gradient_boosted_trees() avec la year_formula que vous avez créée comme seul argument.
    • Assignez le résultat à gradient_boosted_trees_model.