Suddividere i dati con un effetto di gruppo
Prima di eseguire qualsiasi modello, devi suddividere i dati in insiemi di training e testing. C'è però una complicazione in questo insieme di dati, che ti impedisce di chiamare semplicemente sdf_random_split(). La complicazione è che tutte le tracce di uno stesso artista dovrebbero comparire nello stesso insieme: il tuo modello sembrerà più accurato di quanto non sia se tracce di un artista vengono usate per addestrare il modello e poi compaiono anche nel testing set.
Il trucco per gestire questo aspetto è partizionare solo gli ID degli artisti e poi fare un inner join di quegli ID partizionati con il dataset originale. Nota che artist_id è più affidabile di artist_name per la partizione, perché alcuni artisti usano variazioni del proprio nome tra le tracce. Per esempio, Duke Ellington talvolta ha "Duke Ellington" come nome artista, ma altre volte "Duke Ellington & His Orchestra", o una delle diverse varianti di scrittura.
Questo esercizio fa parte del corso
Introduzione a Spark con sparklyr in R
Istruzioni dell'esercizio
È stata creata per te una connessione Spark come spark_conn. È stata predefinita come track_data_tbl una tibble collegata ai metadati delle tracce e ai dati di timbro combinati e filtrati archiviati in Spark.
- Partiziona gli ID degli artisti in insiemi di training e testing, assegnando il risultato a
training_testing_artist_ids.- Seleziona la colonna
artist_idditrack_data_tbl. - Ottieni le righe univoche.
- Partiziona in 70% training e 30% testing.
- Seleziona la colonna
- Esegui un inner join dell'insieme di training con
track_data_tblperartist_id, assegnando il risultato atrack_data_to_model_tbl. - Esegui un inner join dell'insieme di testing con
track_data_tblperartist_id, assegnando il risultato atrack_data_to_predict_tbl.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___