(一)外围架构
推荐系统是如何和其他网站进行接口的
一般来说,每个网站都会有一个UI系统,UI系统负责给用户展示网页并和用户交 互。网站会通过日志系统将用户在UI上的各种各样的行为记录到用户行为日志中。日志可能存储 在内存缓存里,也可能存储在数据库中,也可能存储在文件系统中。而推荐系统通过分析用户的 行为日志,给用户生成推荐列表,最终展示到网站的界面上。下图便是这样的一个例子。

数据搜集和存储

按照前面数据的规模和是否需要实时存取,不同的行为数据将被存储在不同的媒介中。一般 来说,需要实时存取的数据存储在数据库和缓存中,而大规模的非实时地存取数据存储在分布式 文件系统(如HDFS)中。 数据能否实时存取在推荐系统中非常重要,因为推荐系统的实时性主要依赖于能否实时拿到 用户的新行为。只有快速拿到大量用户的新行为,推荐系统才能够实时地适应用户当前的需求, 给用户进行实时推荐。
(二)推荐系统架构
3种联系用户和物品的推荐系统

基于特征的推荐系统架构

用户的特征种类:
- 人口统计学特征
- 用户行为特征
- 用户话题特征
如果要在一个系统中把上面提到的各种特征和任务都统筹考虑,那么系统将会非常复杂,而 且很难通过配置文件方便地配置不同特征和任务的权重。
改进的方法:
推荐系统需要由多个推荐引擎组 成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定 权重或者优先级合并、排序然后返回。

这样做的好处:
一:可以方便的增加或删除引擎
二:可以实现推荐引擎级别的用户反馈
(三)推荐引擎架构
推荐引擎的架构主要包括3部分
该部分负责从数据库或者缓存中拿到用户行为数据,通过分析不同行为,生成当前用户 的特征向量。不过如果是使用非行为特征,就不需要使用行为提取和分析模块了。该模 块的输出是用户特征向量。
该部分负责将用户的特征向量通过特征-物品相关矩阵转化为初始推荐物品列表。
该部分负责对初始的推荐列表进行过滤、排名等处理,从而生成最终的推荐结果。

生成用户特征向量


特征-物品相关推荐
下面的代码给出了相关推荐模 块的大体工作流程

过滤模块
- 用户已经产生过行为物品
- 候选物品以外的物品
- 某些质量很差的物品
排名模块
- 1 新颖性排名
- 2 多样性
- 3 时间多样性
- 4 用户反馈
网友评论