推荐算法(6) 实例
一、推荐系统外围构架
从用户日志经过推荐系统得到推荐列表,返回给UI界面;
用户在UI界面,反馈,生成日志,最后储存起来。
界面设置:
1.展示物品
2.物品有推荐理由
3.提供按钮反馈
数据收集和储存:
针对不同的行为的特点,需要不同的存储方式。书中给了一个表格,列出了不同的用户行为采取的不同存储方法。
实时存储的一般放在数据库和缓存中,
大规模非实时数据存在分布式文件系统(HDFS)
二、推荐系统的架构
特征联系目标用户和待推荐商品:如图,表示“UserCF,ItemCF,基于特征的推荐”这三种推荐算法中,用户和商品的联系方式,可以全部抽象为基于特征的推荐。
但是需要考虑的特征很多,主要包括三种:人口统计学特征,用户的行为特征,用户的话题特征。此外系统的推荐任务也很多。如果同时考虑所有特征,完成所有推荐任务,那么这个推荐系统会很复杂,而且很难通过配置文件方便的配置不同特征和任务的权重。因此,推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务就是将推荐引擎的结果按照一定的权重或者优先级进行合并和排序。
三、推荐引擎架构
推荐引擎的架构:具体可以结合书中的图和例子进行理解。
生成用户特征向量:用户的特征主要包括两种:注册信息,行为信息。对于注册信息,可以直接放到内存用。需要重点考虑的是如何计算出用户的行为特征。特征向量由特征以及特征的权重组成。
**利用用户行为计算特征向量时需要考虑:用户行为的种类(用户付出代价越大的行为权重越高);用户行为的时间(时间越近,权重越大);用户行为的次数;物品的热门程度(需要加重不热门物品对应的特征的权重)。
**特征与物品相关的推荐:在拿到用户的特征向量后,我们可以根据离线的相关表得到初始的物品推荐列表。离线相关表可以存储在MYSQL中,存储格式(特征ID,物品ID,权重)。该表存储了一种推荐引擎(不是一个特征)的推荐结果,可以通过对该标的查询,获得某个特征下,权重最高的前N个物品。不同的推荐引擎会产生不同的离线表。当进行在线推荐时,会将这些相关表按照配置的权重相加,然后将最终的相关表保存在内存中,最后推荐给用户。
过滤模块:需要过滤的物品包括:用户已经产生过行为的物品;候选集以外的物品(产品需求;用户选择的区间内的物品);某些质量很差的物品;
排名模块:新颖性;多样性;时间多样性;用户反馈;