第1章 好的推荐系统

1.1什么是推荐系统

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

搜索引擎与推荐系统的区别
搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。
推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。推荐系统能够很好的发掘物品的长尾,挑战传统的80/20原则(80%的销售额来自20%的热门品牌)。

结合实际场景,推荐系统如何工作

  • 社会化推荐。向朋友咨询,即让好友给自己推荐物品。
  • 基于内容的推荐。通过分析用户曾经看过的电影找到用户喜欢的演员和导演,然后给用户推荐这些演员或者导演的其他电影。
  • 基于协同过滤。找到和自己历史兴趣相似的一群用户,推荐他们最近在看的电影。
    综上,推荐算法的本质
    是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。

1.2个性化推荐系统的应用

个性化推荐系统在这些网站中的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网站的点击率和转化率。

1.2.1电子商务

个性化推荐

  • 基于物品的推荐,给用户推荐那些和他们之前喜欢的物品相似的物品
  • 基于好友的推荐,给用户推荐他们的好友在亚马逊上喜欢的物品

相关推荐(应用于打包销售)

  • 购买了这个商品的用户也经常购买的其他商品
  • 浏览过这个商品的用户经常购买的其他商品

1.2.2电影和视频网站

个性化推荐
基于物品的推荐算法,即给用户推荐和他们曾经喜欢额电影相似的电影。

1.2.3个性化音乐网络电台

个性化推荐成功应用条件

  • 存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。
  • 用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。

Pandora的算法主要基于内容,其音乐家和研究人员亲自听了上万首来自不同歌手的歌,然后对歌曲的不同特征(比如旋律、节奏、编曲和歌词等)进行标注,这些标注被称为音乐的基因。然后根据专家基因计算歌曲的相似度,并给用户推荐和他之前喜欢的音乐在基因上相似的其他歌曲。
Last.fm记录了所有用户的听歌记录以及用户对歌曲的反馈,在这一基础上计算出不同用户在歌曲上的喜好相似度,从而给用户推荐和他有想死听歌洗好的其他用户喜欢的歌曲。

音乐推荐的特点决定了音乐是一种非常适合用来推荐的物品

  • 物品空间大
  • 消费每首歌的代价很小
  • 物品种类丰富
  • 听一首歌耗时很少
  • 物品重用率很高
  • 用户充满激情
  • 上下文相关
  • 次序很重要
  • 很多播放列表资源
  • 不需要用户全神贯注
  • 高度社会化

1.2.4社交网络

个性化推荐技术主要应用于

  • 利用用户的社交网络信息对用户进行个性化的物品推荐。Facebook开发了推荐API,该工具根据用户好友喜欢的信息,给用户推荐他们好友喜欢的物品。
  • 信息流的会话推荐。用户对好友的分享进行评论,每个分享和它的所有评论被称为一个会话。
  • 给用户推荐好友。通过个性化推荐服务给用户推荐好友。

1.2.5个性化阅读

Google Reader允许用户关注自己感兴趣的人,然后看到所关注用户分享的文章。
Zite收集用户对文章的偏好信息。

1.2.6基于位置的服务

基于位置给用户推荐离他近的且他感兴趣的服务,用户就更有可能去消费。

1.2.7个性化邮件

  • 垃圾邮件,通过垃圾邮件过滤器去除。
  • 正常邮件,找到对用户重要的邮件让用户优先浏览。
    1)通过分析用户阅读邮件的历史行为和习惯对新邮件进行重新排序,从而提高用户的工作效率。
    2)通过分析用户对邮件的历史行为,找到用户感兴趣的邮件,展示在一个专门的收件箱里。用户每天可以先浏览这个邮件的邮件,再浏览其他文件。

1.2.8个性化广告

个性化广告和狭义个性化推荐的区别是,个性化推荐着重于帮助用户找到可能令他们兴趣的物品,而广告推荐着重于帮助广告找到可能对它们感兴趣的用户,即一个以用户为核心,而另一个以广告为核心。

  • 上下文广告。通过分析用户正在浏览的网页内容,投放和网页内容相关的广告。代表系统是谷歌的Adsense。
  • 搜索广告。通过分析用户在当前会话中的搜索记录,判断用户而搜索目的,投放和用户目的相关的广告。
  • 个性化展示广告。我们经常在很多网站看到大量展示广告(就是那些大的横幅图片),它们是根据用户的兴趣,对不同用户投放不同的展示广告。

1.3推荐系统评测

准确的并不代表好的推荐。好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能感兴趣,但却不那么容易发现的东西。

1.3.1推荐系统实验方法

1.离线实验
离线实验的方法一般由如下几个步骤构成:
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。
优点:不需要真实用户参与,可以直接快速地计算出来,从而方便、快速地测试大量不同的算法。
缺点: 无法获得很多商业上关注的指标,如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情。
2.用户调查
用户调查需要有一些真实用户,让他们在需要测试的推荐系统上完成一些任务。在他们完成任务时,我们需要观察和记录他们的行为,并让他们回答一些问题。最后,我们需要通过分析他们的行为和答案了解测试系统的性能。
优点:可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。
缺点:招募测试用户代价较大,很难组织大规模的测试 用户,因此会使测试结果的统计意义不足。
3. 在线实验
AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,读者可以浏览一下网址http://www.abtests.com/,该网站给出了很多通过实际AB测试提高网站用户 满意度的例子,从中我们可以学习到如何进行合理的AB测试。
优点:可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。
缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果。


用户进入网站后,流量分配系统决定用户是否需要被进行AB测试,如果需要的话,流量分配系统会给用户打上在测试中属于什么分组的标签。然后用 户浏览网页,而用户在浏览网页时的行为都会被通过日志系统发回后台的日志数据库。此时,如 果用户有测试分组的标签,那么该标签也会被发回后台数据库。在后台,实验人员的工作首先是 配置流量分配系统,决定满足什么条件的用户参加什么样的测试。其次,实验人员需要统计日志数据库中的数据,通过评测系统生成不同分组用户的实验报告,并比较和评测实验结果。

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

  • 首先,需要通过离线实验证明它在很多离线指标上优于现有的算法。
  • 然后,需要通过用户调查确定它的用户满意度不低于现有的算法。
  • 最后,通过在线的AB测试确定它在我们关心的指标上优于现有的算法。
评测指标

1.用户满意度
用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意
度没有办法离线计算,只能通过用户调查或者在线实验获得。

  • 用户调查获得用户满意度主要是通过调查问卷的形式。
  • 在在线系统中,用户满意度主要通过一些对用户行为的统计得到。

2.预测准确度
预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。

  • 评分预测
    很多提供推荐服务的网站都有一个让用户给物品打分的功能。那么,如果他没有评过分的物品时,会给这个物品评多少分。预测用户对物品评分的行为称为评分预测。
    评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。对于测试集中的一个用户u和物品i,令rui是用户对物品i
    的实际评分,而rˆui 是推荐算法给出的预测评
    分,那么RMSE的定义为:


MAE采用绝对值计算预测误差,它的定义为:


关于RMSE和MAE这两个指标的优缺点, Netflix认为RMSE加大了对预测不准的用户物品评
分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。研究表明,如果评分系统是基于整数
建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误差1。

  • TopN推荐
    网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。
    TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
    令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行
    为列表。那么,推荐结果的召回率定义为:



    推荐结果的准确率定义为:


  • 关于评分预测和TopN推荐的讨论
    评分预测一直是推荐系统研究的热点,绝大多数推荐系统的研究都是基于用户评分数据的评分预测。亚马逊前科学家Greg Linden指出电影推荐的目的是找到用户最有可能感兴趣的电影,而不是预测用 户看了电影后会给电影什么样的评分。

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

为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的 物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。因此, 可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比 较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。
在信息论和经济学中有两个著名的指标可以用来定义覆盖率。第一个是信息熵:



这里p(i)是物品i的流行度除以所有物品流行度之和。
第二个指标是基尼系数(Gini Index):



这里,ij是按照物品流行度p()从小到大排序的物品列表中第j个物品。

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

4. 多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴 趣领域,即推荐结果需要具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。假设s(i, j) [0,1] 定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:


而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:

从上面的定义可以看到,不同的物品相似度度量函数s(i, j)可以定义不同的多样性。如果用内容相似度描述物品间的相似度,我们就可以得到内容多样性函数,如果用协同过滤的相似度函数s(i, j)描述物品间的相似度,就可以得到协同过滤的多样性函数。

5. 新颖性
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。
评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越 可能让用户觉得新颖。但是,要准确地统计新颖性需要做用户调查。

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

7. 信任度
对于基于机器学习的自动推荐系统,同样存在信任度(trust)的问题,如果用户信任推荐系 统,那就会增加用户和推荐系统的交互。
提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency)1, 而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用 户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络 信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的 好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较 3 信任。

8. 实时性
在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效 性时就将它们推荐给用户。
推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的 行为变化。比如,当一个用户购买了iPhone,如果推荐系统能够立即给他推荐相关配件,那么肯 定比第二天再给用户推荐相关配件更有价值。很多推荐系统都会在离线状态每天计算一次用户推 荐列表,然后于在线期间将推荐列表展示给用户。这种设计显然是无法满足实时性的。与用户行 为相应的实时性,可以通过推荐列表的变化速率来评测。如果推荐列表在用户有行为后变化不大, 或者没有变化,说明推荐系统的实时性不高。
实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推 荐系统处理物品冷启动的能力。关于如何将新加入系统的物品推荐给用户,本书将在后面的章节 进行讨论,而对于新物品推荐能力,我们可以利用用户推荐列表中有多大比例的物品是当天新加 的来评测。

9. 健壮性
作者总结了很多作弊方法, 其中最著名的就是行为注入攻击(profile injection attack)。众所周知,绝大部分推荐系统都是通 过分析用户的行为实现推荐算法的。比如,亚马逊有一种推荐叫做“购买商品A的用户也经常购 买的其他商品”。它的主要计算方法是统计购买商品A的用户购买其他商品的次数。那么,我们 可以很简单地攻击这个算法,让自己的商品在这个推荐列表中获得比较高的排名,比如可以注册 很多账号,用这些账号同时购买A和自己的商品。还有一种攻击主要针对评分系统,比如豆瓣的 电影评分。这种攻击很简单,就是雇用一批人给自己的商品非常高的评分,而评分行为是推荐系 统依赖的重要用户行为。
算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法 给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后 利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表 的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算 法比较健壮。
在实际系统中,提高系统的健壮性,除了选择健壮性高的算法,还有以下方法。

  • 设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏 览行为,那么主要应该使用用户购买行为,因为购买需要付费,所以攻击购买行为的代 价远远大于攻击浏览行为。
  • 在使用数据前,进行攻击检测,从而对数据进行清理。

10. 商业目标
不同的网站具有不同的商业目标。网站使用推荐系统的目的除了满足用 户发现内容的需求,也需要利用推荐系统加快实现商业上的指标。

11.总结

1.3.3 评测维度

一般来说,评测维度分为如下3种。

  • 用户维度。主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
  • 物品维度 。包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
  • 时间维度。包括季节,是工作日还是周末,是白天还是晚上等。
    如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推 荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容