Partitionner des données avec un effet de groupe
Avant de pouvoir exécuter des modèles, vous devez partitionner vos données en ensembles d’entraînement et de test. Il y a une particularité avec cet ensemble de données, qui fait que vous ne pouvez pas simplement appeler sdf_random_split(). La difficulté vient du fait que toutes les pistes d’un même artiste doivent apparaître dans le même ensemble ; votre modèle semblera plus précis qu’il ne l’est réellement si des pistes d’un artiste servent à l’entraîner puis réapparaissent dans l’ensemble de test.
L’astuce consiste à ne partitionner que les identifiants d’artistes, puis à faire une jointure interne de ces identifiants partitionnés avec l’ensemble de données d’origine. Notez que artist_id est plus fiable que artist_name pour la partition, car certains artistes utilisent des variantes de leur nom d’une piste à l’autre. Par exemple, Duke Ellington a parfois un nom d’artiste "Duke Ellington", mais d’autres fois "Duke Ellington & His Orchestra", ou encore l’une de plusieurs variantes orthographiques.
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 relié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_tbl.
- Partitionnez les identifiants d’artistes en ensembles d’entraînement et de test, et assignez le résultat à
training_testing_artist_ids.- Sélectionnez la colonne
artist_iddetrack_data_tbl. - Obtenez les lignes distinctes.
- Partitionnez cela en 70 % entraînement et 30 % test.
- Sélectionnez la colonne
- Faites une jointure interne de l’ensemble d’entraînement avec
track_data_tblparartist_id, et assignez le résultat àtrack_data_to_model_tbl. - Faites une jointure interne de l’ensemble de test avec
track_data_tblparartist_id, et assignez le résultat àtrack_data_to_predict_tbl.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# track_data_tbl has been pre-defined
track_data_tbl
training_testing_artist_ids <- track_data_tbl %>%
# Select the artist ID
___ %>%
# Get distinct rows
___ %>%
# Partition into training/testing sets
___
track_data_to_model_tbl <- track_data_tbl %>%
# Inner join to training partition
___
track_data_to_predict_tbl <- track_data_tbl %>%
# Inner join to testing partition
___