有什么统计方法可以推荐像Netflix上的电影?


14

我正在寻找一种动态模型来向用户推荐电影。每当用户观看电影或对电影进行评级时,建议均应更新。为了简单起见,我考虑考虑两个因素:

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

如何建立这样的模型?学术文献对此有何建议?

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


3
我认为这不是太宽泛而无法回答。例如,它有2个推荐答案。
gung-恢复莫妮卡

2
试试Coursera的Mining Massive Datasets及其免费书籍!
费利佩·杰拉德

2
您可能想要查找矩阵和/或张量分解。
马克·克莱森

1
@usεr11852我的回答比问题要广泛。
shadowtalker

1
@usεr11852,问题标题问,“那里有什么统计方法...?” 最后一句询问是否还有回归以外的方法。我认为以下几个答案提供了这类信息。
gung-恢复莫妮卡

Answers:


14

这实际上是机器学习领域中一个相对著名的问题。大约在2006年,Netflix为该算法提供了100万美元,该算法为其推荐系统提供了最佳的合理改进。在这本有关入门机器学习的Caltech教科书中,简要讨论了获胜解决方案的理论。

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

这可能使解决方案听起来很简单,但要平衡竞争算法并为每种情况确定最佳猜测的优先级,绝对不是一件容易的事。Netflix提供了如此丰厚的奖金这一事实应该使挑战的规模变得显而易见。

如果您刚刚开始机器学习,那么根据您的兴趣水平和数学背景,检查以上资源可能会有所帮助。因此,回归可能会很好,但可能会有明显更好的性能。


2
+1为Netflix奖。正如您所指出的那样,该奖品很好地表明了这一挑战的艰巨性。
Cort Ammon

11

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

您可能没有意识到就添加了标签,但实际上您正在寻找推荐系统的信息。您可能要从协作过滤开始,或者最好在该页面上引用Ricci,Rokach和Shapira撰写的《推荐系统简介手册》


我确实更深入地研究了标签,并且遇到了有关协作过滤的大部分示例。如果我理解这个概念,那么该方法的问题在于它取决于其他用户的输入。我正在寻找一个用户,没有其他数据或其他可选数据的情况下的方法。会看看您的其他参考资料。
JohnAndrews 2015年

1
@JohnAndrews:我认为ssdecontrol可为您提供最相关的建议。您需要研究推荐系统文献。有很多技术,例如。NNMFFunk SVD最近邻居分类器的许多不同变体等,以列举一些明显的分类器。最后,您想使用协作式筛选,但不能没有任何背景就“潜入”。
usεr11852

@JohnAndrews CrossValidated通常是开始学习某个主题的不好的地方,尤其是如果您仅按标签搜索。如何查看我链接的参考文献呢?维基百科的统计文章并不总是可靠的,但是它们相当不错,并引用了大量参考文献。
shadowtalker

6

您应该在Coursera上查看Andrew Ng的课程:https : //www.coursera.org/learn/machine-learning 它提供了有关构建推荐系统的课程,这似乎是您所需要的。本质上,它是一种线性回归的形式,可以从对电影评分的人那里学习电影的综合属性,并使用它来预测未对电影进行评分/观看的人的推荐。


3
欢迎来到我们的网站!感谢您提供一些概述链接内容的信息,而不仅仅是提供“裸露”链接-非常感谢。
银鱼

4

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

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

您可以使平方矩阵等级更小或更大,以分别包含或多或少的此类潜在因子相互作用。

快速/高效的稀疏SVD有多种免费软件实现。例如redsvd或vowpal-wabbit,因此在编写自己的脚本之前,您可能需要尝试一下。

(*)这些条目大多数为零,因为大多数用户未对大多数电影进行评级。即矩阵非常稀疏。

参考文献:


Netflix以前使用了什么?
jona 2015年

2
一种称为“电影匹配”的算法,该算法尚未公开,但已被描述为“多年来精炼的各种因素的线性组合”,例如加权平均全球收视率(G)+加权平均用户[u]评级+加权平均电影[m]评级等...
arielf

感谢详细的回答。会深入研究。至于线性组合,那过度参数化不是一个大问题吗?那将是我的首选方法。但是,SVD听起来很有希望。
JohnAndrews 2015年

如果仅添加可以提高泛化误差的因素,这不是问题。显然,您需要在看不见的数据上测试所有此类添加项,以获得必要的信心。
arielf 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.