【问题标题】:How recommendation systems work in production?推荐系统如何在生产中工作?
【发布时间】:2017-08-03 13:50:15
【问题描述】:

我是这方面的新手,已经开始学习 Spark。关于推荐系统如何在生产环境中工作,或者更确切地说是如何部署到生产环境,我有一个普遍的问题。

下面是一个电子商务网站系统的小例子。

我了解,一旦系统构建完成,一开始我们可以将数据提供给引擎(我们可以运行作业或运行引擎的程序/进程),它会给出结果,并将其存储针对每个用户返回数据库。下次用户登录时,网站可以从数据库中获取数据,引擎之前计算的数据并显示为推荐项目。

我的困惑是“这些系统”如何根据用户活动动态生成输出。例如如果我在 Youtube 上观看视频并刷新页面,Youtube 就会开始向我显示类似的视频。 那么,我们是否让这些推荐引擎始终在后台运行,并且它们会根据用户的活动不断更新结果?怎么做的这么快又快?

【问题讨论】:

  • 当你得到一个解决方案时,请记得给有用的东西投票并接受你最喜欢的答案(即使你必须自己写),这样 Stack Overflow 才能正确存档问题。跨度>

标签: apache-spark machine-learning recommendation-engine


【解决方案1】:

简答:

  1. 推理速度很快;训练是缓慢的部分。
  2. 再训练是对现有模型的调整,而不是从头开始。
  3. 再培训只是周期性的,很少“按需”。

长答案:

他们根据用户活动的长基线生成此输出。这不是引擎从您最近的视图中得出的:任何人在同一天观看该视频都会得到相同的建议。

一些推荐系统会考虑您的个人历史,但这通常只是根据个人的预测评级对推荐列表进行排序。这是通过您自己的评级(按流派和每个视频的其他特征)的通用模型来完成的。

一般情况下,每天更新一次,变化很小。他们不会在您每次提出请求时从头开始重新训练模型;您的个人模型的参数和权重都存储在您的帐户下。当您添加评分(不仅仅是观看视频)时,您的帐户会被标记,并且模型将在下次方便时更新。

此更新将从您当前的模型开始,并且只需要运行几个时期 - 除非您对大量视频的评分与之前的预测大相径庭。

【讨论】:

  • 谢谢...这真的很有帮助。
【解决方案2】:

要添加到Prune 的答案,根据系统的设计,还可以考虑用户最近的交互。

有两种主要方法:

  • 折叠:您最近的交互用于重新计算您的个人模型的参数,同时保持模型的其余部分不变。这通常非常快,可以响应每个请求。
  • 直接将交互作为输入的模型:某些模型可以通过将用户的交互作为输入来直接计算推荐,而无需存储只能通过重新训练更新的用户表示。例如,您可以通过简单地平均她最近与之交互的项目的表示来表示用户。可以根据每个请求重新计算此表示。

事实上,最后一种方法似乎是 YouTube 系统的一部分。您可以在 Covington 等人的文章中找到详细信息。 用于 YouTube 推荐的深度神经网络 paper

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 2014-06-10
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多