【问题标题】:Select item predictions from a prediction DataFrame in Python从 Python 中的预测 DataFrame 中选择项目预测
【发布时间】:2020-05-04 05:27:42
【问题描述】:

总的来说,我对 DataScience/Pandas 很陌生。我主要关注this guide 的推荐系统。

我的主要区别是我的电影数据从一个表开始,我想从该列表中找到与特定电影最相似的电影。

初始数据框如下所示:

然后我将其转换为稀疏数据帧,其中可以显示用户对每部电影的评分:

rating_with_totalRatingCount = rating_with_totalRatingCount.drop_duplicates(['userID', 'movieTitle'])
ratingPivot = rating_with_totalRatingCount.pivot(index = 'movieTitle', columns = 'userID', values = 'userRatingScore').fillna(0).T

最后我应用点积规则来获取预测数据框:

U, sigma, Vt = svds(ratingPivot, k = 50)

sigma = np.diag(sigma)

all_user_predicted_ratings = np.dot(np.dot(U, sigma), Vt) + user_ratings_mean.values.reshape(-1, 1)
preds_df = pd.DataFrame(all_user_predicted_ratings, columns = ratingPivot.columns)

我的问题是,我如何使用这个预测数据框来为某人提供与 Python 中的特定电影最相似的电影?

【问题讨论】:

    标签: python numpy matrix prediction recommender-systems


    【解决方案1】:

    所以,理论上,这就是它的工作原理 -

    1. 您首先创建所谓的效用矩阵。此实用程序矩阵是(用户 X 项)大小矩阵(在您的情况下,您使用枢轴创建它)。效用矩阵可以有不同的值作为度量。例如,它可能是电影评分

    2. 效用矩阵通常可以有很多空值(如果用户没有看过电影,那么他们对该电影的评分将不存在)

    3. 现在您可以通过使用矩阵分解方法估计评级本身来重建效用矩阵来处理这个问题。基本上,使用现有评级作为训练数据来找出哪些矩阵相乘时可以最小化损失(即实际评级和预测评级之间的差异)。这样做会估计训练数据中不存在的评分。

    4. 既然您已经估计了一个效用矩阵(用户 x 项目),您所要做的就是得到一个项目-项目相似度矩阵(项目 x 项目)或一个用户-用户相似度矩阵(用户 x 用户)。您可以通过将 (item x user) 与 (user x item) 矩阵相乘的点积来实现,该矩阵是重构效用矩阵的转置。这将产生一个(项目 x 项目)相似度矩阵(更好的方法是将余弦相似度作为其归一化)。

    5. 一旦你取了点积,取单个项目(相似度矩阵中的行)并找到前 10 个值以获得前 10 个最相似的项目。

    6. “相似度”取决于您首先在效用矩阵中使用的度量,在本例中为评级。

    【讨论】:

      猜你喜欢
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2021-07-06
      • 2016-12-14
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多