Membagi data dengan efek kelompok
Sebelum Anda dapat menjalankan model apa pun, Anda perlu membagi data menjadi himpunan pelatihan dan pengujian. Ada satu komplikasi pada himpunan data ini, sehingga Anda tidak bisa begitu saja memanggil sdf_random_split(). Komplikasinya adalah setiap track dari satu artis sebaiknya muncul dalam himpunan yang sama; model Anda akan tampak lebih akurat daripada kenyataannya jika track dari seorang artis digunakan untuk melatih model lalu muncul di himpunan pengujian.
Trik untuk mengatasinya adalah dengan membagi hanya ID artis, lalu melakukan inner join ID yang telah dibagi tersebut ke himpunan data asli. Perhatikan bahwa artist_id lebih andal daripada artist_name untuk pembagian, karena beberapa artis menggunakan variasi nama antara track. Sebagai contoh, Duke Ellington terkadang memiliki nama artis "Duke Ellington", tetapi di lain waktu bernama "Duke Ellington & His Orchestra", atau salah satu dari beberapa variasi ejaan.
Latihan ini merupakan bagian dari kursus
Pengantar Spark dengan sparklyr di R
Instruksi latihan
Koneksi Spark telah dibuat untuk Anda sebagai spark_conn. Sebuah tibble yang terhubung ke gabungan dan penyaringan data metadata/timbre track yang disimpan di Spark telah didefinisikan sebelumnya sebagai track_data_tbl.
- Bagi ID artis menjadi himpunan pelatihan dan pengujian, dan simpan hasilnya ke
training_testing_artist_ids.- Pilih kolom
artist_iddaritrack_data_tbl. - Dapatkan baris yang unik.
- Bagi menjadi 70% pelatihan dan 30% pengujian.
- Pilih kolom
- Lakukan inner join himpunan data pelatihan ke
track_data_tblberdasarkanartist_id, dan simpan hasilnya ketrack_data_to_model_tbl. - Lakukan inner join himpunan data pengujian ke
track_data_tblberdasarkanartist_id, dan simpan hasilnya ketrack_data_to_predict_tbl.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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
___