시작하기무료로 시작하기

그룹 효과를 고려한 데이터 분할

모델을 실행하기 전에 데이터를 학습용과 테스트용으로 분할해야 해요. 이 데이터셋에는 한 가지 복잡한 점이 있어서, 그냥 sdf_random_split()만 호출하면 안 됩니다. 같은 아티스트의 트랙은 반드시 같은 세트에 들어가야 한다는 점이에요. 특정 아티스트의 트랙으로 모델을 학습시키고, 그 아티스트의 다른 트랙이 테스트 세트에 들어가면 모델이 실제보다 더 정확해 보일 수 있습니다.

이를 해결하는 요령은 아티스트 ID만 먼저 분할한 다음, 그렇게 분할된 ID를 원본 데이터셋에 내부 조인하는 것입니다. 트랙마다 아티스트 이름 표기가 달라질 수 있으므로, 분할에는 artist_name보다 artist_id가 더 신뢰할 만합니다. 예를 들어 Duke Ellington의 경우 아티스트 이름이 어떤 트랙에서는 "Duke Ellington"이고, 다른 트랙에서는 "Duke Ellington & His Orchestra"처럼 표기되거나 철자가 변형되기도 합니다.

이 연습은 강의의 일부입니다

R에서 sparklyr로 시작하는 Spark

강의 보기

연습 안내

Spark 연결은 spark_conn으로 생성되어 있습니다. Spark에 저장된 결합되고 필터링된 트랙 메타데이터/음색(timbre) 데이터를 가리키는 tibble은 track_data_tbl로 미리 정의되어 있습니다.

  • 아티스트 ID를 학습용과 테스트용으로 분할하고 결과를 training_testing_artist_ids에 할당하세요.
    • track_data_tbl에서 artist_id 열을 선택하세요.
    • 고유 행을 가져오세요.
    • 이를 학습용 70%, 테스트용 30%로 분할하세요.
  • 학습용 데이터셋을 artist_idtrack_data_tbl과 내부 조인하여 결과를 track_data_to_model_tbl에 할당하세요.
  • 테스트용 데이터셋을 artist_idtrack_data_tbl과 내부 조인하여 결과를 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
  ___
코드 편집 및 실행