Particionar datos con un efecto de grupo
Antes de poder ejecutar cualquier modelo, necesitas particionar tus datos en conjuntos de entrenamiento y de prueba. Hay una complicación con este conjunto de datos que impide que simplemente llames a sdf_random_split(). La complicación es que cada pista de un mismo artista debería aparecer en el mismo conjunto; tu modelo parecerá más preciso de lo que realmente es si usas pistas de un artista para entrenarlo y luego otras del mismo artista aparecen en el conjunto de prueba.
El truco para manejar esto es particionar solo los IDs de artista y después hacer un inner join de esos IDs particionados con el conjunto de datos original. Ten en cuenta que artist_id es más fiable que artist_name para particionar, ya que algunos artistas usan variaciones de su nombre entre pistas. Por ejemplo, Duke Ellington a veces tiene un nombre de artista "Duke Ellington", pero otras veces "Duke Ellington & His Orchestra", o alguna de varias variantes ortográficas.
Este ejercicio forma parte del curso
Introducción a Spark con sparklyr en R
Instrucciones del ejercicio
Se ha creado una conexión de Spark para ti como spark_conn. Se ha predefinido un tibble adjunto a los metadatos de pistas y a los datos de timbre combinados y filtrados almacenados en Spark como track_data_tbl.
- Particiona los IDs de artista en conjuntos de entrenamiento y de prueba, asignando el resultado a
training_testing_artist_ids.- Selecciona la columna
artist_iddetrack_data_tbl. - Obtén las filas únicas.
- Particiona esto en 70% entrenamiento y 30% prueba.
- Selecciona la columna
- Haz un inner join del conjunto de entrenamiento con
track_data_tblporartist_id, asignando el resultado atrack_data_to_model_tbl. - Haz un inner join del conjunto de prueba con
track_data_tblporartist_id, asignando el resultado atrack_data_to_predict_tbl.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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
___