【推荐系统实践】读书笔记-第1章

本文按照书中的目录进行内容组织,对于个人认为比较重要的点,进行提炼梳理,方便自己加深印象。同时,也想借助的文章的形式分享出来,可供小伙伴们一同学习进步,也欢迎大佬拍砖指正。

什么是推荐系统

  • 基本任务

关联用户和信息。一方面帮助用户发现对自己有价值的信息,一方面让信息展现在他感兴趣的用户面前。从而解决信息过载的问题。

  • 推荐系统和分类目录以及搜索引擎的区别

分类目录:类似国内hao123这样的网站,首页有各类热门网站站点。可以方便用户根据自己的喜好选择站点。但是,这种做法也只能涵盖少量热门网站,随着互联网的快速发展,已经不能满足大部分用户的需求。

搜索引擎:搜索引擎解决了分类目录不能处理海量网页的情形,让用户通过搜索关键词,来找到自己感兴趣的内容。但是,搜索引擎需要用户主动提供关键词,当用户无法提供准确的搜索词时,便无能为力。比如,周六在家你想找一部自己喜欢的电影,便无法直接在搜索引擎上进行搜索,可能需要通过间接的方式(检索过去一年票房最高的电影或者其他方式),来找到自己想看的电影。

推荐系统:和搜索引擎类似,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎的不同是,推荐系统不需要用户主动提供检索词,而是根据用户的历史信息,对用户的兴趣模型进行建模,从而主动的给用户推荐他们感兴趣的内容。

个性化推荐系统的应用

  • 电子商务:amazon,ebay
  • 电影和视频网站:hulu,netfix
  • 个性化音乐网络电台:国内的网易云音乐,喜马拉雅,蜻蜓FM
  • 社交网络:facebook,twitter
  • 个性化阅读:Google Reader
  • 基于位置的服务:结合地点信息,推荐周围好吃的饭店,电影院之类
  • 个性化邮件:优先推荐更为重要的邮件
  • 个性化广告:将广告推荐给他们更感兴趣的用户

推荐系统的评测

什么是好的推荐系统?

一个好的推荐系统,通常需要3个参与方。用户、信息提供者,提供推荐系统的网站。以图书推荐为例,首先,推荐系统需要满足用户的需求,推荐给用户感兴趣的书籍。其次,推荐系统需要让各类书籍都能被推荐给对其感兴趣的用户。最后,好的推荐系统设计,可以让推荐系统本身收到高质量的反馈。不断完善推荐的质量。增加用户和网站的交互,提供网站的收入。因此,一个好的推荐系统,一定是需要同时考虑三方的利益。

推荐系统的实验方法

1.离线实验
一般的实验步骤如下:
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。
优点:不需要一个实际的系统来供它实验,也不需要真实的用户参与,可以方便、快速的测试大量不同的方法。
缺点:无法获得商业上关注的指标,如点击率,转化率等。

2.用户调查
考虑到离线实验的缺点,一个更好的方式就是直接进行线上实验。但是,如果直接进行线上实验,会有较大的风险(比如,上线的推荐算法可能真实效果并不好,会导致商业指标下降,从而带来损失),所以,可以进行用户调查的测试。
用户调查需要有一些真实用户,让他们在需要测试的推荐系统上完成一些任务。在他们完成任务时,我们需要观察和记录他们的行为,并让他们回答一些问题。最后,我们需要通过分析他们的行为和答案了解测试系统的性能。
优点:可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。
缺点:招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足。

3.在线实验
在完成以上2种实验之后,可以进行在线实验。常用的做法是在推荐系统上进行线上A/BTest.
优点:可以公平的获得,不同算法在真实环境当中的表现,并且也可以关注到商业上的指标。
缺点:AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果。因此一般不会用AB测试测试所有的算法,而只是用它测试那些在离线实验和用户调查中表现很好的算法。其次,一个大型网站的AB测试系统的设计也是一项复杂的工程。

所以,一个新的推荐算法上线,需要3个步骤
第一,通过离线实验证明它在很多离线指标上优于现有的算法;
第二,通过用户调查确定它的用户满意度不低于现有的算法;
第三,通过在线的AB测试确定它在我们关心的指标上优于现有的算法;

###评测指标

1.用户满意度
在在线系统中,用户满意度主要通过一些对用户行为的统计得到。比如在电子商务网站中,用户如果购买了推荐的商品,就表示他们在一定程度上满意。因此,我们可以利用购买率度量用户的满意度。

2.预测准确度

  • 评分预测
    评分预测的基本思路是,通过用户对物品的历史评分,推荐算法就可以从中学到用户的兴趣模型,并对用户没有看到过的物品进行预测。评分预测常用的有以下2个指标。
    R M S E = ∑ u , i ∈ T ( r u i − r u i ^ ) 2 ∣ T ∣ RMSE=\frac{\sqrt{\sum_{u,i\in{T}}^{}(r_{ui} - \hat{r_{ui}})^{2}}}{|T|} RMSE=Tu,iT(ruirui^)2
    M A E = ∣ ∑ u , i ∈ T ( r u i − r u i ^ ) ∣ ∣ T ∣ MAE=\frac{|\sum_{u,i\in{T}}^{}(r_{ui} - \hat{r_{ui}})|}{|T|} MAE=Tu,iT(ruirui^)
    其中, r u i r_{ui} rui表示用户 u u u对物品{i}的实际评分, r u i ^ \hat{r_{ui}} rui^则是推荐系统给出的评分。

  • TopN推荐
    网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
    R e c a l l = ∑ u ∈ U ∣ R ( u ) ∣ ∩ ∣ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ Recall=\frac{\sum_{u\in{U}}|R(u)|\cap|T(u)|}{\sum_{u\in{U}}|T(u)|} Recall=uUT(u)uUR(u)T(u)
    P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∣ ∩ ∣ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ Precision=\frac{\sum_{u\in{U}}|R(u)|\cap|T(u)|}{\sum_{u\in{U}}|R(u)|} Precision=uUR(u)uUR(u)T(u)
    其中, R ( u ) R(u) R(u)是根据用户在训练集上的行为作出的推荐列表,而 T ( u ) 是 用 户 在 测 试 集 上 行 为 列 表 T(u)是用户在测试集上行为列表 T(u)

  • 关于评分预测和TopN推荐的讨论
    评分预测一直是推荐系统研究的热点,绝大多数推荐系统的研究都是基于用户评分数据的评分预测。但是,亚马逊前科学家Greg Linden有不同的看法。他认为,出电影推荐的目的是找到用户最有可能感兴趣的电影,而不是预测用户看了电影后会给电影什么样的评分。因此,TopN推荐更符合实际的应用需求。也许有一部电影用户看了之后会给很高的分数,但用户看的可能性非常小。

3.覆盖率
覆盖率也是一类非常重要的指标,他描述了一个推荐系统对物品长尾的挖掘能力。试想,一个覆盖率不好的推荐系统,可能只能只能推荐出比较热门的物品。但是,对于一部分小众用户而言,他们所关心的小众物品就不能被很好的推荐。但是,对于一个覆盖率好的推荐系统,他的图像就是长尾的。即,有大量的物品还是被推荐系统进行推荐。推荐系统的覆盖率可以通过如下公式进行计算:
C o v e r g e = ∣ ⋃ u ∈ U R ( u ) ∣ ∣ I ∣ Coverge=\frac{|\bigcup_{u\in{U}}R(u)|}{|I|} Coverge=IuUR(u)
除了上面的公式,信息熵和基尼系数,也可以被用来度量覆盖率。

4.多样性
用户的兴趣是广泛的,因此为了满足用户尽可能多的兴趣,需要推荐列表可以覆盖尽可能多的用户兴趣列表。多样性描述了推荐列表当中物品两两之间的不相似性,因此,对于多样性的定义,可以通过相似性来定义。假设 s ( i , j ) ∈ [ 0 , 1 ] s(i,j)\in{[0,1]} s(i,j)[0,1]定义了物品之间的相似性,那么用户 u u u的推荐列表 R ( u ) R(u) R(u)的多样性定义如下:
D i v e r s i t y = 1 − ∑ i ≠ j , i , j ∈ R ( u ) s ( i , j ) 1 2 ∣ R ( u ) ∣ ( R ( u ) − 1 ) Diversity=1 - \frac{\sum_{ i \ne j, i,j \in R(u) }s(i,j) }{ \frac{1}{2} |R(u)| (R(u)-1) } Diversity=121R(u)(R(u)1)i̸=j,i,jR(u)s(i,j)

5.新颖性
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。比如在一个视频网站中,新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。

6.惊喜度
惊喜度的概念可能和新颖性的概念非常相近,比如通常一个比较新颖的推荐是会给用户带来惊喜的。所以,在推荐系统当中要区别这两个概念,需要转化上下文的语义环境。在推荐系统当中,新颖通常是指之前没有推荐给用户的物品,比如,推荐给用户一个他没有看过的电影。但是,这部电影可能用户并不喜欢,所以他并不觉得有惊喜。所以,在推荐系统当中,惊喜度是指,如果一个推荐和用户的历史兴趣不相似,但是却又让用户觉得满意的推荐。目前,对于惊喜度,并没有什么公认的指标定义方式,所以只给出定性的方式进行描述。

7.信任度
首先说下这个指标为什么重要,同样的结果,如果能以让用户更信任的方式推荐给用户,那么就可能让用户产生购买欲。比如,你感冒了,一个朋友说让你吃xx药,你可能不会吃。但是,如果是医生跟你说让你吃同样的药,你就会吃了。说的就是信任度对人行为的影响。那么,对于一个推荐系统而言,他的信任度是什么呢?通常度量推荐系统信任度的方式只能通过调查问卷的方式。那么对于推荐系统而言,通常提高信任度的方式有如下两种:

  • 增加推荐系统透明度。具体的做法是提高推荐系统的可解释性,让用户了解推荐系统的运行机制。
  • 考虑用户的社交网络信息。利用好友的用户信息给用户做推荐。

8.实时性
对于具备很强时效性的推荐,需要在物品还具有时效性的时候,就把物品推荐给用户。比如,对于新闻推荐来说,推荐昨天的新闻肯定不如推荐今天的新闻。具体的做法有:

  • 实时更新推荐列表。主要是为了满足用户新的用户行为。
  • 将新加入的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。

9.健壮性
常见的推荐作弊行为可以通过注入攻击,来模拟虚拟的用户行为数据,但是系统并没有察觉。这样的数据会导致恶意攻击者的物品被推荐出来。在实际当中,可以通过如下两种方法避免。

  • 设计推荐系统时尽量使用代价比较高的用户行为
  • 在使用数据前,进行攻击检测,从而对数据进行清理。

10.商业目标
不同的网站有各自不同的商业目标,这个需要结合自身业务而定。常见的比如有,广告展示总数,广告点击总数。

**小结:对于如何优化离线指标来提高在线指标,是推荐系统研究的重要问题。**关于这个问题,目前任然没有什么定论。在书中,作者给出了他认为的一种合理的做法:

			最大化预测准确度
			使得	覆盖率 > A
					多样性 > B
					新颖性 > C

其中,A,B,C的取值,应该视不同的情况而定。

评测维度

上一小节介绍了很多评价指标,但是在生产环境当中,还需要考虑评测的维度。比如一个推荐算法,虽说整体性能不好,但可能在某种情况下性能比较好。这时,增加评测维度的目的就是知道一个算法在什么情况下, 性能最好。这样融合不同推荐算法,取得整体的最好性能。常见的评测维度如下:

  • 用户维度:常见的有是否新用户,活跃度。
  • 物品维度:物品的属性信息,流行度,是否新加入物品。
  • 时间维度:比如早晚,工作日还是周末。

参考

《推荐系统实践》
https://zhpmatrix.github.io/2018/06/25/recsys-rethinking/

你可能感兴趣的:(信息检索)