Podział danych z uwzględnieniem efektu artysty
Zanim uruchomisz jakikolwiek model, musisz podzielić dane na zbiór treningowy i testowy. Ten zbiór danych kryje jednak pewną pułapkę – nie możesz po prostu wywołać sdf_random_split(). Problem polega na tym, że wszystkie utwory danego artysty powinny trafić do tego samego zbioru. Jeśli niektóre utwory artysty zostaną użyte do trenowania modelu, a inne znajdą się w zbiorze testowym, model będzie wyglądał na dokładniejszy, niż jest w rzeczywistości.
Rozwiązaniem jest podzielenie wyłącznie identyfikatorów artystów, a następnie połączenie tych podzielonych identyfikatorów z oryginalnym zbiorem danych za pomocą łączenia wewnętrznego. Warto pamiętać, że artist_id jest bardziej wiarygodne niż artist_name przy podziale danych, ponieważ niektórzy artyści używają różnych wariantów swojego imienia w różnych utworach. Na przykład Duke Ellington bywa zapisywany jako "Duke Ellington", ale w innych przypadkach pojawia się jako "Duke Ellington & His Orchestra" lub w jednym z kilku wariantów ortograficznych.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
Połączenie ze Sparkiem zostało już utworzone i jest dostępne jako spark_conn. Tibble powiązana z połączonymi i przefiltrowanymi danymi o utworach (metadane i cechy barwy dźwięku) przechowywanymi w Sparku jest wstępnie zdefiniowana jako track_data_tbl.
- Podziel identyfikatory artystów na zbiory treningowy i testowy, przypisując wynik do zmiennej
training_testing_artist_ids.- Wybierz kolumnę
artist_idztrack_data_tbl. - Pobierz unikatowe wiersze.
- Podziel dane na 70% treningowych i 30% testowych.
- Wybierz kolumnę
- Wykonaj łączenie wewnętrzne zbioru treningowego z
track_data_tblpo kolumnieartist_id, przypisując wynik dotrack_data_to_model_tbl. - Wykonaj łączenie wewnętrzne zbioru testowego z
track_data_tblpo kolumnieartist_id, przypisując wynik dotrack_data_to_predict_tbl.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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
___