1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

グループ効果を考慮したデータの分割

モデルを実行する前に、データを訓練セットとテストセットに分割する必要があります。ただし、このデータセットには注意が必要な点があり、単純に sdf_random_split() を呼び出すだけでは対応できません。同じアーティストのトラックは同じセットにまとめる必要があります。あるアーティストのトラックをモデルの訓練に使い、同じアーティストの別のトラックがテストセットに含まれてしまうと、モデルの精度が実際よりも高く見えてしまうからです。

この問題を解決するには、アーティスト ID のみを先に分割し、その分割済み ID を元のデータセットに内部結合する方法が有効です。なお、一部のアーティストはトラックによって表記が異なる場合があるため、artist_name よりも artist_id を使った分割の方が信頼性が高くなります。たとえば、Duke Ellington の artist_name は "Duke Ellington" の場合もあれば、"Duke Ellington & His Orchestra" や複数の表記揺れを持つ場合もあります。

指示

100 XP

Spark接続は spark_conn として作成済みです。Sparkに格納された、結合・フィルタリング済みのトラックメタデータとティンバーデータを持つ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 に代入します。