НачатьНачать бесплатно

Разбиение данных с учётом группового эффекта

Прежде чем запускать модели, необходимо разбить данные на обучающую и тестовую выборки. В этом наборе данных есть одна особенность, из-за которой нельзя просто вызвать 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
  ___
Редактировать и запускать код