Partiționarea datelor cu un efect de grup
Înainte de a rula orice model, trebuie să împarți datele în seturi de antrenament și de testare. Există o complicație specifică acestui set de date, care înseamnă că nu poți apela pur și simplu sdf_random_split(). Problema este că toate piesele unui artist ar trebui să apară în același set; modelul va părea mai precis decât este în realitate dacă piese ale aceluiași artist sunt folosite atât la antrenament, cât și la testare.
Soluția este să partiționezi doar ID-urile artiștilor, apoi să faci un inner join între aceste ID-uri partiționare și setul de date original. Reține că artist_id este mai fiabil decât artist_name pentru partiționare, deoarece unii artiști folosesc variante ale numelui lor de la o piesă la alta. De exemplu, Duke Ellington apare uneori cu numele "Duke Ellington", alteori cu "Duke Ellington & His Orchestra" sau cu alte variante ortografice.
Acest exercițiu face parte din cursul
Introducere în Spark cu sparklyr în R
Instrucțiuni pentru exercițiu
O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble atașat la datele combinate și filtrate privind metadatele pistelor/timbrului, stocate în Spark, a fost predefinit ca track_data_tbl.
- Partiționează ID-urile artiștilor în seturi de antrenament și de testare, atribuind rezultatul variabilei
training_testing_artist_ids.- Selectează coloana
artist_iddintrack_data_tbl. - Obține rândurile distincte.
- Împarte rezultatul în 70% antrenament și 30% testare.
- Selectează coloana
- Fă un inner join între setul de antrenament și
track_data_tbldupăartist_id, atribuind rezultatul variabileitrack_data_to_model_tbl. - Fă un inner join între setul de testare și
track_data_tbldupăartist_id, atribuind rezultatul variabileitrack_data_to_predict_tbl.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___