如何构建电影推荐系统?

问题描述:

  • 什么是最好的方法?
  • 使用什么算法?他们的优点和缺点是什么?
  • 为什么目前的电影推荐系统无法提供良好的建议?
+0

可能[webmasters.stackexchange.com](http://webmasters.stackexchange.com)更适合此答案 – 2011-03-09 23:07:25

+0

我知道为什么吗? – melhosseiny 2011-03-09 23:13:03

+0

“为什么大多数电影推荐系统吸?”听起来不像一个编程问题。也许我对webmasters.stackexchange.com不正确 – 2011-03-09 23:15:14

这是一个非常开放的问题,涉及很多不同的概念。

作为最初的讨论点,请考虑k-nearest neighbor algorithm。它被广泛用于类似于电影选择器的问题。这种算法的一个大问题是决定你多少维度用于细分功能空间,选择每个这些维度的属性,使每个增加价值,而不是复制另一个维度的价值的人力投入。

与k-NN算法直接相关的是cluster analysis的字段。当您绘制的具有较为散乱异常团块内的信息数据点,你可以直观地看到,在成群的点相似的一些性质。你可能可以很容易地将一些分散的离群点与一个或另一个丛集合起来,但是会有许多点位于可能适合两个或更多个竞争丛块的丛块之间。解决这一难题的唯一方法是在您的数据点中添加更多的维度参数,以便将那些未提交的异常值绘制成一个丛。 (按照链接看到成群的数据的漂亮的图片。)

此简要介绍引出了下一个概念:Pattern Recognition。这个科目是数学重和理论计算科学,统计学,人工智能,机器学习和洞察力领域的大量研究的主题。这最后一个是半开玩笑,但它指向你的问题的症结所在:计算机如何预测你将来会做什么?简短的回答是它不能。较长的答案试图解释为什么你的口味和情绪在似乎随机的时间看似随机的方向改变。一个好的模式识别系统可能会选择20部你真正喜欢的电影,然后推荐另一部来自其他20部电影,你完全讨厌。系统失败了?是否在算法实现中,初始选择参数用于特征空间的维度,或者因为其他人使用您的Netflix帐户订购'鸭子','巡航' ,'海滩'?

'模式识别'的*页面列出了很多不同的算法和方法。你可以从那里开始阅读,以更好地处理个人的优点和缺点。您也可以尝试在Theoretical Computer Science堆栈中询问此问题以获得长发答案。

来自BellKor的团队赢得了Netflix Prize。所以,可以说,这种方法可能是最好的方法。

要对这些推荐系统的工作原理给出高级,直观的解释,请考虑以下情况。我每周看两次星球大战。现在,如果你不得不向我推荐一部我喜欢的电影,你会选择哪部电影?哈里森福特的电影?一部科幻电影?也许是80年代制作的电影?

推荐系统背后的重要思想是,他们越知道自己喜欢什么(即什么类型,演员等),他们就可以提供更好的建议。但是,如果你的口味互相矛盾(例如,你喜欢Saving Ryan,但也喜欢关于和平主义者的电影),那么很难向你推荐一部电影。

总之,许多推荐算法需要知道:

  1. 你喜欢什么:这涉及知道什么功能设置在录制你喜欢什么电影使用。例如。什么是电影的流派,电影中有什么演员等等。
  2. 什么电影与你喜欢的相似。这涉及到根据您在上一步中使用的功能集找到一个很好的相似性度量标准。