レコメンド手法の比較
このコースでは、ユーザーがまだ見ていない映画をどう評価しそうかを、いくつかの手法(単純な平均評価、KNN、行列因子分解)で予測してきました。最後の演習では、平均評価に基づく予測と行列因子分解の予測を比較し、どちらがうまく機能しているかを測る指標として mean_squared_error() を使います。
平均に基づく予測は avg_pred_ratings_df、計算による予測は calc_pred_ratings_df として読み込まれています。
実測(ground truth)の評価値は act_ratings_df として読み込まれています。
最後に、mean_squared_error() 関数は sklearn.metrics からインポート済みです。
この演習はコースの一部です
Pythonでつくるレコメンデーションエンジン
演習の手順
act_ratings_df、avg_pred_ratings_df、calc_pred_ratings_dfの各 DataFrame から、行 0-20 と列 0-100(比較したい範囲)を抽出します。- 非空セルのみを対象にするため、
actual_valuesDataFrame のマスクを作成します。 - 2 つの予測と実測値との間の平均二乗誤差を算出します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Extract the ground truth to compare your predictions against
actual_values = act_ratings_df.____[:20, :100].values
avg_values = avg_pred_ratings_df.____[:20, :100].values
predicted_values = calc_pred_ratings_df.____[:20, :100].values
# Create a mask of actual_values to only look at the non-missing values in the ground truth
mask = ~np.isnan(____)
# Print the performance of both predictions and compare
print(____(____[mask], avg_values[mask], squared=False))
print(____(____[mask], predicted_values[mask], squared=False))