推荐系统学习 -- 好的推荐系统

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

也就是帮助用户解决 信息过载(information overload)的问题。

 

 搜索引擎和 推荐系统的区别:

和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。因此,从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

 

主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求。

因此,如果要通过发掘长尾提高销售额,就必须充分研究用户的兴趣,而这正是个性化推荐系统主要解决的问题。推荐系统通过发掘用户的行为,找到用户的个性化需求,从而

将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

 

社会化推荐(social recommendation),即让好友给自己推荐电影;

基于内容的推荐 (content-based filtering),推荐用户喜欢的同一类型的电影;

基于协同过滤(collaborative filtering),找到和自己历史兴趣相似的一群用户,看看他们最近在看什么电影,那么结果可能比宽泛的热门排行榜更能符合自己的兴。

 

基于物品的推荐算法(item-based method),该算法 给用户推荐那些和他们之前喜欢的物品相似的物品。

亚马逊还有另外一种个性化推荐,就是按照用户在Facebook的好友关系,给用户推荐他们的好友在亚马逊上喜欢的物品。

 

个性化推荐的成功应用需要两个条件:

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

 

基于内容的推荐是最常见的推荐方式。

 

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


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

推荐系统评测

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

同时,推荐系统还要能够帮助商家将那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户。

 

为了全面评测推荐系统对三方(用户、网站、内容提供方)利益的影响,本章将从不同角度出发,提出不同的指标。这些指标包括准确度、覆盖度、新颖度、惊喜度、信任度、透明度等。

在推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)

 

离线实验(offline experiment):推荐系统的离线实验都是在数据集上完成的,也就是说它不需要一个实际的系统来供它实验,而只要有一个从实际系统日志中提取的数据集即可。这种实验方法的
好处是不需要真实用户参与,可以直接快速地计算出来,从而方便、快速地测试大量不同的算法。

它的主要缺点是无法获得很多商业上关注的指标,如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情。

 

用户调查(user study):用户调查是推荐系统评测的一个重要工具,很多离线时没有办法评测的与用户主观感受有关的指标都可以通过用户调查获得。比如,如果我们想知道推荐结果是否很令用户惊喜,那我们最好直接询问用户。但是,用户调查也有一些缺点。首先,用户调查成本很高,需要用户花大量时间完成一个个任务,并回答相关的问题。有些时候,还需要花钱雇用测试用户。因此,大多数情况下很难进行大规模的用户调查,而对于参加人数较少的用户调查,得出的很多结论往往没有统计意义。因此,我们在做用户调查时,一方面要控制成本,另一方面又要保证结果的统计意义。【比如:外呼问卷调查】

 

在线实验(online experiment)在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将它和旧的算法进行比较。

一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验:
 首先,需要通过离线实验证明它在很多离线指标上优于现有的算法。
 然后,需要通过用户调查确定它的用户满意度不低于现有的算法。
 最后,通过在线的AB测试确定它在我们关心的指标上优于现有的算法。

 

指标

1、用户满意度

2、预测准确度

1)评分预测: RMSE 和 MAE

关于RMSE和MAE这两个指标的优缺点, Netflix认为RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。

研究表明,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误。

2)TopN推荐
网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。

关于评分预测和TopN推荐的讨论
评分预测一直是推荐系统研究的热点,绝大多数推荐系统的研究都是基于用户评分数据的评分预测。这主要是因为,一方面推荐系统的早期研究组GroupLens的研究主要就是基于电影评分
数据MovieLens进行的,其次,Netflix大赛也主要面向评分预测问题。因而,很多研究人员都将研究精力集中在优化评分预测的RMSE上。

对此,亚马逊前科学家Greg Linden有不同的看法。2009年, 他指出电影推荐的目的是找到用户最有可能感兴趣的电影,而不是预测用户看了电影后会给电影什么样的评分。

因此,TopN推荐更符合实际的应用需求。也许有一部电影用户看了之后会给很高的分数,但用户看的可能性非常小。

因此,预测用户是否会看一部电影,应该比预测用户看了电影后会给它什么评分更加重要。因此,本书主要也是讨论TopN推荐。

 

3、覆盖率

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

第一个是信息熵
第二个指标是基尼系数(Gini Index)

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

 

4、多样性

 

多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。

关于推荐系统多样性最好达到什么程度,可以通过一个简单的例子说明。假设用户喜欢动作
片和动画片,且用户80%的时间在看动作片,20%的时间在看动画片。那么,可以提供4种不同的
推荐列表:A列表中有10部动作片,没有动画片;B列表中有10部动画片,没有动作片;C列表中
有8部动作片和2部动画片;D列表有5部动作片和5部动画片。在这个例子中,一般认为C列表是
最好的,因为它具有一定的多样性,但又考虑到了用户的主要兴趣。A满足了用户的主要兴趣,
但缺少多样性,D列表过于多样,没有考虑到用户的主要兴趣。B列表即没有考虑用户的主要兴
趣,也没有多样性,因此是最差的。

 

5、新颖性

评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。

但是,用推荐结果的平均流行度度量新颖性比较粗略,因为不同用户不知道的东西是不同的。因此,要准确地统计新颖性需要做用户调查。

 

6、惊喜度:

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

需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣的相似度

 

7、信任度

同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。

给用户推荐评论过得商品,更容易被购买。

8. 实时性

推荐系统的实时性包括两个方面。

首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。比如,当一个用户购买了iPhone,如果推荐系统能够立即给他推荐相关配件,那么肯定比第二天再给用户推荐相关配件更有价值。

很多推荐系统都会在离线状态每天计算一次用户推荐列表,然后于在线期间将推荐列表展示给用户。这种设计显然是无法满足实时性的。与用户行
为相应的实时性,可以通过推荐列表的变化速率来评测。如果推荐列表在用户有行为后变化不大,或者没有变化,说明推荐系统的实时性不高。


实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。

而对于新物品推荐能力,我们可以利用用户推荐列表中有多大比例的物品是当天新加的来评测。

 

 

9. 健壮性

算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后
利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算
法比较健壮。

在实际系统中,提高系统的健壮性,除了选择健壮性高的算法,还有以下方法:

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

10. 商业目标

 

 

评测维度
上一节介绍了很多评测指标,但是在评测系统中还需要考虑评测维度,比如一个推荐算法,虽然整体性能不好,但可能在某种情况下性能比较好,而增加评测维度的目的就是知道一个算法
在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。一般来说,评测维度分为如下3种。
 用户维度 主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
 物品维度 包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
 时间维度 包括季节,是工作日还是周末,是白天还是晚上等。
如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。

posted @ 2019-07-19 21:45  静悟生慧  阅读(504)  评论(0编辑  收藏  举报