【问题标题】:How to use collaborative filtering to predict users by their behavior?如何使用协同过滤通过用户行为预测用户?
【发布时间】:2020-02-05 13:08:04
【问题描述】:

这似乎是一件很奇怪的事情,但是如何通过他/她的推荐来预测某个用户呢?

示例:

也许,我们正在做一个关于用户电影评分如何随时间变化的实验。

我们在第一年(2019 年)和第二年(2020 年)对相同的用户和电影进行了调查。

但是我们的数据库已经崩溃了,所以我们只有第二年的用户推荐,但我们不知道给出了谁的推荐。

我们有:第一年的用户推荐矩阵,如下所示:

第二年的用户推荐矩阵,但没有“目标”列:


因此,通过第一年的数据,我们希望恢复/预测“目标”列 .

通常使用协同过滤来预测电影收视率,但这是逆向问题。

还可以使用协同过滤吗?

如果是,应该对算法进行什么样的交互来解决问题?

或者是否有其他方法或 ML 算法可以做到这一点?

谢谢!

P.S.:如果您将 Python 示例附加到类似的任务中,那就太好了!

很抱歉没有在这篇文章中附上真实的数据和任务,我真的不能这样做有很多原因:)

【问题讨论】:

    标签: python algorithm machine-learning recommendation-engine collaborative-filtering


    【解决方案1】:

    可能有几种方法可以解决这个问题,但我会将其视为assignment problem。您基本上想为用户分配 2020 年的电影评级。为此,您必须:

    1. 定义为用户分配电影评级的成本。这可以通过定义 2020 年电影收视率和 2019 年电影收视率之间的距离函数来完成。一个例子可以是 L2-Norm(欧几里得距离)。因此,将 2020 年电影评分 0 ([1, 2, 4, 4, 6]) 分配给用户 id_0(2019 年评分 = [1, 1, 3, 5, 6])将花费 sqrt(3)

    2. 使用定义的距离函数构建矩阵,反映每个用户与 2020 年电影评分的每一行之间的距离(分配成本)

    3. 使用hungarian algorithm为用户找到 2020 年电影评分的最佳分配(成本最低)

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2012-04-30
      • 2022-07-01
      • 2021-11-19
      • 2013-01-06
      相关资源
      最近更新 更多