LoslegenKostenlos loslegen

Daten mit Gruppeneffekt partitionieren

Bevor du Modelle trainieren kannst, musst du deine Daten in Trainings- und Testsets aufteilen. Bei diesem Datensatz gibt es jedoch eine Besonderheit, sodass du nicht einfach sdf_random_split() auf den gesamten Datensatz anwenden solltest. Der Grund: Alle Tracks eines Künstlers sollten im selben Set landen. Wenn Tracks eines Künstlers zum Trainieren verwendet werden und derselbe Künstler im Testset auftaucht, wirkt dein Modell genauer, als es tatsächlich ist.

Der Trick: Partitioniere nur die Künstler-IDs und verknüpfe diese partitionierten IDs anschließend per Inner Join mit dem ursprünglichen Datensatz. Beachte, dass artist_id für die Partitionierung verlässlicher ist als artist_name, da manche Künstler ihren Namen zwischen Tracks variieren. Duke Ellington erscheint zum Beispiel manchmal als "Duke Ellington", ein anderes Mal als "Duke Ellington & His Orchestra" oder mit einer der mehreren Schreibvarianten.

Diese Übung ist Teil des Kurses

Einführung in Spark mit sparklyr in R

Kurs anzeigen

Anleitung zur Übung

Es wurde bereits eine Spark-Verbindung als spark_conn erstellt. Ein Tibble, das mit den kombinierten und gefilterten Track-Metadaten/den Timbre-Daten in Spark verknüpft ist, ist als track_data_tbl vordefiniert.

  • Partitioniere die Künstler-IDs in Trainings- und Testsets und weise das Ergebnis training_testing_artist_ids zu.
    • Wähle die Spalte artist_id aus track_data_tbl aus.
    • Ermittle die eindeutigen Zeilen.
    • Partitioniere dies in 70 % Training und 30 % Testing.
  • Führe einen Inner Join des Trainingsdatensatzes mit track_data_tbl anhand von artist_id durch und weise das Ergebnis track_data_to_model_tbl zu.
  • Führe einen Inner Join des Testdatensatzes mit track_data_tbl anhand von artist_id durch und weise das Ergebnis track_data_to_predict_tbl zu.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen