【问题标题】:Item Prediction from recommender system来自推荐系统的项目预测
【发布时间】:2017-05-24 10:30:39
【问题描述】:

对于基于项目的 CF,我从 python 库中成对得到的相似性。然后我使用这个预测 Implementing your own recommender systems in Python.

pred = ratings.dot(similarity) / np.array([np.abs(similarity).sum(axis=1)])

但我得到了糟糕的评级预测。评分预测在 0.1 - 0.9 左右。这个pred计算有效吗?

【问题讨论】:

  • 您希望得到什么? 0.1 - 0.9 看起来像一个标准化范围,应该没问题,但您的所有值都将在 0.01 and 0.99 (or 1) 之间,具体取决于它们的匹配。你期望得到更大的数字吗? (虽然在标准化和非标准化范围之间,我不会看到推荐性能有任何差异)。
  • 我想得到 0-5 范围内的预测值。有没有可能的方法来转换它?
  • 这是我从那个预测中得到的:[0.11780604 0.12146975 0.118728 ..., 0.11945179 0.11526597 0.11711326]
  • 您始终可以将 0.1-0.9 范围设置为 0-5 范围:(prediction - 0.1) * 6.25
  • @zwer 感谢您的帮助,但是在我使用该等式后,我没有得到 0-5 范围内的值。我发现我的数据范围是 0 - 0.2699459495。我需要将其更改为 0 - 5 以计算评级预测与真值表之间的相关性。

标签: python numpy recommendation-engine collaborative-filtering


【解决方案1】:

问题在于预测函数中平均用户评分的计算方式。

ratings 数组上的调用均值包括所有 0 值,代表未由用户评分的电影。

您将希望通过仅对用户评分的评分执行均值函数来创建评分数组。这可以通过对火车数据进行简单的 groupby 操作来执行

mean_user_rating = train_data.groupby('user_id')['rating'].mean()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多