Partitionering av data med gruppeffekt
Innan du kan köra några modeller behöver du dela upp dina data i tränings- och testmängder. Det finns en komplikation med den här datamängden som gör att du inte bara kan anropa sdf_random_split(). Komplikationen är att alla spår av en och samma artist bör hamna i samma mängd – modellen kommer att verka mer träffsäker än den egentligen är om spår av en artist används vid träning och sedan dyker upp i testmängden.
Lösningen är att enbart partitionera artist-ID:n och sedan inner-joina de partitionerade ID:na till den ursprungliga datamängden. Observera att artist_id är mer tillförlitligt än artist_name för partitionering, eftersom vissa artister använder varianter av sitt namn på olika spår. Duke Ellington har till exempel ibland artistnamnet "Duke Ellington", men andra gånger "Duke Ellington & His Orchestra" eller någon av flera stavningsvarianter.
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till den kombinerade och filtrerade spårmetadata/klangfärgsdatan som lagras i Spark har fördefinieras som track_data_tbl.
- Partitionera artist-ID:na i tränings- och testmängder och tilldela resultatet till
training_testing_artist_ids.- Välj kolumnen
artist_iditrack_data_tbl. - Hämta distinkta rader.
- Partitionera detta i 70 % träning och 30 % testning.
- Välj kolumnen
- Gör en inner join av träningsdatamängden med
track_data_tblpåartist_idoch tilldela resultatet tilltrack_data_to_model_tbl. - Gör en inner join av testdatamängden med
track_data_tblpåartist_idoch tilldela resultatet tilltrack_data_to_predict_tbl.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___