[关闭]
@Frankchen 2016-04-08T09:00:07.000000Z 字数 1073 阅读 1256

The Components of a Recommender System

Recommender_systems


一个推荐系统由五部分组成(图1)。本文试图在大方向上给读者展示这一切,在未来我们将展示细节。
此处输入图片的描述

毫无疑问,最核心的部分就是产生对用户的推荐的推荐模型(2)。它负责使用数据,例如用户行为和和推荐元素的描述,并且预测对于给定的用户集合哪些项会令他们感兴趣。显然,在推荐系统领域,巨大的工作量集中于推荐模型。而忘记一个端到端的系统同样拥有其他部分也是比较容易的。

推荐系统很容易成为垃圾输入垃圾输出的系统,于是花费时间在建立一个合适的数据收集和处理部分(1)是值得的。这个部分的内在的工作用途明确的,但是通常来说,这里面通常包括数据清洗和数据一般化步骤再加上特征规划和性能选择。因为推荐模型向上取决于这里的数据,产生的推荐的质量是限制于输入数据的质量好坏的。

推荐模型产生的推荐在展示给用户之前通常需要一些预处理(3)。因此,对某些推荐进行滤除或再排列是很常见的。这个部分负责确保推荐看起来不是那么的愚蠢。此部分可能实现商业逻辑,例如对于特定的用户不推荐某些种类的元素,或者试图增大推荐的多样性,这样可以给与用户更大的选择权。预处理可以在任意的模式下进行,如批处理(即离线)模式、实时处理(即在线)模式或者两种模式的结合,这取决于系统的需求。

在对推荐进行预处理之后,一系列的负责服务和追踪预处理部分的在线模块(4)。为了报告系统表现和你需要从使用和交互中学习的信息,在这里,你将决定需要在log文件中储存什么。如果你想对于产生推荐的不同方法进行在线测试(例如A/B测试),那么这个性能也将在这里实现。

一旦你已经产生了推荐,接下来你需要把推荐展示给用户的方法。用户界面部分(5)定义了用户将会看到什么和用户怎么样和推荐系统交互。用户界面同样对推荐系统的可用性有重大的影响。在之后我们将写下一些实践供大家练习和一些需要注意的陷阱。例如,解释用户为何他们被推荐了某一个元素(例如 “因为你喜欢电影X和Y,那么你也可能喜欢看这部电影”)是很好的实践,这样能让推荐系统的行为更加透明。

这五个部分可以被平行开发,或者相继的开发,所以你可以以适合你的方式来进行开发-取决于你的团队或者你的目标。在实践中,你将经常发现你想要把某些部分开发成比别人的更加完全化。例如,一旦你已经实践了某一个部分,你可能想要在着手于确保数据收集和处理更好的进行上花费更多的时间,而这些只对预处理部分有微小的影响。我们将在未来的博客中讨论这些路径的优缺点和许多的关于如何建立这些部分的实践的例子。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注