Rozdělení dat s ohledem na skupinový efekt
Předtím než spustíš jakýkoli model, je potřeba rozdělit data na trénovací a testovací sadu. Tento dataset ale přináší jeden háček, který znamená, že nemůžeš jednoduše zavolat sdf_random_split(). Problém spočívá v tom, že všechny skladby od jednoho umělce by měly skončit ve stejné sadě — pokud by se skladby stejného umělce objevily jak v trénovací, tak v testovací sadě, model by vypadal přesnější, než ve skutečnosti je.
Řešením je rozdělit pouze ID umělců a tato rozdělená ID pak inner joinem připojit k původnímu datasetu. Všimni si, že artist_id je pro rozdělení spolehlivější než artist_name, protože někteří umělci používají napříč skladbami různé varianty svého jména. Například Duke Ellington vystupuje někdy jako "Duke Ellington", jindy jako "Duke Ellington & His Orchestra", nebo v některé z dalších pravopisných variant.
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení je pro tebe již připraveno jako spark_conn. Tibble připojená ke kombinovaným a vyfiltrovaným metadatům skladeb a datům o témbru uloženým ve Sparku je předem definována jako track_data_tbl.
- Rozděl ID umělců na trénovací a testovací sadu a výsledek přiřaď do
training_testing_artist_ids.- Vyber sloupec
artist_idztrack_data_tbl. - Získej unikátní řádky.
- Rozděl je na 70 % trénovacích a 30 % testovacích dat.
- Vyber sloupec
- Připoj trénovací dataset k
track_data_tblpomocí inner joinu podleartist_ida výsledek přiřaď dotrack_data_to_model_tbl. - Připoj testovací dataset k
track_data_tblpomocí inner joinu podleartist_ida výsledek přiřaď dotrack_data_to_predict_tbl.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___