读书笔记:推荐系统实践-第七章-推荐系统实例

1、外围架构

在这里插入图片描述

  • UI系统负责给用户展示网页并和用户交互。
  • 网站会通过日志系统将用户在UI上的各种各样的行为记录到用户行为日志中。日志可能存储在内存缓存里,也可能存储在数据库中,也可能存储在文件系统中。
  • 推荐系统通过分析用户的行为日志,给用户生成推荐列表,最终展示到网站的界面上。

推荐系统的重要因素:推荐系统本身,界面展示,用户行为数据

界面的一些特性:

  • 通过一定方式展示物品,主要包括物品的标题、缩略图和介绍等。
  • 很多推荐界面都提供了推荐理由,理由可以增加用户对推荐结果的信任度。
  • 推荐界面还需要提供一些按钮让用户对推荐结果进行反馈,这样才能让推荐算法不断改 善用户的个性化推荐体验。

数据收集与存储

  • 需要实时存取的数据存储在数据库和缓存中,而大规模的非实时地存取数据存储在分布式 文件系统(如HDFS)中
    在这里插入图片描述

2、推荐系统架构

推荐系统联系用户和物品的方式主要有3种:
在这里插入图片描述
抽象来看,可以认为用户和物品通过特征进行联系。因此可以设计一种基于特征的推荐系统。
在这里插入图片描述
据此,推荐系统的核心任务就被拆解成两部分,一个是如何为给定用户生成特征,另一个是如何根据特征找到物品。

用户特征种类包括:

  • 人口统计学特征 包括用户的年龄、性别、国籍和民族等用户在注册时提供的信息。
  • 用户的行为特征 包括用户浏览过什么物品、收藏过什么物品、给什么物品打过什么样 的分数等;用户近期的行为和 长期的行为。
  • 用户的话题特征 可以根据用户的历史行为利用话题模型(topic model)将电视剧和电影聚合成不同的话题,并且计算出每个用户对什么话题感兴趣。

推荐系统的推荐任务种类:

  • 将最新加入的物品推荐给用户
  • 将商业上需要宣传的物品推荐给用户
  • 给用户推荐不同种类的物品
  • 给用户混合推荐,有时需要将图书和音像制品放到一个推荐列表中展示给用户。
  • 对于不同的产品推荐不同新颖度的物品。比如在首页给用户展示比较热门的推荐结果, 在推荐系统页面给用户展示长尾中的物品。
  • 考虑到用户访问推荐系统的上下文

因为需要将用户特征和推荐任务种类综合考虑,推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或者优先级合并、排序然后返回。这样,即可以方便地增加/删除引擎,控制不同引擎对推荐结果的影响,也可以实现推荐引擎级别的用户反馈。
在这里插入图片描述

3、推荐引擎的架构

在这里插入图片描述
推荐引擎架构分为三部分:

  • 该部分负责从数据库或者缓存中拿到用户行为数据,通过分析不同行为,生成当前用户的特征向量。不过如果是使用非行为特征,就不需要使用行为提取和分析模块了。该模块的输出是用户特征向量。
  • 该部分负责将用户的特征向量通过特征-物品相关矩阵转化为初始推荐物品列表。
  • 该部分负责对初始的推荐列表进行过滤、排名等处理,从而生成最终的推荐结果。

3.1 生成用户特征向量(图中A部分)

生成特征主要考虑如下因素:

  • 用户行为的种类 :用户付出代价越大的行为权重越高
  • 用户行为产生的时间:近期的行为比较重要
  • 用户行为的次数
  • 物品的热门程度:用户对很热门的物品产生了行为,可能是用户在跟风,因为物品的链接到处都是,不小心点到了;如果对不热门的物品产生了行为,可能就说明了用户的个性需求。

3.2 特征-物品相关推荐(图中B部分)

相关表融合:如图所示,在系统中特征-物品相关表不止一张,可以通过很多方法进行计算:协同过滤、内容计算等。最后,在线服务会把相关表按照配置的权重相加,然后将最终的相关表保存在内存里面。
候选物集合:候选物品集合的目的是保证推荐结果只包含候选物品集合中的物品,可以控制热门的物品出现的频率。一般,如果是小的候选物品集合可以考虑上面的方法,如果是很大的候选物品集合,可以考虑直接在初始推荐列表中进行过滤。

3.3 过滤模块

  • 用户已经产生过行为物品
  • 候选物品以外的物品:产品需求,或者用户的筛选条件
  • 某些质量很差的物品

3.4 排名模块

3.4.1 新颖度排名

  • 对推荐结果中的热门物品进行降权
    在这里插入图片描述
  • 或者在计算兴趣程度p的时候进行一定调整
    在这里插入图片描述
    在这里插入图片描述
    首先,考虑到推荐系统是为了给 用户介绍他们不熟悉的物品,那么可以假设如果用户知道了物品j,对物品j产生过行为,那么和j 相似的且比j热门的物品用户应该也有比较大的概率知道,因此可以降低这种物品的权重,比如:
    在这里插入图片描述
  • 也可以引入内容相似度

3.4.2 多样性

增加多样性的方法:

  • 将推荐结果按照某种物品的内容属性分成几类,然后在每个类中 都选择该类中排名最高的物品组合成最终的推荐列表
    • 优点:简单直观
    • 缺点:对分类很敏感;分类不具有共识性
  • 控制不同推荐结果的推荐理由出现的次数

3.4.3 时间多样性

增加时间多样性的方法:

  • 保证推荐系统的实时性
  • 是要在用户没有新的行为时,也要保 证推荐结果每天都有变化
    • 记录用户每次登陆推荐系统看到的推荐结果
    • 将这些结果发回日志系统。这种数据不需要实时存储,只要能保证小于一天的延时就足够了
    • 在用户登录时拿到用户昨天及之前看过的推荐结果列表,从当前推荐结果中将用户已经看到的推荐结果降权

3.4.4 用户反馈

  • 主要通过分析用户之前和推荐结果 的交互日志,预测用户会对什么样的推荐结果比较感兴趣
  • 如果推荐系统的目标是提高用户对推荐结果的点击率,那么可以利用点击模型(click model) 预测用户是否会点击推荐结果
  • 在推荐系统的点击率预测中可以用如下特征预测用户u会不会点击物品i:
    • 用户u相关的特征,比如年龄、性别、活跃程度、之前有没有点击行为
    • 物品i相关的特征,比如流行度,平均分,内容属性
    • 物品i在推荐列表中的位置。用户的点击和用户界面的设计有很高的相关性
    • 用户之前是否点击过和推荐物品i具有同样推荐解释的其他推荐结果
    • 用户之前是否点击过和推荐物品i来自同样推荐引擎的其他推荐结果。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章