本节书摘来自华章出版社《推荐系统:技术、评估及高效算法》一书中的第1章,第1.4节,作者 [ 美]弗朗西斯科·里奇(Francesco Ricci)利奥·罗卡奇(Lior Rokach)布拉哈·夏皮拉(Bracha Shapira)保罗 B.坎特(Paul B.Kantor),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.4 推荐技术
为了实现其核心功能,即识别对用户有用的物品,推荐系统必须预测出有推荐价值的物品。为了实现上述目的,系统必须能预测一些物品的效用性(the utility of some of them),或者至少对物品的效用性作对比,然后根据比较决定该推荐的物品。虽然推荐算法中对预测这一步描述不是很明确,但是我们仍然可以使用统一的模型来描述推荐系统的一般作用。我们的目的是提供给读者一个统一的思路,而不是所有不同推荐方法的总和,这些方法会在本书中逐步讲解。
为了说明推荐系统中的预测这一步,我们考虑一个简单的非个性化的推荐算法,该算法仅推荐最流行的歌曲。这个方法的理论依据就是在不知道用户偏好这样更精确的信息的情况下,有理由认为一首流行度高的歌曲会被很多用户喜欢,所以很可能也被一个普通用户喜欢,因此选择一首流行度高的歌曲的效果肯定会比随机选取的歌曲好。因此,这些流行度高的音乐的有效性对于普通用户理所当然就要高。
文献[3]中提到把核心推荐计算过程当作预测某件物品对某个用户的效用的观点。他们把用户u对物品i的可用度建模为实数值函数R(u,i),在协同过滤中通常指的是用户对物品的评分。然后协同过滤推荐系统的主要任务是通过用户与物品对来预测R的值,即计算R(u,i),这里把R作为估计值,并由此得到真实函数R的值。接下来,在物品集上算出活跃用户u的预测值也就是R(u,i1),…,R(u,iN)之后,系统将会选择最大效用的物品ij1,…,ijK(K≤N)作为推荐结果。K通常是个小的数字,要远小于物品集的基数,或者说是用户效用预测计算所依赖的物品的基数,即推荐系统“过滤”出推荐给用户的物品。
正如前面所说,一些推荐系统在做出推荐之前不是计算全部效用,但是它们可以应用很多启发式的方法猜测一个物品对用户是否有用。典型的案例是专家系统。这些效用预测是通过特殊算法(如下)计算的,并使用了各种各样的关于知识、用户、物品和效用函数本身的知识(见1.3节)[25]。例如,系统假定效用函数是布尔型的,只需要确定一个物品是否对用户有用。因此,对于一个请求推荐的用户,如果系统能够能获得该用户的一些知识(有可能得不到),如物品信息以及曾经接收到推荐结果的其他用户的知识,系统就能使用恰当的算法利用这些信息产生各种效用预测并且据此产生推荐[25]。
我们有必要注意,有些时候物品对用户的效用是依赖于其他可变因素的,我们把这些可变因素统称为“语境”[1]。例如,物品对用户的效用会被用户的领域信息所影响(例如,使用数码相机的高手与新手),或者随着推荐请求发生的时间而变化。或者用户可能对离他当前位置近的物品(如一家饭店)更感兴趣。因此,推荐结果必须与这些特殊的附加信息相适应。但是这样做的结果是,准确地计算出正确的推荐越来越困难。
本书介绍了许多不同种类的推荐系统,这些推荐系统根据使用的信息和用户领域知识的不同而变化,但正如一开始所说那样还是主要随着推荐算法而变化,即如何预测推荐内容的效用。其他的不同是推荐系统最终如何组合推荐结果并如何把它展示给用户用以响应用户的请求。这些方面在导言的后面也会讨论。
为了提供不同类型推荐系统的综述,我们引用[25]提出的分类法,此分类方法是区分推荐系统的一种经典的方法。文献[25]为六种不同的推荐方法做了划分:
基于内容(content-based):系统为用户推荐与他们过去的兴趣类似的物品。物品间的相似性是基于被比较的物品的特征来计算的。例如,如果某个用户对一部喜剧电影有了正面的评价,那么系统就能学会从喜剧类型中(为该用户)推荐其他电影。第3章给出了基于内容的推荐系统的综述,梳理出了在涉及系统设计和实现时广泛性和多样性方面的关系,除此之外,还介绍了基于内容推荐的基本概念、专业术语、高层次的体系结构以及主要的优点和缺点。接下来对在几个应用领域内使用的最先进系统做了概述。报告还包括了在如何表示物品和用户信息方面的经典方法和最新技术的全面描述。最后讨论了推荐系统的趋势和引领下一代推荐系统的未来研究。
协同过滤(collaborative filtering):这种方法是找到与用户有相同品味的用户,然后将相似用户过去喜欢的物品推荐给用户,[93]是对这种方法有最简单和最原始的实现。两用户间的相似偏好是通过计算用户历史评分记录相似度得到的。这也是[94]将协同过滤比作“人对人的相互关系”的原因。协同过滤被认为是推荐系统最流行和最广泛实现的技术。
第4章介绍了基于邻域的协同过滤方法。这种方法关注物品之间的关系或者用户之间的关系。基于物品的方法依据同一用户对与某个物品的相似物品集的评分,对用户对该物品的偏好建模。基于邻域的方法享有相当的知名度,因为它们简单、高效以及具有产生精确计算和个性化推荐的能力。作者将会说明实现基于邻居推荐系统所必需的结论,并且提供了得到这些结论所需的信息。
最后,第4章还涉及了数据稀疏和覆盖率有限的问题,而这些问题经常出现在大型电子商务推荐系统中。本章提出了这些问题的一些解决方法。
第5章介绍了构建协同过滤推荐系统的最新进展。作者特别介绍了隐语义模型(LFM),例如,矩阵因子分解(如奇异值分解、SVD)。这些方法把用户集和物品集映射到同一个隐语义空间。这样就可以通过因子同时表示产品和用户,利用隐语义空间解释根据用户反馈自动推断出的评分。作者解释了SVD如何处理这些数据的额外特征,包括隐式反馈和时间信息。还描述了克服基于邻域的技术存在的缺点的技术,为此他们建议使用包含了全局优化技术的更加严格的数学公式。利用这些技术我们就能够放宽邻域大小的限制,同时又能把隐性反馈和动态时序信息增加到模型中。预测结果的准确性与矩阵因子分解模型的准确性很接近,同时又提供了一些实用的优势。
基于人口统计学的(demographic):这种类型的推荐系统推荐物品时是基于人口统计信息的。我们假设不同的人群信息应该产生不同的推荐。许多网站采用基于人口统计学的简单而有效的个性化解决方案。例如,根据用户的语言或者国籍,划分到特定的网站。或者根据用户的年龄定制推荐。虽然这种方法在营销的文献中相当流行,但是推荐系统方面对此一直很少研究[59]。
基于知识(knowledge-based):基于知识的系统根据特定的领域知识推荐物品,这些知识是关于如何确定物品的哪些特征能够满足用户需要和偏好,以及最终如何确定物品对用户有用。著名的基于知识的推荐系统是基于案例的[22,87]。在这些系统中,相似函数用来估算用户需求(问题描述)与推荐(解决问题)的匹配度。这里的相似性得分,可以理解为用户推荐的可用性。
基于约束的系统是另一种基于知识的推荐系统(第6章)。从使用的知识(knowledge)方面来说,这两个系统是相似的:收集用户需求;当找不到解决方法的时候系统自动提供不合理需求的修改方案;并且能对推荐做出解释。这两者主要的不同在于解决方案的计算方法。基于案例的推荐是基于相似的方法,然而,基于约束的推荐系统主要是利用预定义的知识库,这些库包括了如何把消费者需求和物品特征相关联的明确规则。
在刚开始部署的时候,基于知识的系统往往比其他方法工作得更好。但是如果它们没有配备自动学习组件,那么其他利用用户日志或人机交互(如在协同过滤中的交互)信息这样浅显方法的系统就可能超越它。
基于社区(community-based):这种推荐方法依赖用户朋友的偏好。这种技术有个业界流行的表述“告诉我你的朋友是谁,我将知道你是谁”[8,14]。有证据表明,人们往往都会更依赖朋友的建议而不是陌生人的建议[103]。这个现象的出现,加上日益普及的社交网络,于是基于社区的推荐系统就应运而生,并且得到人们越来越多的关注。这种系统通常叫作社会化推荐系统[34]。这种推荐系统获取用户的社会关系和用户朋友的偏好等信息并以此进行建模。推荐结果基于用户朋友提供的评分。实际上,这类推荐系统是随着社交网络产生的,可以简单而又全面地采集与用户社交关系相关的数据。
在这个方面的研究还处于起始阶段,并且关于系统性能的定论还很混乱。例如,[34,64]对社交网络推荐系统做了全面的报告。报告显示,一般情况下,这类系统的准确性没有传统的协同过滤方法高,除非是用户对一个特殊物品的评价变化特别大(即有争议的物品)或者冷启动等特殊的情况。在这种情况下,用户不能提供足够多的评分去计算与其他用户的相似度。其他研究人员表明,在某些情况下,利用社交网络的数据产生的推荐结果比使用用户资料相似度数据产生的推荐结果更加准确[37],并且把社交网络数据增加到传统的协同过滤算法中能够提高推荐结果的准确性[36]。第20章概述了该领域的研究成果,并对当前结论进行了分析。
混合推荐系统(hybrid recommender system):这类推荐系统综合了上面提到的技术。混合推荐就是综合A和B方法,利用A的优势弥补B的不足。例如,协同过滤方法遭遇的新物品冷启动问题,也就是不能推荐尚未被评分的物品。而基于内容的方法没有这个限制,因为新物品的预测是基于物品描述(特征),而这些特征都是容易获得的。给出两个(或多个)基本的推荐技术,采用一些方法将这些技术综合起来产生一个混合的系统(文献[25]有详细描述)。
我们说过,当用户需要推荐的时候,基于上下文的方法能使系统推荐更加个性化。例如,考虑时间上下文这个因素时,冬天和夏天的假期推荐应该有很大的区别。或者如饭店推荐系统,工作日和同事一起吃饭的推荐应该和周六晚上与朋友吃饭的推荐有很大区别。
第7章介绍了上下文的一般概念,还介绍了推荐系统是如何对它建模的。此外,作者还提供了一个案例用于研究如何使几种上下文敏感的推荐技术整合为一个单一算法的可能性。
在这里讨论了把上下文信息整合到推荐过程的三个不同的算法范式:化简(预过滤)、上下文的后过滤以及上下文建模。在基于化简(预过滤)方法中,仅当信息与当前使用的上下文相匹配时(如在同一上下文的物品评分)才能用于计算推荐结果。在上下文后处理方法中,推荐算法会忽略上下文信息。该方法的推荐结果被会过滤或调整,以便只包含与目标上下文相关的推荐结果。上下文建模方法是三种方法中最复杂的方法。在该方法中,上下文信息在预测模型中被显式地使用。