《推荐系统实践》 第一章 好的推荐系统 读书笔记

推荐系统的方法
按照数据分:协同过滤、内容过滤、社会化过滤
按照算法分: 基于邻域、基于图、基于矩阵分解、概率模型

好的推荐系统

推荐系统的主要任务、推荐系统和分类目录以及搜索引擎的区别等

背景

随着信息过载,有目的的购买东西方式变化过程:
凭借经验----》凭借分类信息—》凭借搜索信息

没有明确的需求:
推荐系统

信息过载问题的解决方案:分类目录和搜索引擎

分类目录:只能覆盖少量热门网站,越来越不能满足用户需求

搜索引擎:需要用户主动提供准确的关键词来寻找信息,当用户无法找到准确描述自己需求的关键词,就无能为力了

什么是推荐系统?

推荐系统是一种帮助用户快速发现有用信息的工具

搜索引擎与推荐系统区别

同:帮助用户发现感兴趣的内容
异:推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足它们需求和兴趣的信息

推荐系统的主要任务

联系用户和信息 ,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者双赢。

比如:推荐系统可以更好发掘长尾商品,帮助用户发现他们感兴趣但是很难发现的商品

推荐算法

协同过滤

思路是通过群体的行为来找到某种相似性(用户之间的相似性或者标的物之间的相似性),通过该相似性来为用户做决策和推荐。

协同过滤算法大致可以分为:基于邻域的推荐和基于模型的推荐。前者将所有数据记忆到存储体中。后者(离线)做数据降维,抽象出特征,运行时直接用特征。

基于邻域的推荐

基于用户的协同过滤:给用户推荐和他兴趣相似的其他用户喜欢的物品
基于物品的协同过滤:给用户推荐和他之前喜欢的物品相似的物品

基于模型的推荐

使用部分机器学习算法,找出用户与项的相互作用模型,从而找出数据中的特定模式。如关联模型,隐语义模型、图模型、混聚类模型、分类模型、回归模型、矩阵分解模型、神经网络模型、合模型、深度学习模型等。

基于内容的推荐

基于标的物相关信息、用户相关信息及用户对标的物的操作行为来构建推荐算法模型,为用户提供推荐服务。这里的标的物相关信息可以是对标的物文字描述的metadata信息、标签、用户评论、人工标注的信息等。用户相关信息是指人口统计学信息(如年龄、性别、偏好、地域、收入等等)。用户对标的物的操作行为可以是评论、收藏、点赞、观看、浏览、点击、加购物车、购买等。
参考:推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

二者区别:
参考:协同过滤和基于内容推荐有什么区别

1、协同过滤算法与基于内容推荐算法所使用的数据维度不同。
【协同过滤】侧重使用用户对于商品的历史交互记录,即用户-商品二维矩阵;而【基于内容推荐】侧重于对用户或者项目的属性信息建模,比如用户的性别、年龄,商品的颜色、大小等属性。对于同一用户而言:【基于内容推荐】需要利用用户的性别、年龄、爱好等组成特征向量来表示;而【协同过滤】需要根据该用户所在矩阵的某一行来进行表示,即利用用户对于所有商品的交互记录来表示。换句话说,协同过滤算法中的用户/商品表示可以看做特殊的基于内容的表示,只不过是把用户的具体内容属性换为了用户的历史行为特征。

2、协同过滤算法与基于内容推荐算法的核心思想不同。
【协同过滤】侧重于从大数据(集体智慧)中寻找某些隐含的模式,即通过用户对于商品的历史交互记录来寻找相似的用户;而【基于内容推荐】则侧重于通过对象的属性信息来进行匹配建模进而寻找相似的用户或者商品。

3、协同过滤算法与基于内容推荐算法的实现技术不同。
【协同过滤】将用户-商品评分二维矩阵当做输入送入模型进行训练进而产生输出,典型的模型为矩阵分解、user-based cf,item-based cf;而【基于内容推荐】侧重将用户或者商品的特征信息作为输入特征,进而送入分类器进行建模,典礼的模型为LR。

4、协同过滤算法与基于内容推荐算法好坏的决定因素不同。
【协同过滤】算法随着用户对于商品的交互记录增多会使得模型能够更精确的捕捉用户的行为习惯,进而使得模型能够不费用额外的人工的方式来提高精度(但他在初期会面临冷启动问题的困扰)。【基于内容推荐】侧重于特征工程,算法的好坏由用户和商品的内容属性所决定,因此需要较强的领域知识,但他的好处是不存在冷启动的问题。

本质是将用户和物品联系起来

推荐系统评测

一个完整的推荐系统存在三个参与方:
用户、物品提供者、提供推荐系统的网站。

以图书推荐为例:
在这里插入图片描述

推荐系统的参与者

在这里插入图片描述
好的推荐系统不仅仅能预测用户的行为,而且能够拓展用户的视野,帮助用户发现他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将那些倍埋没在长尾中的好商品介绍给可能对他们感兴趣的用户。

推荐系统实验方法

推荐系统推荐效果评测方案:离线实验、用户调查、在线实验。

离线实验

步骤:
在这里插入图片描述
可以看到,推荐系统的离线实验不需要一个实际的系统来供它实验,而只要有一个实际系统日志提取的数据集即可。
好处:不需要真实用户参与,可以快速直接计算,从而方便、快速地测试大量不同的算法。
缺点:无法获得很多商品上关注的指标,如点击率,转换率等,与商业指标存在差距

用户调查

上线测试风险高,需要先做一次用户调查。
优点:获取很多体现用户主观感受的指标,相对实验风险很低,出错后很容易弥补。
缺点:成本高,需要用户花大量时间完成一个个任务,很难进行大规模的用户调查,而参加用户少的用户调查结果往往没有统计意义。还有要保证双盲实验、合理分布等。

在线实验

将推荐系统上线AB测试。

AB测试

介绍:
AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户 随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。对AB测试感兴趣的读者可以浏览一下网站http://www.abtests.com/,该网站给出了很多通过实际AB测试提高网站用户满意度的例子、从中我们可以学习到如何进行合理的AB测试。

优点:可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。

缺点:主要是周期比较长,必须进行长期的实验才能得到可靠的结果。因此一般不会用AB测试测试所有的算法,而只是用它测试那些在离线实验和用户调查中表现很好的算法。其次,一个大型网站的AB测试系统的设计也是一项复杂的工程。一个大型网站的架构分前端和后端,从前端展示给用户的界面到最后端的算法,中间往往经过了很多层,这些层往往由不同的团队控制,而且都有可能做AB测试。如果为不同的层分别设计AB测试系统,那么不同的AB测试之间往往会互相干扰。比如,当我们进行-一个 后台推荐算法的AB测试,同时网页团队在做推荐页面的界面AB测试,最终的结果就是你不知道测试结果是自己算法的改变,还是推荐界面的改变造成的。因此,切分流量是AB测试中的关键,不同的层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,而不同层之间的流量应该是正交的。

总结

一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验。

1.需要通过离线实验证明它在很多离线指标上优于现有的算法。

2.需要通过用户调查确定它的用户满意度不低于现有的算法。

3.通过在线的AB测试确定它在我们关心的指标上优于现有的算法。

评测指标
1.用户满意度

通过用户调查(调查问卷)或者在线实验(用户行为统计得到)获得
如:电子商务网站利用购买率度量用户的满意度。
还可以用点击率,用户停留时间,转换率等指标

2.预测准确度

最重要的推荐离线评测指标

在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。

  • 评分预测
    在这里插入图片描述
    在这里插入图片描述

  • topN推荐
    网站在提供推荐服务时,–般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率( precision)!召回率( recall)度量。
    在这里插入图片描述
    在这里插入图片描述

3.覆盖率

**覆盖率( coverage)描述一个推荐系统对物品长尾的发掘能力。**覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。那么推荐系统的覆盖率可以通过下面的公式计算:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
马太效应:强者更强、弱者更弱的效应。推荐系统的初衷是希望消除马太效应,使得各个物品都能被展示给对它们感兴趣的某一类人群。

能被展示给对它们感兴趣的某一类人群。但是,很多研究表明现在主流的推荐算法(比如协同过滤算法)是具有马太效应的。评测推荐系统是否具有马太效应的简单办法就是使用基尼系数。如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,那么如果G2>G1,就说明推荐算法具有马太效应。

4.多样性

用户的兴趣是广泛的,在一个视频网站中,用户可能既喜欢看《猫和老鼠》一类的动画片,也喜欢看成龙的动作片。那么,为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗话表述就是“不在一棵树上吊死”。尽管用户的兴趣在较长的时间跨度中是一样的,但具体到用户访问推荐系统的某一刻,其兴趣往往是单一的,那么如果推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐列表就不会让用户满意。反之,如果推荐列表比较多样,覆盖了用户绝大多数的兴趣点,那么就会增加用户找到感兴趣物品的概率。因此给用户的推荐列表也需要满足用户广泛的兴趣,即具有多样性。

在这里插入图片描述
在这里插入图片描述

5.新颖性

**新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。**在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。比如在一个视频网站中,新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。但是,有些视频可能是用户在别的网站看过,或者是在电视上看过,因此仅仅过滤掉本网站中用户有过行为的物品还不能完全实现新颖性。
O’scar Celma在博士论文“Music Recommendation and Discovery in the Long Tail”“中研究了新颖度的评测。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。
但是,用推荐结果的平均流行度度量新颖性比较粗略,因为不同用户不知道的东西是不同的。因此,要准确地统计新颖性需要做用户调查。
最近几年关于多样性和新颖性的研究越来越受到推荐系统研究人员的关注。ACM的推荐系统会议在2011年有一个专门的研讨会讨论推荐的多样性和新颖性。"该研讨会的组织者认为,通过牺牲精度来提高多样性和新颖性是很容易的,而困难的是如何在不牺牲精度的情况下提高多样性和新颖性。关心这两个指标的读者可以关注一下这个研讨会最终发表的论文。

6.惊喜度

惊喜度与新颖度区别:
Guy Shani的论文提到,如果推荐结果和用户历史性去不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低结果和用户历史兴趣的相似度。

7.信任度

如果用户信任推荐系统,那就会增加用户和推荐系统的交互。特别是在电子商务推荐系统中,让用户对推荐结果产生信任是非常重要的。同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。

提高推荐系统的信任度主要有两种方法。

首先需要增加推荐系统的透明度( transparency ),而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。

其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任。

8.实时性

在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。比如,给用户推荐昨天的新闻显然不如给用户推荐今天的新闻。因此,在这些网站中,推荐系统的实时性就显得至关重要。

推荐系统的实时性包括两个方面。**首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。**比如,当一个用户购买了iPhone,如果推荐系统能够立即给他推荐相关配件,那么肯定比第二天再给用户推荐相关配件更有价值。很多推荐系统都会在离线状态每天计算一次用户推荐列表,然后于在线期间将推荐列表展示给用户。这种设计显然是无法满足实时性的。**与用户行为相应的实时性,可以通过推荐列表的变化速率来评测。**如果推荐列表在用户有行为后变化不大,或者没有变化,说明推荐系统的实时性不高。

**实时性的第二个方面是推荐系统需要能够将新加人系统的物品推荐给用户。**这主要考验了推荐系统处理物品冷启动的能力。关于如何将新加入系统的物品推荐给用户,本书将在后面的章节进行讨论,而对于新物品推荐能力,我们可以利用用户推荐列表中有多大比例的物品是当天新加的来评测。

9.健壮性

衡量一个推荐系统抗击作弊能力
在这里插入图片描述
提高系统健壮性,有以下方法:
在这里插入图片描述

10.商业目标

最本质的商业目标就是平均一个用户给公司带来的盈利。比如电子商务网站的目标可能是销售额,基于展示广告盈利的网站其商业目标可能是广告展示总数。因此,设计推荐系统时需要考虑最终的商业目标,而网站使用推荐系统的目的除了满足用户发现内容的需求,也需要利用推荐系统加快实现商业上的指标。

11.总结

思考:如何优化离线指标提高在线指标

在这里插入图片描述
在这里插入图片描述

评测维度

增加评测维度的目的就是知道一个算法在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。
一般来说,评测维度分为如下3种。

  • 用户维度 主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
  • 物品维度﹐包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
  • 时间维度包括季节,是工作日还是周末,是白天还是晚上等。

如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。

后记

2009年ACM推荐系统大会上Stand研究人员总结经验,提出10条在设计推荐系统中学习到的经验和教训

(1)确定你真的需要推荐系统。推荐系统只有在用户遇到信息过载时才必要。如果你的网站物品不太多,或者用户兴趣都比较单一,那么也许并不需要推荐系统。所以不要纠结于推荐系统这个词,不要为了做推荐系统而做推荐系统,而是应该从用户的角度出发,设计出能够真正帮助用户发现内容的系统,无论这个系统算法是否复杂,只要能够真正帮助用户,就是一个好的系统。
(2)确定商业目标和用户满意度之间的关系。对用户好的推荐系统不代表商业上有用的推荐系统,因此要首先确定用户满意的推荐系统和商业上需求的差距。一般来说,有些时候用户满意和商业需求并不吻合。但是一般情况下,用户满意度总是符合企业的长期利益,因此这一条的主要观点是要平衡企业的长期利益和短期利益之间的关系。
(3)选择合适的开发人员。一般来说,如果是一家大公司,应该雇用自己的开发人员来专门进行推荐系统的开发。
(4)忘记冷启动的问题。不断地创新,互联网上有任何你想要的数据。只要用户喜欢你的产品,他们就会不断贡献新的数据。
(5)平衡数据和算法之间的关系。使用正确的用户数据对推荐系统至关重要。对用户行为数据的深刻理解是设计好推荐系统的必要条件,因此分析数据是设计系统中最重要的部分。数据分析决定了如何设计模型,而算法只是决定了最终如何优化模型。
(6)找到相关的物品很容易,但是何时以何种方式将它们展现给用户是很困难的。不要为了推荐而推荐。
(7)不要浪费时间计算相似兴趣的用户,可以直接利用社会网络数据。
(8)需要不断地提升算法的扩展性。
(9)选择合适的用户反馈方式
(10)设计合理的评测系统,时刻关注推荐系统各方面的性能。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值