アイテムベースモデルとユーザーベースモデルの比較
これまでに 2 つの KNN 手法を見てきました。1 つ目はアイテム・アイテム KNN で、ユーザーが評価した映画のうち、最も類似した \(k\) 本の平均を使って、まだ観ていない映画の評価を推定します。もう 1 つはユーザー・ユーザー KNN で、対象の映画に対して、最も類似した \(k\) 人のユーザーが付けた評価の平均を使って、ターゲットユーザーの評価を推定します。
ここではこの 2 つを比較し、user_002 が Forrest Gump にどんな評価を付けるかを計算します。
類似ユーザーがその映画に付けた評価に基づいて予測する user_rating_predictor モデルと、ターゲットユーザーが類似映画に付けた評価に基づいて予測する movie_rating_predictor のコードは書き始めてあります。
KNeighborsRegressor はすでにインポート済みです。
この演習はコースの一部です
Pythonでつくるレコメンデーションエンジン
演習の手順
- ユーザー・ユーザー K-nearest neighbors モデル
user_knnを作成します。 user_knnモデルを学習させ、target_user_xに対して予測します。- 同様に、アイテム・アイテム K-nearest neighbors モデル
movie_knnを学習させ、target_movie_xに対して予測します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Instantiate the user KNN model
user_knn = ____()
# Fit the model and predict the target user
user_knn.____(other_users_x, other_users_y)
user_user_pred = user_knn.____(target_user_x)
print("The user-user model predicts {}".format(user_user_pred))
# Instantiate the user KNN model
movie_knn = KNeighborsRegressor()
# Fit the model on the movie data and predict
movie_knn.____(other_movies_x, other_movies_y)
item_item_pred = movie_knn.____(target_movie_x)
print("The item-item model predicts {}".format(item_item_pred))