推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

本文总结了近些年被广泛接受的推荐算法,主要包括以下四种主流的推荐算法:协同过滤推荐、基于内容推荐、基于知识推荐、以及混合推荐。下面将分别介绍这四种方法的基本理论框架。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

协同过滤推荐

协同过滤推荐的原理

协同过滤推荐的主要思想是,利用已有用户群过去的行为预测当前用户最可能喜欢哪些物品。

协同过滤推荐的输入与输出

输入:“用户-物品”评分矩阵

输出:一种是用户对某个物品喜欢或不喜欢程度的预测数值;另一种是 n 项推荐物品的列表

协同过滤推荐的分类

协同过滤推荐大致可以分为:基于邻域的推荐和基于模型的推荐。前者将所有数据记忆到存储体中。后者(离线)做数据降维,抽象出特征,运行时直接用特征。

基于邻域的推荐:

基于用户的协同过滤:给用户推荐和他兴趣相似的其他用户喜欢的物品
基于物品的协同过滤:给用户推荐和他之前喜欢的物品相似的物品

基于模型的推荐:

使用部分机器学习算法,找出用户与项的相互作用模型,从而找出数据中的特定模式。如关联模型,隐语义模型、图模型、混聚类模型、分类模型、回归模型、矩阵分解模型、神经网络模型、合模型、深度学习模型等。

基于用户的协同过滤推荐

步骤:

1、找到和目标用户兴趣相似的用户集合。

2、找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

缺点:

1、UserCF 需要维护一个用户兴趣相似度的矩阵,随着用户数目增多,维护用户兴趣相似度矩阵的代价越大。计算用户兴趣相似度矩阵的运算时间复杂度和空间复杂度的增长和用户数的增长近似于平方关系。

2、当数据发生变化的时候,之前计算出的用户之间的相似度不稳定。

3、基于用户的协同过滤很难对推荐结果作出解释。

实用场景 —— 新闻推荐:

1、个性化新闻推荐更加强调抓住新闻热点,热门程度和时效性是个性化新闻推荐的重点,而个性化相对于这两点略显次要。

2、新闻的更新非常快,物品相关度的表也需要很快更新,虽然 UserCF 对于新用户也需要更新相似度表,但在新闻网站中,物品的更新速度远远快于新用户的加入速度,而且对于新用户,完全可以给他推荐最热门的新闻。

举例:

基于用户的协同过滤推荐简单的说,如果 A、B 两个用户都购买了 x、y、z 三本图书,并且给出了 5 星的好评。那么 A 和 B 就属于同一类用户。可以将 A 看过的图书 w 也推荐给用户 B。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

本示例中,5 个用户分别对 5 件商品进行了评分。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

1、寻找偏好相似的用户

本示例中,我们通过皮尔逊相关度评价对用户进行分组,并推荐商品。

皮尔逊相关系数的结果是一个在-1与1之间的系数(该系数用来说明两个用户间联系的强弱程度:0.8-1.0 极强相关,0.6-0.8 强相关,0.4-0.6 中等程度相关,0.2-0.4 弱相关,0.0-0.2 极弱相关或无相关)。

于是我们获得了用户间的相似度数据。可以看到用户 A&B,C&D,C&E 和 D&E 之间相似度较高。

下一步,我们可以依照用户间的相似度对用户进行商品推荐。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

2、为相似的用户提供推荐物品

本示例中,我们在为相似的用户提供推荐物品时,采用加权排序推荐。

当我们需要对用户 C 推荐商品时,首先我们检查之前用户间的相似度列表,发现用户 C 和用户 D 和 E 的相似度较高。

我们提取了用户 D 和用户 E 评价过的另外 6 件商品(商品 A —— 商品 F)。并对不同商品的评分进行相似度加权。按加权后的结果对 6 件商品进行排序,然后推荐给用户 C。这样,用户 C 就获得了与他偏好相似的用户 D 和 E 评价的商品。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

基于物品的协同过滤推荐

步骤:

1、计算物品之间的相似度。

2、根据物品的相似度和用户的历史行为给用户生成推荐列表。

缺点:

1、ItemCF 需要维护一个物品相似度矩阵,随着物品数目增多,维护物品相似度矩阵的代价越大。

实用场景 —— 图书、电子商务和电影网站:

1、在这些网站中,用户的兴趣是比较固定和持久的。这些系统中的用户大都不太需要流行度来辅助他们判断一个物品的好坏,而是可以通过自己熟悉领域的知识自己判断物品的质量。

2、这些网站的物品更新速度不会特别快,一天一次更新物品相似度矩阵对它们来说不会造成太大的损失,是可以接受的。

举例:

基于物品的协同过滤推荐简单的说,如果用户 A 同时购买了商品 x 和商品 y,那么说明商品 x 和商品 y 的相关度较高。当用户 B 也购买了商品 x 时,可以推断他也有购买商品 y 的需求。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

本示例中,我们将表格中的用户和商品的位置进行了互换,5 个用户分别对 5 件商品进行了评分。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

1、寻找相似的物品

本示例中,我们通过皮尔逊相关度评价对商品进行分组,并推荐商品。

皮尔逊相关系数的结果是一个在-1与1之间的系数(该系数用来说明两个用户间联系的强弱程度:0.8-1.0 极强相关,0.6-0.8 强相关,0.4-0.6 中等程度相关,0.2-0.4 弱相关,0.0-0.2 极弱相关或无相关)。

于是我们获得了物品间的相似度数据。可以看到商品 3&4,商品 3&5 和商品 4&5 之间相似度较高。

下一步,我们可以依照商品间的相似度对用户进行商品推荐。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

2、为用户提供基于相似物品的推荐

本示例中,我们在为用户提供推荐相似的物品时,采用加权排序推荐。

当我们需要对用户 C 基于商品 3 推荐商品时,首先我们检查之前商品间的相似度列表,发现用户 C 已经购买过的商品 4、5 与新商品 A、B、C 之间的相似度较高。

我们将用户 C 对商品 4、5 的评分作为权重。对商品 A、B、C 进行加权排序。用户 C 评分较高并且与之相似度较高的商品被优先推荐。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

基于模型的协同过滤推荐

基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。

协同过滤推荐的优缺点

优点:

1、模型通用性强:模型不需要太多对应数据领域的专业知识。
2、简单易用:工程实现简单且效果不错。

缺点:

1、用户的冷启动:当没有新用户任何数据的时候,无法较好的为新用户推荐物品。
2、物品的冷启动:当新物品没有用户行为数据是,无法通过协同过滤的方式进行推荐。
3、没有考虑到情景的差异:比如根据用户所在的场景进行推荐。
4、无法得到一些小众的独特喜好:这块是基于内容的推荐比较擅长的。

基于内容推荐

基于内容推荐的原理

基于内容推荐的工作原理是,评估用户还没看到的物品与当前用户过去喜欢的物品的相似程度。

基于内容推荐的过程

基于内容推荐的过程一般包括以下三步:

1、给出物品表示:为每个物品抽取出一些特征来表示此物品;
2、学习用户偏好:利用一个用户过去喜欢(及不喜欢)的物品的特征数据,来学习出此用户偏好;
3、生成推荐列表:根据候选物品表示和用户偏好,为该用户生成其最可能感兴趣的 n 个物品。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

举例说明(个性化阅读):

第一步,对于个性化阅读来说一个 item 就是一篇文章,我们首先要从文章内容中抽取出代表它们的属性。常用的方法就是利用出现在一篇文章中的词来代表这篇文章,而每个词对应的权重往往使用信息检索中的 tf-idf 来计算。利用这种方法,一篇抽象的文章就可以使用具体的一个向量来表示了。
第二步就是根据用户过去喜欢什么文章来产生刻画此用户喜好的 profile 了,最简单的方法可以把用户所有喜欢的文章对应的向量的平均值作为此用户的 profile。
第三步,在获得了一个用户的 profile 后,CB 就可以利用所有 item 与此用户 profile 的相关度对他进行推荐文章了。一个常用的相关度计算方法是 cosine。最终把候选 item 里与此用户最相关(cosine值最大)的 N 个 item 作为推荐返回给此用户。

第一步:给出物品表示 - 基于向量空间模型的方法

文本表示模型有基于布尔模型、基于向量空间模型、基于主题模型、基于神经网络的方法等。下面介绍一下基于向量空间模型的方法。

基于向量空间模型的方法是将文本表示成实数值分量所构成的向量,一般而言,每个分量对应一个词项,相当于将文本表示成空间中的一个点。向量不仅可以用来训练分类器,而且计算向量之间的相似度可以度量文本之间的相似度。

最常用的是 TF-IDF 计算方式,即向量的维度对应词表的大小,对应维度使用 TF-IDF 计算。

TF(term-frequence)-IDF(inverse documents frequence),词频-反文档频率。文本文档可以通过 TF-IDF 转换成多维欧几里得空间中的向量,空间的维度对应文档中出现的关键词。给定文档在每维(即每个词)的坐标由两个子量的乘积得出:词频和反文档频率。

TF,词频。描述某个词在一篇文档中出现的频繁程度。考虑到文档长度,为了阻止更长的文档得到更高的相关度权值,必须进行文档长度的某种归一化。其中一种简单方法是将词出现的实际次数比上文档中其他关键词出现的最多次数,即 TF(i,j) = freq(i,j)/maxOthers(i,j),其中 TF(i,j) 为文档 j 中关键词 i 的归一化词频值,freq(i,j) 为 i 在 j 中出现的绝对频率,maxOthers(i,j) 为 j 中其他关键词出现的最多次数。

IDF,反文档频率。组合了词频后的第二个衡量值,旨在降低所有文档中几乎都会出现的关键词的权重。其思想是,那些常见的词语对区分文档没有用,应该给那些仅出现在某些文档中的词更高的权值。IDF的计算方式为 IDF(i) = log(N/n(i)),其中 IDF(i) 为关键词 i 的反文档频率,N 为所有可推荐文档的数量,n(i) 为 N 中关键词 i 出现过文档的数量。

文档 j 中关键词 i 的组合 TF-IDF 权值可以计算为这两个子量的乘积,即 TF-IDF(i,j) = TF(i,j) * IDF(i)。

向量空间模型的优点是简单明了,向量维度意义明确,效果不错。但也存在明显的缺点,其一是维度随着词表增大而增大,且向量高度稀疏;其二是无法处理“一义多词”和“一词多义”问题。

针对以上问题,有人提出很多改进方法,如删除停用词并还原词干、通过特征选择选择可用词子集、通过矩阵分解对高维稀疏矩阵降维等。

第二步:学习用户偏好 - 基于最近邻模型的方法

假设某用户已经对一些物品给出了他的喜好判断。那么这一步要做的就是通过该用户过去的这些喜好判断为他产生一个模型。之后我们就可以根据此模型来判断该用户是否会喜欢一个新的物品。所以,这类问题可以看作是一个典型的有监督分类问题,理论上机器学习里的分类算法都可以照搬进这里。下面介绍一下基于最近邻模型的方法。

在基于最近邻模型的方法中,对于一个新的物品 item,最近邻方法首先找用户 u 已经评判过并与此新物品 item 最相似的 k 个物品,然后依据用户 u 对这 k 个物品的喜好程度来判断其对此新物品 item 的喜好程度。对于这个方法,比较关键的可能就是如何通过物品的属性向量计算物品之间的两两相似度。如果使用向量空间模型来表示物品的话,相似度计算可以使用余弦相似度。

基于最近邻模型的方法的优点是,易于实现,快速适应变化,相对少的数据效果也不错;缺点是,预测精度低。

第三步:生成推荐列表

如果上一步学习用户偏好中使用的是分类模型(如朴素贝叶斯算法),那么我们只要把模型预测的用户最可能感兴趣的 n 个物品作为推荐结果返回给用户即可。

而如果上一步学习用户偏好中使用的是直接学习用户偏好的方法(如Rocchio算法),那么我们只要把与用户偏好最相关的 n 个物品作为推荐结果返回给用户即可,其中的用户偏好与物品表示的相关性可以使用相似度度量(如余弦相似度)获得。

基于内容推荐的优缺点

优点:

1、用户之间的独立性:既然每个用户的用户偏好都是依据他本身对物品的喜好获得的,自然就与他人的行为无关。而协同过滤推荐刚好相反,协同过滤推荐需要利用很多其他人的数据。基于内容推荐的这种用户独立性带来的一个显著好处是别人不管对物品如何作弊(比如利用多个账号把某个产品的排名刷上去)都不会影响到自己。

2、好的可解释性:如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这些属性跟你的品味很匹配等等。

3、新的物品可以立刻得到推荐:只要一个新的物品加进物品库,它就马上可以被推荐,被推荐的机会和老的物品是一致的。而协同过滤推荐对于新的物品就很无奈,只有当此新的物品被某些用户喜欢过(或打过分),它才可能被推荐给其他用户。所以,如果一个纯协同过滤推荐的推荐系统,新加进来的物品就永远不会被推荐。

缺点:

1、物品的特征抽取一般很难:如果系统中的物品是文档,那么我们现在可以比较容易地使用信息检索里的方法来“比较精确地”抽取出物品的特征。但很多情况下我们很难从物品中抽取出准确刻画物品的特征,比如电影推荐中物品是电影,社会化网络推荐中物品是人,这些物品属性都不好抽。其实,几乎在所有实际情况中我们抽取的物品特征都仅能代表物品的一些方面,不可能代表物品的所有方面。这样带来的一个问题就是可能从两个物品抽取出来的特征完全相同,这种情况下基于内容的方法就完全无法区分这两个物品了。

2、无法挖掘出用户的潜在兴趣:既然基于内容推荐只依赖于用户过去对某些物品的喜好,它产生的推荐也都会和用户过去喜欢的物品相似。如果一个人以前只看与推荐有关的文章,那基于内容推荐只会给他推荐更多与推荐相关的文章,它不会知道用户可能还喜欢数码。

3、无法为新用户产生推荐:新用户没有喜好历史,自然无法获得他的用户偏好,所以也就无法为他产生推荐了。当然,这个问题协同过滤推荐也有。

基于内容推荐的现状

基于内容推荐应该算是第一代的个性化应用中最流行的推荐算法了。但由于它本身具有某些很难解决的缺点(如上面介绍的第1点),再加上在大多数情况下其精度都不是最好的,目前大部分的推荐系统都是以其他算法为主(如协同过滤推荐),而辅以基于内容推荐以解决主算法在某些情况下的不精确性(如解决新物品问题)。但基于内容推荐的作用是不可否认的,只要具体应用中有可用的属性,那么基本都能在系统里看到基于内容推荐的影子。组合基于内容推荐和其他推荐算法的方法很多,最常用的可能是用基于内容推荐来过滤其他算法的候选集,把一些不太合适的候选(比如不要给小孩推荐偏成人的书籍)去掉。

基于知识推荐

基于知识推荐的原理

协同过滤系统将用户评分作为知识源,向用户推荐物品。因此这个系统不需要输入并维护附加的信息。

基于内容系统的主要知识源包括类别和体裁信息,还有自动从物品的描述中抽取出的关键词。因此与协同过滤系统系统类似,这个系统可以以相对较小的代价获取和维护这些知识。

二者各有优势,但在很多情况下并非最好选择。例如用户不会频繁购买房屋,这时纯粹的协同过滤系统会由于评分数据很少而效果不好;再如用户对计算机的偏好会随着生活方式或经济状况的改变而改变,这时5年前对计算机的评分对基于内容推荐来说就不太合适了;又如用户在购买汽车时希望能明确定义他们的需求,而这些需求的形式化处理并不是纯粹协同过滤和基于内容推荐的系统所擅长解决的。

基于知识的推荐系统可以帮我们解决上面提到的问题。推荐结果依赖用户需求与产品之间相似度的形式,或者是根据明确的推荐规则。Burke(2000)及 Felfernig and Burke(2008)将基于知识的推荐系统定义为依赖协同过滤和基于内容方法没有用到的信息源的推荐系统。

基于知识推荐的分类

基于知识的推荐系统的两种基本类型是:基于约束的推荐和基于实例的推荐。

这两种方法在推荐过程上比较相似:用户必须指定需求,然后系统设法给出解决方案。如果找不到解决方案,用户必须修改需求。此外,系统还需给出推荐物品的解释。

这两种方法的不同之处在于:如何使用所提供的知识。基于实例的推荐系统着重于根据不同的相似度衡量方法检索出相似的物品,而基于约束的推荐系统则依赖明确定义的推荐规则集合。

知识表示方法和推理

一般来说,基于知识的推荐系统依赖物品特性的详细知识,用户的需求可能会表示成物品特性的需求值或阈值范围。

基于约束的推荐:一般可以表示为由约束求解器解决的约束满足问题,或者是通过数据库引擎执行并解决的合取查询形式。

基于实例的推荐:主要利用相似度衡量标准从目录中检索物品。

基于约束的推荐系统的交互

基于知识的会话式推荐系统的一般交互过程如下:

1、用户指定自己的最初偏好;
2、当收集了足够有关用户的需求和偏好的信息,会提供给用户一组匹配的产品。用户可以选择要求系统解释为什么会推荐某个产品;
3、用户可能会修改自己的需求。

尽管这种通用的用户交互方法一开始应用时非常简单,但在实际应用中必须要有一些更加精密的交互模式来支持推荐过程中的终端用户。如果目录中没有一个物品能满足用户的所有需求,会话式推荐系统需要能够智能地帮助终端用户解决问题。

下面给出了一些能够帮助用户与基于约束推荐应用交互所用到的不同技术:

1、默认设置:帮助用户说明需求的重要方法。
2、处理不满意的需求和空结果集:可以通过逐渐、自动的放宽推荐问题的限制,直到找到对应的解决方案。
3、提出对未满足需求的修改建议:对已有的需求集做出适当的调整。
4、对基于物品/效用推荐结果的排序:由于首位效应,用户会更关注并选择列表开头的物品,根据物品对用户的效用进行排序会显著提高推荐应用的信任度和用户的购买意愿。在基于知识的会话式推荐系统中,物品排序根据的是多属性效用理论,依据每个物品对用户的效用来评价。

基于实例的推荐系统的交互

与基于约束的推荐系统类似,早期的基于实例的推荐系统采用的也是纯粹基于查询的方法。用户需要指定(经常是反复指定)他们的需求,直到发现目标物品。这种反复修改十分乏味,而且需要专业的领域知识才能弄懂物品之间的关系属性。这种缺陷让人们提出了基于浏览的方法来检索物品,评价就是一种非常有效的导航方式。

评价的基本思想是:用户以当前待审核物品(录入物品或推荐物品)未满足的目标来指明他们的修改要求。举个例子,如果当前展示的数码相机价格太高,用户就会给出希望更便宜的评价;如果用户想要更高分辨率的数目相机,就会选择对应的更高像素的评价。

基于实例的推荐系统的最新进展是有效整合了基于查询和基于浏览的物品检索。一方面,评价有助于在物品集合内有效地引导用户;另一方面,基于相似度的实例检索有助于识别最相似的物品。基于评价的推荐系统允许用户很方便地表达自己的偏好,而不用被强制指明物品属性的具体值。

混合推荐

混合推荐的原理

前面讨论了三种主流的推荐方法,各有利弊,为扬长避短,在实际中常常采用混合推荐。下图把推荐系统看成一个黑盒,它能够将输入数据转换成物品的有序列表再输出。输入数据类型可能包含用户记录和上下文参数、群体数据、产品特征以及知识模型。混合推荐的目标是构建一种混合系统,即能结合不同算法和模型的优点,又能克服其中的缺陷。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

推荐理论框架

重点讨论三种基本的推荐理论框架:协同过滤、基于内容和基于知识。

协同过滤:假设人以类聚,大家有着相似的行为那么需求和偏好也差不多。需要的输入数据包括用户记录和上下文参数、群体数据。

基于内容:遵循以不变应万变,根据用户过去喜欢的物品推荐相似的物品。需要的输入数据包括用户记录和上下文参数、产品特征。

基于知识:认为会有额外的信息源,即显式的个性化知识。需要的输入数据包括用户记录和上下文参数、产品特征、知识模型。

因此,选择哪种推荐理论框架决定了要输入数据的类型。

系统的混合设计

Burke 的分类方法(2002b)区分出了七种不同的混合策略。从更综合的角度来看,这七种策略可以概括成三种基本设计思路:整体式、并行式和流水线式。并行式和流水线式都具有两个以上的推荐单元,它们的推荐结果被组合起来。整体式混合设计与之不同,它只包含一个推荐单元,通过预处理和组合多个知识源从而将多种方法整合在一起。

整体式:是指将几种推荐策略整合到一个算法中实现的混合设计。根据 Burke(2002b)的分类方法,特征组合和特征补充都可以纳入这个类别。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

并行式:多个推荐系统独立运行分别产生推荐列表,再利用一种特殊的混合机制将它们的输出结果整合在一起。Burke(2002b)详细说明了交叉、加权、和切换策略。不过多推荐列表的其他一些组合策略可能也适用,比如多数投票机制。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

流水线式:将多个推荐系统按照流水线架构连接起来,前一个推荐系统的输出变成后一个推荐系统的输入部分。当然,后面的推荐单元也可以选择使用部分原始输入数据。Burke(2002b)定义的串联和分级混合设计就是这种流水线架构的实例。

推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

END

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧