Gegevens verdelen met een groupeffect
Voordat je modellen kunt draaien, moet je je data verdelen in trainings- en testsets. Er zit een complicatie in deze gegevensset, waardoor je niet zomaar sdf_random_split() kunt aanroepen. De complicatie is dat alle tracks van dezelfde artiest in dezelfde set zouden moeten staan; je model lijkt anders nauwkeuriger dan het is als tracks van een artiest het model trainen en vervolgens in de testset opduiken.
De truc hiervoor is om alleen de artist-ID’s te verdelen en die verdeelde ID’s daarna met een inner join te koppelen aan de oorspronkelijke gegevensset. Let op: artist_id is betrouwbaarder dan artist_name voor het verdelen, omdat sommige artiesten variaties op hun naam gebruiken tussen tracks. Zo heeft Duke Ellington soms "Duke Ellington" als artiestnaam, maar ook wel "Duke Ellington & His Orchestra", of één van meerdere spellingsvarianten.
Deze oefening maakt deel uit van de cursus
Introductie tot Spark met sparklyr in R
Oefeninstructies
Er is al een Spark-verbinding voor je gemaakt als spark_conn. Een tibble die is gekoppeld aan de gecombineerde en gefilterde trackmetadata/timbre-data in Spark is vooraf gedefinieerd als track_data_tbl.
- Verdeel de artist-ID’s in trainings- en testsets en sla het resultaat op in
training_testing_artist_ids.- Selecteer de kolom
artist_idvantrack_data_tbl. - Haal de unieke rijen op.
- Verdeel dit in 70% training en 30% testing.
- Selecteer de kolom
- Voer een inner join uit van de trainingsgegevens met
track_data_tblopartist_iden sla het resultaat op intrack_data_to_model_tbl. - Voer een inner join uit van de testgegevens met
track_data_tblopartist_iden sla het resultaat op intrack_data_to_predict_tbl.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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
___