Python 如何使用协同过滤通过用户行为预测用户?

Python 如何使用协同过滤通过用户行为预测用户?,python,algorithm,machine-learning,recommendation-engine,collaborative-filtering,Python,Algorithm,Machine Learning,Recommendation Engine,Collaborative Filtering,这似乎是一件非常奇怪的事情,但是如何通过某个用户的推荐来预测他/她的推荐呢 示例: 也许,我们正在做一个关于用户电影收视率如何随时间变化的实验 我们在第一年(2019年)和第二年(2020年)对相同的用户和电影进行了调查 但是我们的数据库已经崩溃了,所以我们第二年只收到了用户的回复,但我们不知道给出了谁的推荐 第一年我们有:用户推荐矩阵,如下所示: 第二年的用户建议矩阵,但没有“目标”栏: 因此,根据第一年的数据,我们希望恢复/预测“目标”列 通常,协同过滤用于预测电影收视率,但这是一个相反

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

示例:

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

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

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

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

第二年的用户建议矩阵,但没有“目标”栏:


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

通常,协同过滤用于预测电影收视率,但这是一个相反的问题

协作过滤还能使用吗

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

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

谢谢大家!

附言:若你们能在类似的任务中附加Python示例,那个就太好了


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

可能有几种方法可以解决这个问题,但我会将其视为一个问题。您基本上希望为用户分配2020个电影收视率。为此,您必须:

  • 定义为用户分配电影分级的成本。这可以通过定义2020年电影收视率和2019年电影收视率之间的距离函数来实现。例如L2范数(欧氏距离)。因此,将2020年电影收视率0(
    [1,2,4,4,6]
    )分配给用户id_0(2019年收视率=
    [1,1,3,5,6]
    )需要sqrt(3)

  • 使用定义的距离函数构建一个矩阵,反映每个用户和每行2020电影收视率之间的距离(分配成本)

  • 使用以下方法为用户找到2020年电影收视率的最佳分配(成本最低)