7.1 外围架构
用户行为日志可能存储在:
1)内存缓存
2)数据库
3)文件系统
7.2 推荐系统的架构
推荐系统的核心任务:
1)如何为给定用户生成特征
2)如何根据特征找到物品
用户的特征种类:
1)人口统计学特征
2)用户的行为特征
3)用户的话题特征
推荐任务有很多种:
1)将最新加入的物品推荐给用户
2)将商业上需要宣传的物品推荐给用户
3)给用户推荐不同种类的物品
4)给用户混合推荐
5)对于不同的产品推荐不同新颖度的物品
6)考虑到用户访问推荐系统的上下文
推荐系统由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或者优先级合并、排序然后返回。
7.3 推荐引擎的架构
推荐引擎的架构主要包括3部分:
1)部分A负责从数据库或者缓存中拿到用户数据,输出用户特征向量
2)部分B负责将用户特征向量转化为初始推荐物品列表
3)部分C负责对初始列表进行过滤、排名等处理,从而生成最终的推荐结果
7.3.1 生成用户特征向量
用户的特征包括两种:
1)用户的注册信息提取出来
2)从用户行为计算出来
一个特征向量由特征以及特征的权重组成,在利用用户行为计算特征向量时需要考虑以下因素:
1)用户行为的种类
2)用户行为产生的时间
3)用户行为的次数
4)物品的热门程度
7.3.2 特征-物品相关推荐
可以根据离线相关表得到初始的物品推荐列表。离线相关表可以存储在MySQL中。
7.3.3 过滤模块
一般来说,过滤模块会过滤掉以下物品:
1)用户已经产生过行为物品
2)候选物品以外的物品
候选物品集合一般有两个来源:(1)产品需求 (2)用户自己的选择
3)某些质量很差的物品
7.3.4 排名模块
一般排名模块需要包含很多不同的子模块:
1)新颖性排名
2)多样性(增加多样性可以让推荐结果覆盖尽可能多的用户兴趣)
提高多样性的方法:
(1)将推荐结果按照某种物品的内容属性分成几类,然后在每个类中都选择该类中排名最高的物品组合成最终的推荐列表。
(2)控制不同推荐结果的推荐理由出现的次数。
3)时间多样性(保证用户不要每天来推荐系统都看到同样的推荐结果)
提高推荐系统的时间多样性从两个地方着手:
(1)保证推荐系统的实时性。(如果用户有实时行为发生,那么行为提取和分析模块就能实时拿到行为数据并转化为新的特征的,然后经过特征-物品相关模块转换成和新特征最相关的物品,因而推荐列表中就立即反映了用户最新行为的影响。)
(2)在用户没有新的行为时,也要保证推荐结果每天都有变化。通过以下方式:
1、记录用户每次登录推荐系统看到的推荐结果
2、将这些结果发挥日志系统
3、在用户登陆时拿到用户昨天及之前看到的推荐结果列表,从当前列表中将用户已经看到的推荐结果降权)
4)用户反馈(排名模块最重要的部分)
在推荐系统的点击率预测中可以用如下特征预测用户u会不会电机物品i:
(1)用户U相关的特征
(2)物品i相关的特征
(3)物品i在推荐列表中的位置
(4)用户之前是否点击过和推荐物品i具有同样推荐解释的其他推荐结果
(5)用户之前是否电机过和推荐物品i来自同样推荐引擎的其他推荐结果。
点击模型需要离线计算好,在线将模型加载到内存中。