你的位置:久久这里只有精品视频6国产官方网 > 精品福利 > 推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐
推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐
发布日期:2021-10-25 07:17    点击次数:149

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

【/s2/】协同过滤推荐【/s2/】【/S2/】】协同过滤推荐的原理【/S2/】协同过滤推荐的主要思想是利用现有用户组过去的行为来预测当前用户最有可能喜欢哪些项目。

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

输入:“用户-项目”评分矩阵。

输出:一个是用户喜欢或不喜欢某个项目的程度的预测值;另一个是n个推荐项目的列表。

协同过滤推荐的分类

协同推荐大致可以分为基于邻域的推荐和基于模型的推荐。前者将所有数据存储在内存库中。后者(离线)进行数据降维,抽象特征,并在运行时直接使用特征。

基于邻域的推荐:

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

基于模型的推荐:

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

步骤:

1.找到一组与目标用户兴趣相似的用户。

2.在此集合中查找用户喜欢但目标用户没有听说过的项目,并将其推荐给目标用户。

缺点:

1.UserCF需要维护一个用户兴趣相似度矩阵。随着用户数量的增加,维护用户兴趣相似度矩阵的成本也随之增加。计算用户兴趣相似度矩阵的时间复杂度和空之间复杂度的增加与用户数量的增加近似成平方。

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

3.基于用户的协同过滤很难解释推荐结果。

实用场景-新闻推荐:

1.个性化新闻推荐更强调捕捉新闻热点,人气和时效性是个性化新闻推荐的关键点,而个性化的重要性略低于这两点。

2.新闻更新很快,项目关联表需要更新很快。虽然UserCF也需要为新用户更新相似度表,但是在新闻网站中,条目的更新速度要比新用户的加入速度快得多,对于新用户,它可以向他推荐最热门的新闻。

示例:

基于用户的协同过滤推荐:简单来说,如果A、B两个用户购买了X、Y、Z三本书,并且给出了5星好评。那么a和b属于同一类用户。a能看的书w也推荐给用户b。

在这个例子中,5个用户分别给5个项目打分。

1.查找具有相似偏好的用户。

在这个例子中,我们使用皮尔逊相关评估对用户进行分组并推荐产品。

Pearson相关系数是一个介于-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、寻找类似的物品。

在这个例子中,我们通过皮尔逊相关评估对商品进行分组,并推荐它们。

Pearson相关系数是一个介于-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.为用户提供基于相似项目的推荐。

在这个例子中,当我们向用户推荐类似的项目时,我们使用加权排序来推荐它们。

当我们需要基于商品3向用户C推荐商品时,我们首先查看之前商品之间的相似度列表,发现用户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(术语-频率)-IDF(逆文档频率),词频-逆文档频率。一个文档可以通过TF-IDF转换成多维欧氏空中的向量,并且空中的维度对应文档中出现的关键词。给定文档在每个维度(即每个单词)中的坐标由两个子量的乘积获得:单词频率和反文档频率。

TF,词频。描述单词在文档中出现的频率。考虑到文档长度,为了防止较长的文档获得较高的相关权重,需要对文档长度进行一些归一化。一种简单的方法是将单词的实际出现次数与文档中其他关键词的最大出现次数进行比较,即TF(i,j) = freq(i,j)/maxOthers(i,j),其中TF (I,j)是文档j中关键词I的归一化词频值,freq(i,j)是I在j,maxOthers中出现的绝对频率。

反文件频率。结合词频后的第二个措施旨在减少几乎会出现在所有文档中的关键词的权重。其思想是,常用词对于区分文档是无用的,那些只出现在一些文档中的词应该被赋予更高的权重。IDF的公式是IDF(i) = log(N/n(i)),其中IDF(i)是关键字I的反文档频率,N是所有推荐文档的数量,n(i)是关键字I已经出现的文档数量。

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

向量空之间的模型的优点是简单明了,向量维数的意义明确,效果好。然而,也有明显的缺点。首先,维度随着词库的增加而增加,向量高度稀疏。其次,它无法处理“一词多义”和“一词多义”的问题。

针对上述问题,提出了许多改进方法,如删除停止词和恢复词干、通过特征选择选择可用词子集、通过矩阵分解降低高维稀疏矩阵的维数等。

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

假设用户已经给出了他对某些项目的偏好判断。那么这一步就是根据用户过去的喜好为他生成一个模型。然后我们可以根据这个模型来判断用户是否喜欢一个新的项目。因此,这类问题可以看作是典型的监督分类问题。理论上,机器学习中的所有分类算法都可以复制到这里。下面介绍基于最近邻模型的方法。

在基于最近邻模型的方法中,对于一个新项目,最近邻方法首先找到用户u判断过的与新项目最相似的k个项目,然后根据用户u对这k个项目的偏好程度来判断用户u对这个新项目的偏好程度。对于这种方法,关键可能是如何通过项目的属性向量来计算项目之间的成对相似度。如果用向量之间的模型空来表示对象,可以用余弦相似度来进行相似度计算。

基于最近邻模型的方法具有易于实现、适应变化快、数据量相对较少等优点。缺点是预测精度低。

第三步:生成推荐列表

如果上一步在学习用户偏好时使用了分类模型(如朴素贝叶斯算法),那么我们只需要将模型预测的用户最有可能感兴趣的N个项目作为推荐结果返回给用户。

而如果上一步采用直接学习用户偏好的方法(如Rocchio算法),那么我们只需要将与用户偏好最相关的n个项目作为推荐结果返回给用户,利用相似度度量(如余弦相似度)就可以得到用户偏好与项目表示的相关性。

基于内容推荐的优缺点

优点:

1.用户之间的独立性:由于每个用户的用户偏好是根据自己对商品的偏好获得的,因此与他人的行为无关。协同过滤推荐正好相反。协同过滤推荐需要利用很多其他人的数据。这种基于内容推荐的用户独立性的一个显著优势是,无论别人如何在物品上作弊(比如使用多个账号刷一个产品的排名),都不会对自己造成影响。

2.好的可解释性:如果你需要向用户解释为什么推荐这些产品给他,你只需要告诉他这些产品有一定的属性,符合你的口味等等。

3.可以立即推荐新物品:只要在物品库中添加了新物品,就可以立即推荐,被推荐的几率与旧物品一致。但是,协同过滤推荐对于新项目是无奈的。只有当这个新项目被一些用户喜欢(或过分渲染)时,它才能被推荐给其他用户。因此,如果使用纯协同过滤推荐系统,新添加的项目将永远不会被推荐。

缺点:

1.项目的特征提取一般比较困难:如果系统中的项目是文档,我们现在可以使用信息检索中的方法来“更准确地”提取项目的特征。然而,在许多情况下,我们很难提取出准确描述项目的特征。比如在电影推荐中,项目是电影,在社交网络推荐中,项目是人。事实上,在几乎所有的实际情况中,我们提取的特征只能代表一个项目的某些方面,而不能代表一个项目的所有方面。这带来了从两个项目中提取的特征可能完全相同的问题,在这种情况下,基于内容的方法根本无法区分这两个项目。

2.无法挖掘用户的潜在兴趣:由于基于内容的推荐仅取决于用户过去对某些项目的偏好,因此它产生的推荐将与用户过去喜欢的项目相似。如果一个人之前只看推荐相关的文章,基于内容的推荐只会给他推荐更多的推荐相关的文章,他不会知道用户可能还喜欢数字。

3.无法为新用户生成推荐:新用户没有偏好历史,自然无法获取他的用户偏好,因此无法为他生成推荐。当然,对于协同过滤也推荐这个问题。

基于内容推荐的现状

基于内容的推荐应该被视为第一代个性化应用中最流行的推荐算法。但是由于它存在一些难以解决的缺点(比如上面介绍的第一点),而且在大多数情况下它的准确率并不是最好的,所以目前的推荐系统大多是以其他算法为主(比如协同过滤推荐),辅以基于内容的推荐来解决一些情况下主算法的不准确性(比如解决新项目的问题)。然而,基于内容的推荐的作用不可否认。只要在具体的应用中有可用的属性,基于内容的推荐的影子基本上在系统中就能看到。将基于内容的推荐与其他推荐算法相结合的方法有很多,最常用的一种是通过基于内容的推荐来过滤其他算法的候选集,去除一些不合适的候选(比如不向孩子推荐成人书籍)。

基于知识推荐基于知识推荐的原理

协同过滤系统以用户的分数作为知识来源,向用户推荐项目。因此,该系统不需要输入和维护附加信息。

基于内容的系统的主要知识来源包括类别和流派信息,以及从项目描述中自动提取的关键词。因此,类似于协同过滤系统,该系统可以以相对较低的成本获取和维护这些知识。

两者各有优势,但在很多情况下并不是最佳选择。比如用户不会频繁买房,然后纯协同过滤系统会因为评分数据不足而失效;再比如,用户对电脑的偏好会随着生活方式或经济状况的改变而改变,所以五年前的电脑评分不适合基于内容的推荐。再比如,买车时,用户希望明确自己的需求,但这些需求的形式化处理并不是纯协同过滤和基于内容的推荐系统所擅长的。

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

基于知识推荐的分类

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

这两种方法在推荐过程中是相似的:用户必须指定需求,然后系统尝试给出解决方案。如果没有找到解决方案,用户必须修改需求。此外,系统应给出推荐项目的说明。

这两种方法的区别在于如何使用提供的知识。基于案例的推荐系统侧重于根据不同的相似性度量方法检索相似的项目,而基于约束的推荐系统依赖于一组明确定义的推荐规则。

知识表示方法和推理

一般来说,基于知识的推荐系统依赖于项目特征的详细知识,用户的需求可以表示为项目特征的需求值或阈值范围。

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

基于示例的推荐:主要使用相似性度量从目录中检索项目。

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

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

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

虽然这种通用的用户交互方式在开始时非常简单,但在实际应用中,一定会有一些更复杂的交互模式来支持推荐过程中的终端用户。如果目录中没有一个项目能够满足用户的所有需求,那么会话式推荐系统需要能够智能地帮助最终用户解决问题。

以下是一些不同的技术,可以帮助用户与基于约束的推荐应用程序进行交互:

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

与基于约束的推荐系统类似,早期的基于实例的推荐系统采用了纯粹基于查询的方法。用户需要指定(经常重复)他们的需求,直到他们找到目标项目。这种重复修改非常枯燥,需要专业的领域知识才能理解项目之间的关系。这一缺陷使得人们提出了一种基于浏览的检索项目的方法,而评价是一种非常有效的导航方法。

评估的基本思想是用户通过当前待审核项(输入项或推荐项)未满足的目标来表明自己的修改需求。例如,如果当前显示的数码相机的价格太高,用户会给出一个想要更便宜的评价。如果用户想要更高分辨率数量的相机,他将选择相应的更高像素评估。

基于案例的推荐系统的最新发展是基于查询和基于浏览的项目检索的有效集成。一方面,评价有助于在文章收集中有效引导用户;另一方面,基于相似度的案例检索有助于识别最相似的项目。基于评价的推荐系统允许用户方便地表达他们的偏好,而不必强制指定项目属性的具体值。

混合推荐混合推荐的原理

讨论了三种主流的推荐方法,各有优缺点。为了扬长避短,实践中经常采用混合推荐。下图把推荐系统看成一个黑盒,可以把输入的数据转换成有序的项目列表,然后输出。输入数据类型可以包括用户记录和上下文参数、人口数据、产品特征和知识模型。混合推荐的目标是构建一个混合系统,能够结合不同算法和模型的优点,克服缺点。

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

协同过滤:人若物以类聚,行为相似,那么需求和偏好也是相似的。所需的输入数据包括用户记录、上下文参数和组数据。

基于内容:遵循不变适应一切变化,根据用户过去喜欢的项目推荐相似的项目。所需的输入数据包括用户记录、上下文参数和产品特性。

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

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

系统的混合设计

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

整体性:指将多个推荐策略集成到一个算法中的混合设计。根据Burke(2002 b)的分类方法,特征组合和特征补充都可以归入这一类。

并行:多个推荐系统独立运行生成推荐列表,然后使用一种特殊的混合机制来集成它们的输出结果。Burke(2002b)详细介绍了交叉、加权和切换策略。然而,多个推荐列表的一些其他组合策略也可能适用,例如多数投票机制。

流水线:按照流水线架构连接多个推荐系统,前者推荐系统的输出成为后者推荐系统的输入部分。当然,以下推荐单位也可以选择使用部分原始输入数据。Burke(2002b)定义的串行和分层混合设计就是这种流水线架构的一个例子。

结束

欢迎评论指正!