Particionando dados com efeito de grupo
Antes de executar qualquer modelo, você precisa particionar seus dados em conjuntos de treinamento e teste. Há uma complicação neste conjunto de dados que impede você de simplesmente chamar sdf_random_split(). A questão é que todas as faixas de um mesmo artista devem aparecer no mesmo conjunto; seu modelo pode parecer mais preciso do que realmente é se faixas de um artista forem usadas para treinar o modelo e depois aparecerem no conjunto de teste.
O truque aqui é particionar apenas os IDs de artista e, em seguida, fazer um inner join desses IDs particionados com o conjunto de dados original. Observe que artist_id é mais confiável do que artist_name para particionar, já que alguns artistas usam variações do nome entre faixas. Por exemplo, Duke Ellington às vezes aparece como "Duke Ellington", mas em outras vezes como "Duke Ellington & His Orchestra", ou com algumas variantes de grafia.
Este exercício faz parte do curso
Introdução ao Spark com sparklyr em R
Instruções do exercício
Uma conexão Spark foi criada para você como spark_conn. Uma tibble vinculada aos metadados de faixa combinados/filtrados e aos dados de timbre armazenados no Spark foi predefinida como track_data_tbl.
- Particione os IDs de artista em conjuntos de treinamento e teste, atribuindo o resultado a
training_testing_artist_ids.- Selecione a coluna
artist_iddetrack_data_tbl. - Obtenha apenas as linhas distintas.
- Particione em 70% para treinamento e 30% para teste.
- Selecione a coluna
- Faça um inner join do conjunto de treinamento com
track_data_tblporartist_id, atribuindo o resultado atrack_data_to_model_tbl. - Faça um inner join do conjunto de teste com
track_data_tblporartist_id, atribuindo o resultado atrack_data_to_predict_tbl.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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
___