推荐系统10:总结
随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载(information overload)的时代。在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战。
对于信息消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。
推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。(注:信息也统称为“物品”)。
1、推荐系统VS搜索引擎
解决信息过载的两种方法:
1.1 搜索引擎
优点:可以让用户通过搜索关键词找到自己需要的信息。
缺点:(1)需要用户主动提供准确的关键词来寻找信息,当用户无法找到准确描述自己需求的关键词时,搜索引擎就无能为力了;(2)用户在使用同一个关键字搜索信息时,得到的结果是相同的;(3)信息及其传播是多样化的,而用户对信息的需求是多元化和个性化的,那么通过以搜索引擎为代表的信息检索系统获得的结果不能满足用户的个性化需求,仍然无法很好地解决信息超载问题。
1.2 个性化推荐系统
优点:(1)不需要用户提供明确的需求,它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户;(2)从物品的角度出发,推荐系统可以更好地发掘物品的长尾(long tail)。
2、推荐系统的概念和定义
推荐系统的定义有不少,但被广泛接受的推荐系统的概念和定义是Resnick和Varian在1997年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程”。
推荐系统有3个重要的模块:用户建模模块、推荐对象建模模块、推荐算法模块。通用的推荐系统模型流程如图2所示。推荐系统把用户模型中兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。
3、推荐算法
推荐算法(或叫推荐策略)是整个推荐系统中最核心和关键的部分,在很大程度上决定了推荐系统类型和性能的优劣,推荐算法的研究是推荐系统最为繁荣的部分,大量的论文著作都关注了这个方面。目前,出现的推荐算法有很多,对其分类的标准也没有一个统一的标准,但受到大家公认的推荐算法基本包括以下几种:基于内容的推荐、协同过滤推荐、基于关联规则的推荐、基于知识的推荐、组合(混合)推荐及其他推荐。以下来介绍各种推荐策略及其优缺点。
3.1 基于内容的推荐
基于内容的推荐(content-based recommendation)方法源于信息获取领域,是信息检索领域的重要研究内容。该方法是根据用户已经选择的对象,从推荐对象中选择其他特征相似的对象作为推荐结果。
(1)这一推荐算法首先提取推荐对象的内容特征,和用户模型中的用户兴趣偏好匹配,匹配度较高的推荐对象就可作为推荐结果推荐给用户。例如在进行音乐推荐时,系统分析用户以前选择的音乐的共性,找到用户的兴趣点。然后从其他音乐中选择和用户兴趣点相似的音乐推荐给用户;
(2)计算推荐对象的内容特征和用户模型中兴趣特征二者之间的相似性是该推荐策略中一个关键部分;
(3)计算所得的值按其大小排序,将最靠前的若干个对象作为推荐结果呈现给用户。
基于内容的推荐算法中的关键就是用户模型描述和推荐对象内容特征描述。其中对推荐对象内容进行特征提取,目前对文本内容进行特征提取方法比较成熟,如浏览页面的推荐、新闻推荐等。但网上的多媒体信息大量涌现,而对这些多媒体数据进行特征提取还有待技术支持,所以多媒体信息还没有大量用于基于内容的推荐。
基于内容的推荐的优点如下:
(1)简单、有效,推荐结果直观,容易理解,不需要领域知识。
(2)不需要用户的历史数据,如对对象的评价等。
(3)没有关于新推荐对象出现的冷启动问题。
(4)没有稀疏问题。
(5)比较成熟的分类学习方法能够为该方法提供支持,如数据挖掘、聚类分析等。
基于内容的推荐的缺点如下:
(1)该方法的广泛应用受到了推荐对象特征提取能力的限制较为严重。因为多媒体资源 没有有效的特征提取方法,比如图像、视频、音乐等。既使文本资源,其特征提取方法也只能反映资源的一部分内容,例如,难以提取网页内容的质量,这些特征可能影响到用户的满意度。
(2)很难出现新的推荐结果。推荐对象的内容特征和用户的兴趣偏好匹配才能获得推荐,用户将仅限于获得跟以前类似的推荐结果,很难为用户发现新的感兴趣的信息。
(3)存在新用户出现时的冷启动问题。当新用户出现时,系统较难获得该用户的兴趣偏好,就不能和推荐对象的内容特征进行匹配,该用户将较难获得满意的推荐结果。
(4)对推荐对象内容分类方法需要的数据量较大。目前,尽管分类方法很多,但构造分类器时需要的数据量巨大,给分类带来一定困难。
(5)不同语言的描述的用户模型和推荐对象模型无法兼容也是基于内容推荐系统面临的又一个大的问题。
3.2 协同过滤推荐
协同过滤推荐(collaborative filtering recommendation)是推荐算法中最成功的算法,它于20世纪90年代开始研究并促进了整个推荐系统研究的繁荣。大量论文和研究都属于该类别。比如Grundy书籍推荐系统、Tapestry邮件处理系统,Grou-plens、Ringo等推荐系统都属于该类推荐。
协同过滤推荐的基本思想借鉴了日常在选购商品、选择用餐饭店、选择看哪部电影等等的方法。如果自己身边的很多朋友都选购某种商品,那么自己就会很大概率的选择该商品。或者用户喜欢某类商品,当看到和这类商品相似商品并且其他用户对此类商品评价很高时,则购买的概率就会很大。协同推荐的用户模型为用户-项目评价矩阵。
协同过滤推荐一般分为两类:基于用户的协同推荐(User-based Collaborative Filtering)(或基于内存的协同推荐(Mem-ory-Based Collaborative Filtering))、基于项目的协同推荐(Item-Based Collaborative Filtering)。
3.3 基于关联规则的推荐
基于关联规则的推荐系统(AssociationRule一basedReeommender)是以关联规则挖掘算法为基础,把用户已购买(或者喜好)的项目作为规则头,把规则体作为待选推荐对象。
3.4 基于知识的推荐
基于内容的过滤和协同过滤技术若没有经过足够数据的训练则其推荐质量非常低。基于知识的推荐技术不依赖客户对商品的评分数据量,而是通过推断用户的需要和偏好来作出推荐。总结查阅的文献,可将基于知识的推荐技术分为三类:数据库知识发现KDD(Knowledge Dis-covery in Database)、基于案例推理CBR(Case Based Reasoning)和知识推理KR(Knowledge Reasoning)。
3.5 组合(混合)推荐
各种推荐方法都有各自的优缺点,在实际应用中可以针对具体问题采用推荐算法的组合进行推荐,即所谓的组合推荐。组合推荐的目的是通过组合不同的推荐算法,达到扬长避短的目的,从而产生更符合用户需求的推荐。理论上讲可以有很多种的推荐组合方法,但目前研究和应用最多的组合推荐是把基于内容的推荐和系统过滤推荐的组合。把它们组合方法根据应用场景不同而不同,主要混合思路有两种:
(1)推荐结果混合:这是一种最简单的混合方法,就是分别是用两种或多种推荐方法产生推荐结果,然后采用某种算法把推荐结果进行混合而得到最终推荐。如何从众多推荐结果中选择用户需要的推荐结果成为该算法的一个重要研究点。比如采用投票机制来组合推荐结果,采用一定的标准对两者产生的推荐结果判断,从而选择其中之一,利用预测打分的线性组合进行推荐。
(2)推荐算法的混合:以某种推荐算法为框架,混合另外的推荐算法,例如协同推荐的框架内混合基于内容的推荐(或相反)、基于协同推荐的框架内混合基于网络结构的推荐,社会网络分析法的推荐框架内混合基于内容的推荐,基于网络结构的推荐和基于社会网络分析法的推荐的混合等。
4、推荐系统的评测指标
本节将介绍各种推荐系统的评测指标。这些评测指标可用于评价推荐系统各方面的性能。这些指标有些可以定量计算,有些只能定性描述,有些可以通过离线实验计算,有些需要通过用户调查获得,还有些只能在线评测。
4.1 用户满意度
用户作为推荐系统的参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。
用户调查获得用户满意度主要是通过调查问卷的形式。用户对推荐系统的满意度分为不同的层次。
在线系统中,用户满意度主要通过一些对用户行为的统计得到。(1)电子商务网站中,用户如果购买了推荐的商品,就表示他们在一定程度上满意,可以利用购买率度量用户的满意度(2)有些网站会通过设计一些用户反馈界面收集用户满意度,有对推荐结果满意或者不满意的反馈按钮,统计两种按钮的单击情况(3)更一般的情况下,我们可以用点击率、用户停留时间和转化率等指标度量用户的满意度
4.2 预测准确度
预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。
(1)需要一个包含用户的历史行为记录的离线数据集
(2)将该训练集通过时间分成训练集和测试集
(3)通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为
(4)计算预测行为和测试集上实际行为的重合度作为预测准确度
由于离线的推荐算法有不同的研究方向,因此下面将针对不同的研究方向介绍它们的预测准确度指标。
评分预测
预测用户对物品评分的行为称为评分预测。
评分预测的预测准确度一般通过均方根误差和平均绝对误差计算。
TopN推荐
主要计算召回率和准确率。准确率就是指我推荐的n个物品中有多少个是对的,其所占的比重。召回率则是指正确结果中有多少比率的物品出现在了推荐结果中。两者的不同就是前者已推荐结果个数当除数,后者已正确结果个数当除数。
4.3 覆盖率
覆盖率最简单的定义:推荐系统能够推荐出来的物品占总物品集合的比例
用来描述一个推荐系统对物品长尾的发掘能力。
就是指推荐出来的结果能不能很好的覆盖所有的商品,是不是所有的商品都有被推荐的机会。最简单的方法就是计算所有被推荐的商品占物品总数的比重,当然这个比较粗糙,更精确一点的可以用信息熵和基尼系数来度量。
一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。
研究表明现在主流的推荐算法都具有马太效应(强者更强,弱者更弱)。
4.4 多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果具有多样性。
多样性推荐列表的好处用一句俗话表述就是“不在一棵树上吊死”。
多样性描述了推荐列表中物品两两之间的不相似性,因此多样性和相似性是对应的。可以根据物品间的相似度来计算,一个推荐列表中如果所有物品间的相似度都比较高,那么往往说明都是同一类物品,缺乏多样性。
比如我看电影,我既喜欢看格斗类的电影,同时又喜欢爱装文艺,那么给我的推荐列表中就应该这两个类型的电影都有,而且得根据我爱好比例来推荐,比如我平时80%是看格斗类的,20%是看文艺类的,那么推荐结果中最好也是这个比例。
4.5 新颖性
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品
在一个网站中实现新颖性的最简单方法:把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。
不能说系统推荐的物品其实我都知道,那这样推荐系统就完全失去了存在的意义,一般都希望推荐一些用户不知道的商品或者没看过没买过的商品。方法一是取出已经看到过买过的商品,但这还不够,一般会计算推荐商品的平均流行度,因为通常越不热门的物品越会让用户觉得新颖。比如我爱周星驰,那么推荐《临岐》就很有新颖性,因为大家都不知道这是周星驰出演的。
4.6 惊喜度
惊喜度是最近这几年推荐系统领域最热门的话题。
惊喜度和新颖性是有区别的:(1)如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高;(2)推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣度的相似度。
4.7 信任度
度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。如果用户信任推荐系统,那么往往会增加与推荐系统的互动,从而获得更好的个性化推荐。
提高推荐系统的信任度的两种方法:(1)增加推荐系统的透明度(如,提供推荐解释);(2)考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释
4.8 实时性
物品(新闻、微博等)具有很强的时效性,需要在物品还具有时效性时就将它们推荐给用户。
推荐系统的实时性包括两个方面:
(1)推荐系统需要实时地更新推荐列表来满足用户新的行为变化。
(2)推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。
4.9 健壮性
任何一个能带来利益的算法系统都会被人攻击,这方面最典型的例子就是搜索引擎(作弊和反作弊斗争)。
推荐系统目前也遇到了同样的作弊问题,而健壮性指标衡量了一个推荐系统抗击作弊的能力。
最著名的作弊方法:行为注入攻击。
算法健壮性的评测主要利用模拟攻击。
在实际系统中,提高系统的健壮性,除了选择健壮性高的算法,还有以下方法:(1)设计推荐推荐系统时尽量使用代价比较高的用户行为,比如有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费;(2)在使用数据前,进行攻击检测,从而对数据进行清理。
深度学习用于推荐系统
推荐阅读:deep learning 可以用来做推荐系统吗?
这个得分两方面来说。学术上,总体来说,deep learning (更确切地说,神经网络)不仅可以用来做推荐系统,还要比之前的手段表现要好。主要的优越性在于神经网络可以更好地表现稀疏的特征(sparse feature)而不需要太担心过度拟合。也正因为如此,无论是Google还是Facebook,都在逐步地把推荐系统替换成基于神经网络的(文末有附相关论文)。
不过,既然回答这个问题了,就得说说另一方面的事情。如果说这么些年计算机科学的发展教会了我们什么道理,那就是在这个领域很少有什么绝对的更好或者更差,大多数时候都是trade-off(取舍),我们需要找的是收益与成本上最有效率的那个点。只不过技术进步会时常使得我们评价取舍的体系发生变化,从而导出不一样的结果。举例来说,互联网时代CDN和缓存的大规模出现是由于储存硬件的成本下降从而使我们更可能以空间换时间。而深度学习本身在学术上的再度复出也是由于基于算力的取舍发生了变化。
学术的目的在于推动人类知识的边界,所以毫无疑问深度学习是未来的方向。然而在工业实践上是不是应该用深度学习做推荐系统,这取决于在每个具体情况下对收益与成本的考量。
收益:
1. 有没有必须上深度学习才能实现的提升?
正如上文所说,神经网络的优越性在于对稀疏特征的表达。这对那些内容类型和用户品味五花八门的内容平台极为重要,比如Google和Facebook。而对于还处在中前期,内容和用户群调性都比较一致的产品,神经网络的独有优势并不是十分强。
2. 是不是只要上了深度学习就能提升?
一个明显的因素就是feature的数量和质量。如果feature上做得不够多,上了神经网络也没用。
成本:
- 用于开发神经网络的人力机会成本把开发资源放到对基础性工作的完善上,比如做feature上,可以有多少提升。
- 维持额外算力的财务机会成本把钱用来推广/发工资/买好电脑来提高开发效率,会不会收效更好。
总之,我相信神经网络一定是未来的方向,但目前,它在工业实践上是不是一个最优的方案,需要各家具体问题具体分析。