Aan de slagBegin gratis

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

Bekijk cursus

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_id van track_data_tbl.
    • Haal de unieke rijen op.
    • Verdeel dit in 70% training en 30% testing.
  • Voer een inner join uit van de trainingsgegevens met track_data_tbl op artist_id en sla het resultaat op in track_data_to_model_tbl.
  • Voer een inner join uit van de testgegevens met track_data_tbl op artist_id en sla het resultaat op in track_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
  ___
Code bewerken en uitvoeren