《推荐系统实例》读书笔记

今天我们分享下项亮老师的《推荐系统实践》这本书,也是我特别喜欢的一本,主要讲述在实战案例中的应用,我们可以利用用户的行为数据、利用用户的标签数据、利用上下文信息、利用社交网络数据等等,通过设计一个真实的推荐系统处理不同的数据,根据不同的数据设计不同的算法,并将这些算法融合到一个系统中。

推荐系统是如何和网站其他系统接口的呢?推荐系统的外围架构

《推荐系统实例》读书笔记

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

 从上面结构 可以看出除推荐系统本身还要依赖于两个条件—界面展示和用户行为数据

主流的推荐系统界面的一些共性

(1)通过一定的方式展示物品,主要包括物品的标题、缩略图、和介绍

(2)很多推荐界面提供了推荐理由,理由可以增加用户对推荐结果的信任度

(3)推荐界面还需要提供一些按钮,让用户对推荐结果进行反馈,这样才能让推荐算法不断的优化,改善用户的个性化推荐体验。

二、如何收集和存储用户数据

以电子商务网站中的典型行为为例,从产生行为的用户角度看,有些行为需要用户注册才能产生,有些行为是所有用户都可以产生的,规模上看,浏览网页、搜索记录的规模都很大因为这种行为所有用户都可以产生并且每个用户会产生很多,但购买、收藏只有注册用户才可以产生相对来说规模较小,剩下的行为只有注册用户中一小部分人才会产生,从实时角度上看,购买、收藏、评论、分享等行为需要实时存取,因为这些行为有了,界面就需要体现出来,不同的行为数据被存储在不同的媒介中,一般实时存储的会是在数据存储在数据库和缓存中,大规模非实时的一般存储在分布式文件系统中,能否实时存取在推荐系统中非常重要,因为推荐系统的实时性主要依赖于是否拿到用户新的行为,只要实时拿到用户新的行为才能实时响应用户当前的需求,给用户进行实时推荐。

《推荐系统实例》读书笔记

三、推荐系统的架构

推荐系统是联系用户和物品的媒介,推荐系统联系用户和物品的方式主要有三种

用户喜欢的物品也是一种用户特征,或者和用户兴趣相似的其他用户也是一种用户特征,那么用户和物品通过特征联系;

  • 用户–喜欢➡️物品 –相似—物品
  • 用户–有相似兴趣的好友➡️用户–喜欢–物品
  • 用户–喜欢,具有➡️特征–包含–物品

基于特征的推荐系统架构,当用户到来后,推荐系统为用户生成特征,然后对每个特征找到和特征相关的物品,从而最终生成用户的推荐列表因而推荐系统核心任务有两部分,第一是如何给用户生成特征,第二是根据特征找到物品。

用户特征主要包括以下几类:

(1)人口统计学特征:年龄、性别、民族、国籍、地区等用户注册时提供的信息。

(2)用户的行为特征:浏览的物品、收藏的物品、评论的物品、从时间上也可区分用户是近期行为还是长期行为。

(3)用户的话题特征:根据用户的历史行为利用话题模型,将电视剧和电影聚合成不同的话题,计算出每个用户对什么话题感兴趣,比如用户看了《醉拳》和《叶问》可能对香港武侠电影这个话题感兴趣。

推荐系统的推荐任务也有很多

  • 将最新加入的物品推荐给用户
  • 将商业上需要宣传的物品推荐给用户
  • 给用户推荐不同种类的物品
  • 给用户混合推荐
  • 对于不同产品推荐不同新颖度产品
  • 考虑到用户访问推荐系统的上下文

 如果一个推荐系统中,把上面提到的各种特征和任务都统筹考虑,那么系统会很复杂,而且很难通过配置文件方便地配置不同特征和任务权重,因此推荐系统有多个推荐引擎组成,每个引擎负责一类特征或一种任务,而推荐系统只将推荐引擎的结果按照一定的权重或者优先级合并、排序然后返回;

《推荐系统实例》读书笔记

优势:每一种引擎代表了一种推荐策略,不同的用户会喜欢不同的策略,可以方便地增加/删除引擎,控制不同引擎对推荐结果的影响,对于绝大数需求,可以通过不同引擎组合实现,引擎推荐出来的结果,对不同用户给予不同引擎组合权重。

四、推荐引擎的架构

推荐引擎使用一种或几种用户的特征,按照一种推荐策略生成一类型物品的推荐列表。

《推荐系统实例》读书笔记

第一部分:从数据库或者缓存中拿到用户行为数据,通过分析不同的行为,生成当前用户的特征向量,非行为特征,不需要使用用户行为和分析模块,输出的是特征向量。

第二部分:将用户的特征向量通过特征物品  相关矩阵转换为初始推荐物品列表

第三部分:对初始 的推荐列表进行过滤、排名等处理,从而生成最终的推荐结果。

1、生成用户特征向量

一般来说用户特征包含两种,一种是用户注册基本信息中提取出来,主要包括用户人口统计学特征,对于使用这种特征的推荐引擎如果内存够可以直接存入缓存中,在推荐时直接拿到用户的特征数据并生成特征向量,除了这种特征,另一种特征是从用户行为中计算出来的。

用户行为特征:用户可以对物品产生不同种类的行为,用户可以浏览物品、单击物品链接、和好友分享物品、搜索不同物品的关键词、给物品打上不同的标签,这些都会对物品特征权重产生影响,但不同的行为影响不同,大多时候很难确定什么行为更加重要,一般的标准就是用户付出代价越大的行为权重越高,比如购买商品时掏钱。

用户行为产生的时间:一般来说用户近期行为比较重要,用户之前相对比较久远的行为比较次要,如果用户最近购买某一个物品,那么这个物品对应的特征将会具有比较高的权重。

用户行为的次数:用户对一个物品产生很多次行为,比如用户会听一首歌很多次,看一部电视剧很多集,因此用户对同一个物品的同一种行为发生的次数也反映了用户对物品的兴趣,行为次数多的物品对应的特征权重高。

物品的热门程度:如果用户对一个很热门的商品产生了行为,往往不能代表用户的个性,因为用户可能在跟风、也可能商品容易点到,曝光度高,相反如果用户对一个不热门的商品产生了行为,就说明用户的个性需求,因此推荐引擎会加重不热门物品的对应特征权重。

2、特征–物品相关推荐

在得到用户的特征向量后,根据离线相关表得到初始的物品推荐列表。

离线相关表存储在MYSQL数据库中,对于每个特征我们可以在相关表中存储和他相关的N个物品的ID。

特征ID     物品ID    权重

特征-物品推荐模块还可以接受一个候选物品集合,候选物品集合的目的保证推荐结果只包含候选集合中的物品,它的应用场景是产品一般需求希望将某些类型的电视剧推荐给用户,比如给用户推荐最近一周加入的新物品,那么候选集合中就包括最近一周加的物品。

3、过滤模块

得到初步推荐列表后,还不能把这个列表推荐给用户,首先按照产品需求对结果进行过滤,过滤掉那些不符合要求的物品,一般来说会过滤掉以下物品

(1)用户已产生过行为的物品:因为推荐系统是帮助用户发现物品,因此没必要给用户推荐已经知道的物品,这样可以保证推荐结果新颖性。

(2)候选物品以外的物品:一个是产品需求,比如要求首页将新加入的物品推荐给用户,过滤掉不满足这一条件的物品,另一个来源为用户自己选择,比如选择了某一价格区间,那么过滤模块过滤掉不满足用户需求的物品

(3)某些质量很差的物品:为了提高用户体验,过滤模块需要给用户推荐质量好的物品。

4、排名模块

经过过滤后的推荐结果一般是可以推荐给用户的,但如果对他进行一些排名,则可以更好的提升用户满意度

新颖性、多样性、时间多样性、用户反馈

总结:推荐系统的本质是通过一定的方式将用户和物品联系起来

文源:四场

特别提示:关注本专栏,别错过行业干货!

PS:本司承接 小红书推广/抖音推广/百度系推广/知乎推广:关键词排名,创意短视频,笔记种草,代写代发等;

咨询微信:139 1053 2512 (同电话) 

首席增长官CGO荐读:

更多精彩,关注:增长黑客(GrowthHK.cn)

增长黑客(Growth Hacker)是依靠技术和数据来达成各种营销目标的新型团队角色。从单线思维者时常忽略的角度和高度,梳理整合产品发展的因素,实现低成本甚至零成本带来的有效增长…

本文经授权发布,不代表增长黑客立场,如若转载,请注明出处:https://www.growthhk.cn/quan/30771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020-05-10 14:07
下一篇 2020-05-11 11:57

增长黑客Growthhk.cn荐读更多>>

发表回复

登录后才能评论
特别提示:登陆使用搜索/分类/最新内容推送等功能 >>