python - 如何使用协同过滤通过用户行为来预测用户?

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

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

示例:

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

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

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

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

Users-Reccomendation matrix 1

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

enter image description here

<小时/>

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

通常,协同过滤用于预测电影评分,但这是一个逆向问题。

协同过滤还能用吗?

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

或者是否有其他方法或机器学习算法可以做到这一点?

谢谢!

PS:如果您能附上类似任务的 Python 示例,那就太好了!

很抱歉没有在这篇文章中附加真实的数据和任务,由于很多原因我确实无法做到这一点:)

最佳答案

可能有多种方法可以解决这个问题,但我会将其视为 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. 使用定义的距离函数构建一个矩阵,反射(reflect)每个用户与 2020 年电影评分的每一行之间的距离(分配成本)

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

关于python - 如何使用协同过滤通过用户行为来预测用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076554/

相关文章:

python - 从列表列表中提取元素 - Python Pandas

python - 如何返回 Pandas 数据框列中的最大值和关联索引

algorithm - 箱子堆叠问题

python - DataAugmentation 方法在我的数据集中添加了多少图像? (CNN 凯拉斯)

python - 处理 scikit-learn tree.decisiontreeclassifier 中的维度

python - 如何继承 int 并使用 isinstance 来识别它的实例?

python - 将元素列表分配到具有不同排除项的 3 个列表中

algorithm - Bellman-Ford算法部分证明

java - 将多个字符串散列为一个哈希

python - python 中的线程池没有预期的那么快