MSE を用いたモデル評価
テストデータから ALS モデルで予測評価値を生成したら、この演習の最後のパートでは、モデルの Mean Square Error (MSE) を計算するためのデータ準備を行います。MSE は、すべてのユーザーに対する (original rating – predicted rating)**2 の平均で、モデルがデータにどれだけ適合しているか(絶対的な当てはまり)を示します。
そのために、まず ratings_final と predictions の両方の RDD を、((user, product), rating) のタプルになるように整理します。両方の RDD におけるマッピングは次のとおりです。
0: user
1: product
2: rating
次に、変換後の RDD を結合し、最後に二乗差の関数を適用してから mean() を使って MSE を求めます。
ワークスペースには SparkContext sc が用意されています。また、ratings_final と predictions の RDD もすでに利用可能です。
この演習はコースの一部です
PySparkで学ぶBig Data入門
演習の手順
ratingsRDD を((user, product), rating)の形に整理します。predictionsRDD を((user, product), rating)の形に整理します。- prediction RDD を ratings RDD と結合します。
- 元の rating と予測 rating の MSE を用いてモデルを評価し、結果を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Prepare ratings data
rates = ratings_final.____(lambda r: ((r[0], r[1]), ____))
# Prepare predictions data
preds = predictions.____(lambda r: ((____, ____), ____))
# Join the ratings data with predictions data
rates_and_preds = rates.____(preds)
# Calculate and print MSE
MSE = rates_and_preds.____(lambda r: (r[1][0] - r[1]____)**2).mean()
print("Mean Squared Error of the model for the test data = {:.2f}".format(____))