本章主要讲了如何设计一个真实的推荐系统。前面几章都是从理论上讲述了什么是推荐系统?如何利用用户和物品的信息来设计和优化推荐算法?但推荐算法毕竟只是推荐系统的一部分,如何在某个真实场景下设计一个推荐系统?
外围架构
推荐系统并不是孤立的一部分,还需要和其他系统组合才能发挥作用。一般来说推荐系统还需要两个系统进行辅助,一个是UI系统,将推荐结果展示给用户并和用户交互;一个是存储系统,收集用户的行为信息并存储下来,用于推荐算法的优化,而且数据的实时存取对推荐系统的实时性也是很重要的。
内部架构
推荐系统的核心任务分为两个部分,一个是如何为给定用户生成特征,另一个是如何根据特征找到物品。不过如果在一个系统中使用所有特征来完成不同的任务,那么系统就会很复杂,而且不好配置不同任务的权重。因此,推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,推荐系统的任务就是将推荐引擎的结果按照一定优先级合并、排序并返回。推荐系统的架构图如下:- 部分A负责读取分析用户数据,生成用户特征向量
- 部分B利用用户特征向量和相关推荐算法得到初始推荐物品列表
- 部分C对初始推荐物品列表进行过滤、排名等处理得到最终的推荐结果
不同的推荐引擎,A输出的用户特征向量会有所不同,B中使用的推荐算法策略会改变,C中的过滤、排名规则也会不一样,这些都会根据具体的任务场景改变而改变。