有哪些统计方法可以推荐像 Netflix 这样的电影?

机器算法验证 机器学习 推荐系统 动态回归
2022-01-26 07:23:00

我希望实现一个动态模型来向用户推荐电影。每次用户观看电影或对其进行评分时,都应更新推荐。为了简单起见,我正在考虑考虑两个因素:

  • 用户过去对其他电影的评分
  • 用户观看某些过去电影的时间

如何建立这样一个模型,学术文献有什么建议?

我是这个领域的新手,我猜测线性回归模型可以提供良好的结果,而不是想用更复杂的方法来避免在参数估计中施加不必要的不​​确定性。但也许已经有一些在实践中常用的方法?

4个回答

这其实是机器学习领域比较有名的问题。在 2006 年左右,Netflix 向算法提供了 100 万美元,该算法为其推荐系统提供了最佳合理改进。在这本加州理工学院机器学习入门教科书中简要讨论了获胜解决方案的理论。

基本上使用了集成学习方法特别是,采用了一种混合堆叠这是不平凡的,但有点直观。要理解和谐地使用不同统计方法的直觉,请考虑不同人喜欢同一部电影的不同原因:即,乔可能喜欢 Topgun 是因为他喜欢 80 年代的动作片,而 Jane 喜欢 Topgun 是因为她喜欢带有 Kenny Loggins 配乐的电影。因此,两位观众都观看(并高度评价这部电影)这一事实并不一定意味着他们很可能会喜欢其他电影。理想情况下,预测算法至少在某些方面能够适应这些差异。

这可能使解决方案听起来很简单,但平衡竞争算法并为每种情况确定最佳猜测的优先级绝对不简单。Netflix 提供如此大笔奖金的事实应该使挑战的规模相当明显。

如果您刚刚开始学习机器学习,根据您的兴趣水平和数学背景,查看上述资源可能会有所帮助。所以回归可能会工作得很好,但可能会有更好的性能。

这些问题中的一半挑战是知道要搜索什么。

您可能在不知不觉中添加了标签,但实际上您正在寻找有关推荐系统的信息。您可能想从协同过滤开始,或者更好的是该页面上引用的 Ricci、Rokach 和 Shapira 的推荐系统简介手册。

您应该查看 Andrew Ng 在 Coursera 上的课程: https ://www.coursera.org/learn/machine-learning 它有一个关于构建推荐系统的课程,这似乎是您正在寻找的。本质上,它是一种线性回归的形式,它从给电影评分的人那里学习电影的综合属性,并使用它来预测对没有评分/观看电影的人的推荐。

Netflix 挑战赛(2006 年 10 月 - 2009 年 9 月)中,一个非常大的集成(107 个独立的子模型)最终赢得了 100 万美元的大奖,但值得注意的是,第一个简单(非集成)算法击败了 Netflix Cinematch基准基于广义(稀疏矩阵)SVD。击败 Cinematch 的第一个里程碑是在一个名为 WXYZConsulting 的团队开始比赛后仅 6 天就实现了。

SVD(奇异值分解)是一种矩阵分解算法,您从一个 2d[user, movie]矩阵开始,每个位置 (*) 都有一个评级(1 到 5 颗星)[u, m],然后将其分解为 3 个矩阵,其中中间矩阵是用户和电影之间的潜在交互。

您可以使方阵秩更小或更大,以分别包含更多或更少的此类潜在因素交互作用。

有几种快速/高效稀疏 SVD 的免费软件实现。例如 redsvd 或 vowpal-wabbit,所以在您自己编写之前,您可能想尝试一下。

(*) 这些条目中的大多数都是零,因为大多数用户没有对大多数电影进行评分。即矩阵非常稀疏。

参考: