ÎncepețiÎncepe gratuit

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

Vezi cursul

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_id din track_data_tbl.
    • Obține rândurile distincte.
    • Împarte rezultatul în 70% antrenament și 30% testare.
  • Fă un inner join între setul de antrenament și track_data_tbl după artist_id, atribuind rezultatul variabilei track_data_to_model_tbl.
  • Fă un inner join între setul de testare și track_data_tbl după artist_id, atribuind rezultatul variabilei track_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
  ___
Editează și rulează codul