1. 학습
  2. /
  3. 강의
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

연습 문제

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

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

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

지침

100 XP

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

  • 아티스트 ID를 학습용과 테스트용으로 분할하고 결과를 training_testing_artist_ids에 할당하세요.
    • track_data_tbl에서 artist_id 열을 선택하세요.
    • 고유 행을 가져오세요.
    • 이를 학습용 70%, 테스트용 30%로 분할하세요.
  • 학습용 데이터셋을 artist_id로 track_data_tbl과 내부 조인하여 결과를 track_data_to_model_tbl에 할당하세요.
  • 테스트용 데이터셋을 artist_id로 track_data_tbl과 내부 조인하여 결과를 track_data_to_predict_tbl에 할당하세요.