Разбиение данных с учётом группового эффекта
Прежде чем запускать модели, необходимо разбить данные на обучающую и тестовую выборки. В этом наборе данных есть одна особенность, из-за которой нельзя просто вызвать sdf_random_split(). Проблема в том, что все треки одного исполнителя должны попадать в одну и ту же выборку: если треки исполнителя используются при обучении модели, а затем встречаются и в тестовой выборке, модель окажется искусственно точнее, чем есть на самом деле.
Решение состоит в том, чтобы разбить на части только идентификаторы исполнителей, а затем выполнить внутреннее объединение этих разбитых идентификаторов с исходным набором данных. Обратите внимание: для разбиения надёжнее использовать artist_id, а не artist_name, поскольку некоторые исполнители записывают треки под разными вариантами своего имени. Например, Дюк Эллингтон иногда указан как "Duke Ellington", а иногда — как "Duke Ellington & His Orchestra" или в одном из нескольких вариантов написания.
Это упражнение является частью курса
Введение в Spark с sparklyr на R
Инструкции к упражнению
Подключение к Spark уже создано и доступно как spark_conn. Тиббл, привязанный к объединённым и отфильтрованным метаданным треков и данным о тембре, хранящимся в Spark, предварительно определён как track_data_tbl.
- Разбейте идентификаторы исполнителей на обучающую и тестовую выборки, сохранив результат в
training_testing_artist_ids.- Выберите столбец
artist_idизtrack_data_tbl. - Получите уникальные строки.
- Разбейте их на 70% для обучения и 30% для тестирования.
- Выберите столбец
- Выполните внутреннее объединение обучающей выборки с
track_data_tblпо столбцуartist_id, сохранив результат вtrack_data_to_model_tbl. - Выполните внутреннее объединение тестовой выборки с
track_data_tblпо столбцуartist_id, сохранив результат вtrack_data_to_predict_tbl.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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
___