欢迎关注【机器学习之路】公众号
1。http://www.voidcn.com/blog/u013713010/article/p-3625549.html
在推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。
一、基于内容推荐
基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
基于内容推荐方法的优点是:
1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
2)能为具有特殊兴趣爱好的用户进行推荐。
3)能推荐新的或不是很流行的项目,没有新项目问题。
4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
二、协同过滤推荐
协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。
协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内容的评价来向目标用户进行推荐。
基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。
和基于内容的过滤方法相比,协同过滤具有如下的优点:
1)能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。
2)共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
3)有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。
4)能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。
虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。
三、基于关联规则推荐
基于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。
算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。
四、基于效用推荐
基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。
五、基于知识推荐
基于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。
六、组合推荐
由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。
在组合方式上,有研究人员提出了七种组合思路:
1)加权(Weight):加权多种推荐技术结果。
2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。
4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。
5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。
七、主要推荐方法的对比
各种推荐方法都有其各自的优点和缺点,见表1。
表1 主要推荐方法对比
推荐方法
优点
缺点
基于内容推荐
推荐结果直观,容易解释;
不需要领域知识稀疏问题;新用户问题;
复杂属性不好处理;
要有足够数据构造分类器
协同过滤推荐
新异兴趣发现、不需要领域知识;
随着时间推移性能提高;
推荐个性化、自动化程度高;
能处理复杂的非结构化对象稀疏问题;
可扩展性问题;
新用户问题;
质量取决于历史数据集;
系统开始时推荐质量差;
基于规则推荐
能发现新兴趣点;
不要领域知识规则抽取难、耗时;
产品名同义性问题;
个性化程度低;
基于效用推荐
无冷开始和稀疏问题;
对用户偏好变化敏感;
能考虑非产品特性用户必须输入效用函数;
推荐是静态的,灵活性差;
属性重叠问题;
基于知识推荐
能把用户需求映射到产品上;
能考虑非产品属性知识难获得;
推荐是静态的
协同过滤
协同过滤是一种基于一组兴趣相同的用户或项目进行的推荐,它根据邻居用户(与目标用户兴趣相似的用户)的偏好信息产生对目标用户的推荐列表。协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法。
基于用户的(User based)协同过滤算法是根据邻居用户的偏好信息产生对目标用户的推荐。它基于这样一个假设:如果一些用户对某一类项目的打分比较接近,则他们对其它类项目的打分也比较接近。协同过滤推荐系统采用统计计算方式搜索目标用户的相似用户,并根据相似用户对项目的打分来预测目标用户对指定项目的评分,最后选择相似度较高的前若干个相似用户的评分作为推荐结果,并反馈给用户。这种算法不仅计算简单且精确度较高,被现有的协同过滤推荐系统广泛采用。User-based协同过滤推荐算法的核心就是通过相似性度量方法计算出最近邻居集合,并将最近邻的评分结果作为推荐预测结果返回给用户。例如,在下表所示的用户一项目评分矩阵中,行代表用户,列代表项目(电影),表中的数值代表用户对某个项目的评价值。现在需要预测用户Tom对电影《枪王之王》的评分(用户Lucy对电影《阿凡达》的评分是缺失的数据)。
由上表不难发现,Mary和Pete对电影的评分非常接近,Mary对《暮色3:月食》、《唐山大地震》、《阿凡达》的评分分别为3、4、4,Tom的评分分别为3、5、4,他们之间的相似度最高,因此Mary是Tom的最接近的邻居,Mary对《枪王之王》的评分结果对预测值的影响占据最大比例。相比之下,用户John和Lucy不是Tom的最近邻居,因为他们对电影的评分存在很大差距,所以JohLn和Lucy对《枪王之王》的评分对预测值的影响相对小一些。在真实的预测中,推荐系统只对前若干个邻居进行搜索,并根据这些邻居的评分为目标用户预测指定项目的评分。由上面的例子不难知道,User一based协同过滤推荐算法的主要工作内容是用户相似性度量、最近邻居查询和预测评分。
目前主要有三种度量用户间相似性的方法,分别是:余弦相似性、相关相似性以及修正的余弦相似性。
①余弦相似性(Cosine):用户一项目评分矩阵可以看作是n维空间上的向量,对于没有评分的项目将评分值设为0,余弦相似性度量方法是通过计算向量间的余弦夹角来度量用户间相似性的。设向量i和j分别表示用户i和用户j在n维空间上的评分,则用基于协同过滤的电子商务个性化推荐算法研究户i和用户j之间的相似性为:
②修正的余弦相似性 (AdjustedCosine):余弦相似度未考虑到用户评分尺度问题,如在评分区间[1一5]的情况下,对用户甲来说评分3以上就是自己喜欢的,而对于用户乙,评分4以上才是自己喜欢的。通过减去用户对项的平均评分,修正的余弦相似性度量方法改善了以上问题。用几表示用户i和用户j共同评分过的项集合,Ii和寿分别表示用户i和用户j评分过的项集合,则用户i和用户j之间的相似性为:
③相关相似性(Correlation)此方法是采用皮尔森(Pearson)相关系数来进行度量。设Iij表示用户i和用户j共同评分过的项目集合,则用户i和用户j之间相似性为:
在得到目标用户的最近邻居以后,接着就要产生相应的推荐结果。设NNu为用户u的最近邻居集合,则用户u对项j的预测评分Puj计算公式如下:
基于项目的(Item一based)协同过滤是根据用户对相似项目的评分数据预测目标项目的评分,它是建立在如下假设基础上的:如果大部分用户对某些项目的打分比较相近,则当前用户对这些项的打分也会比较接近。ltem一based协同过滤算法主要对目标用户所评价的一组项目进行研究,并计算这些项目与目标项目之间的相似性,然后从选择前K个最相似度最大的项目输出,这是区别于User-based协同过滤。仍拿上所示的用户一项目评分矩阵作为例子,还是预测用户Tom对电影《枪王之王》的评分(用户Lucy对电影《阿凡达》的评分是缺失的数据)。
通过数据分析发现,电影《暮色3:月食》的评分与《枪王之王》评分非常相似,前三个用户对《暮色3:月食》的评分分别为4、3、2,前三个用户对《枪王之王》的评分分别为4、3、3,他们二者相似度最高,因此电影《暮色3:月食》是电影《枪王之王》的最佳邻居,因此《暮色3:月食》对《枪王之王》的评分对预测值的影响占据最大比例。而《唐山大地震》和《阿凡达》不是《枪王之王》的好邻居,因为用户群体对它们的评分存在很大差距,所以电影《唐山大地震》和《阿凡达》对《枪王之王》的评分对预测值的影响相对小一些。在真实的预测中,推荐系统只对前若干个邻居进行搜索,并根据这些邻居的评分为目标用户预测指定项目的评分。
由上面的例子不难知道,Item一based协同过滤推荐算法的主要工作内容是最近邻居查询和产生推荐。因此,Item一based协同过滤推荐算法可以分为最近邻查询和产生推荐两个阶段。最近邻查询阶段是要计算项目与项目之间的相似性,搜索目标项目的最近邻居;产生推荐阶段是根据用户对目标项目的最近邻居的评分信息预测目标项目的评分,最后产生前N个推荐信息。
ltem一based协同过滤算法的关键步骤仍然是计算项目之间的相似性并选出最相似的项目,这一点与user一based协同过滤类似。计算两个项目i和j之间相似性的基本思想是首先将对两个项目共同评分的用户提取出来,并将每个项目获得的评分看作是n维用户空间的向量,再通过相似性度量公式计算两者之间的相似性。
分离出相似的项目之后,下一步就要为目标项目预测评分,通过计算用户u对与项目i相似的项目集合的总评价分值来计算用户u对项目i的预期。这两个阶段的具体公式和操作步骤与基于用户的协同过滤推荐算法类似,所以在此不再赘述。
与基于内容的推荐算法相比,协同过滤有下列优点:能够过滤难以进行机器自动基于内容分析的信息。如艺术品、音乐;能够基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤;推荐的新颖性。
然而,协同过滤也存在着以下的缺点:用户对商品的评价非常稀疏,这样基于用户的评价所得到的用户间的相似性可能不准确(即稀疏性问题);随着用户和商品的增多,系统的性能会越来越低(即可扩展性问题);如果从来没有用户对某一商品加以评价,则这个商品就不可能被推荐(即最初评价问题)。
混合推荐系统
目前有很多学者都在研究基于多种方法的混合推荐系统,最常见的为基于内容和基于协同过滤的混合。本博文将详细介绍提于对这两种推荐系统同构化整合的混合推荐模型,该算法同时拥有协同过滤推荐系统和基于内容推荐系统的优点,并且在一定程度上避免了基于内容或协同过滤的传统推荐系统各自的缺点。
该混合推荐算法的模型及结构如下图所示:
该模型与其他推荐模型的不同在于:1)构建了完善的模型输入模块。该模块包含可以根据需要向模型中一次或多次输入用户个人资料、查询(检索)时需要的关键词和句子、商品对象的各项属性值、用户使用推荐系统时和使用推荐系统后的评价,以及来自第三方对商品对象的评价等参数。2)构建了基于内容和协同过滤的整合推荐实施模块。该模块以回归模型为基本依据,以用户信息库、商品信息库、历史信息库和在线信息库为基础,分别将基于内容推荐的算法和协同过滤推荐算法应用于一般预测值的计算及其随机误差项的计算。3)构建了较完备的推荐结果输出模块。该模块依据系统的不同表现形式,将商品信息库中的资源“主动”推荐给用户。推荐方法包括搜索排序优先、邮件以及各种隐式信息传递等。
该混合模型的主要过程和核心是,先利用回归算法提取商品的内容属性,再对用户进行基于内容的协同过滤,最后同构化整合二者结论,并进行加权求和与有序化。
在详细阐述模型之前,有必要分析一下模型的输入数据。推荐系统典型的输入数据是给每个商品及其属性的评价。例如,表1是一个代表用户对电影优劣评价的m×n用户电影评价矩阵,该表的主要功能是在基于已经评价元素的基础上对空缺值进行预测。在评价矩阵中,用户1已经对电影1、电影2、电影4、电影5做了评价,那么用户1会对电影3、电影6做何评价呢?同样地,用户2对电影3,以及用户3对电影4和电影5该做何评价呢?
本混合推荐模型的算法由6个主要步骤组成:
首先,需要有一份存有所有商品(或对象)评价值(可能含有空缺值)的表格,初始表格中的评价值主要由用户直接或间接给出。例如,www.movielens.org就是一个电影推荐网站,网站访问者只要注册并提供对15部以上的电影进行评价,那么他(她)就可以获得网站的推荐服务。像电影类别(例如动作、戏剧、爱情等)、导演、主要演员、制片商等关键信息都有助于对用户进行推荐。因此,用户在获得推荐服务之前应当尽可能向网站提供此类信息。
其次,一旦用户提交了推荐模型所需要的关键信息,那么对用户的电影推荐就可以应用式(1)来计算:
(其中,Ri,j是用户i对商品j的总体评价值,Xi,j,k是用户i对商品j的第k个属性的评价值,m是需要评价的商品的属性总个数。)
在回归模型(1)中,需要测量的各个参数αi,x(x∈[0,m])决定了各个属性的数值对用户的重要性。用户过去的评价值都应用到模型(1)中,一旦用户i的模型中各个参数被估计出来,那么他(她)的空缺值就可以通过模型计算出来。例如,在表1中,用户1的回归模型通过他(她)已经看过的电影来构造,模型构造出来后,用户1对电影3的期望值就可以通过电影3和模型中的各个参数αi,x(x∈[0,m])预测出来。
第三步,基于回归模型(1),计算适合所有用户和商品及其属性的预测值R*i,j。该预测值既适合实际已经发生的评价结果检验,也适合用户实际未发生或丢失的空缺值的预测。
第四步,构建一个预测误差的数据矩阵。该误差矩阵的值由实际发生的数据与预测数据之间的差值计算出来,即εi,j=Ri,j-R*i,j(2),公式中的εi,j实际上就是模型(1)中的随机误差项。由于对于需要预测的商品没有实际发生评价值Ri,j,因此该商品的随机误差项就无法计算。这样,通过实际的评价值和回归模型计算值之差构建的预测误差数据矩阵的形式也就和表1类似,与表1相对应的空白处也是没有数据的。
第五步,将协作过滤技术用于第四步构建的预测误差数据矩阵,我们在此采用基于邻居的协同推荐算法。为了计算用户的空缺值,采用式(3)来计算用户的随机误差项εi,j:Ra,j=λ∑ni=1wa,i(εi,j-εa)+εa(3)其中,Ra,j是用户a对商品j的评价,n是协同过滤数据矩阵中已经对商品j评价过的用户的数量,Wa,i是用户i和目标用户a之间的相似性,λ是一个总和值为1的正太化因素。在表1的电影评价例子中,假设对用户1而言,电影3是·143·需要通过预测来判断是否值得推荐的。在基于邻居的算法中,需要获得用户2、用户3等其他用户对电影3评价的加权平均数。另外,权重(Wa,i)的大小取决于用户1在电影评价方面与其他用户的相似性,包括皮尔森(Pearson)相关系数法、斯皮尔曼(Spearman)秩相关系数法和向量相似度等诸多方法均可以用来测定该值。在协同过滤的算法方面还有很多其他重要的文献,本文就不探讨了。
第六步,把第三步和第五步的计算结果求和,即第三步中利用基于内容推荐方法得出的R*i,j和第五步基于协同过滤推荐方法得出的εi,j,通过对式(2)进行变化并计算,得Ri,j=R*i,j+εi,j,即用户i对商品j的预测评价值。