MovieLens データセットを RDD に読み込む
Collaborative filtering はレコメンダーシステムの手法で、ユーザーがさまざまなプロダクトに付けた評価や行動履歴を基に新しい項目を推奨します。Machine Learning とデータの並列処理の発展により、レコメンダーシステムはここ数年で広く普及し、映画、音楽、ニュース、書籍、研究論文、検索クエリ、ソーシャルタグなど幅広い分野で利用されています。この3部構成の演習では、PySpark MLlib を使って MovieLens 100k dataset のサブセットを用い、シンプルな映画レコメンドシステムを開発することが目標です。
最初のパートでは、まず MovieLens のデータ(ratings.csv)を RDD に読み込みます。RDD の各行は userId,movieId,rating,timestamp の形式なので、timestamp 列を取り除き、MovieLens のデータを Ratings オブジェクト(userID, productID, rating)にマップします。最後に、RDD を学習用とテスト用の RDD に分割します。
ワークスペースには SparkContext sc が用意されています。ratings.csv へのパスである file_path 変数、および ALS 用のクラス(すなわち Rating)もすでに利用可能です。
この演習はコースの一部です
PySparkで学ぶBig Data入門
演習の手順
ratings.csvデータセットを RDD に読み込みます。- 区切り文字
,で RDD を分割します。 - RDD の各行について、
Rating()クラスを使ってuserID, productID, ratingのタプルを作成します。 - データを学習データとテストデータに(0.8 と 0.2 で)ランダムに分割します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Load the data into RDD
data = sc.____(file_path)
# Split the RDD
ratings = data.____(lambda l: l.split('____'))
# Transform the ratings RDD
ratings_final = ratings.____(lambda line: Rating(int(line[0]), int(____), float(____)))
# Split the data into training and test
training_data, test_data = ratings_final.____([0.8, 0.2])