本文选自电子工业出版社博文视点新书《大数据智能:数据驱动的自然语言处理技术》。本书作者:清华大学刘知远、薄言RSVP.ai崔安颀、腾讯张开旭、清华大学韩文弢、中国人民大学赵鑫、厦门大学苏劲松、罗格斯大学张永锋、北京大学严睿、哈尔滨工业大学(深圳)汤步洲、清华大学涂存超、哈尔滨工业大学丁效 。

本书覆盖NLP诸多核心技术与应用场景;每章都为初学者入门提供了详细参考资料;针对初学者,给出追踪前沿学术资料的方法与建议。

如何获得这本书?请在评论区留言,根据留言质量+留言点赞数量,三位用户可获得本书。

活动截止时间为1月10日晚8点

如果没有抽中,也没有关系,文章末尾还有更大的福利哦~~

本节,我们对常见的推荐算法进行归类整理,分析它们的共通之处和不同点,力图使读者对各式各样的个性化推荐算法及其之间的关系有一个整体的认识。

推荐算法的分类

按照不同的分类指标,推荐系统具有很多不同的分类方法,常见的分类方法有依据推荐结果是否因人而异分类、依据推荐方法的不同分类、依据推荐模型构建方式的不同分类等。

依据推荐结果是否因人而异,可以分为大众化推荐和个性化推荐两类。大众化推荐往往与用户本身及其历史信息无关,在同样的外部条件下,不同用户获得的推荐是一样的。大众化推荐的一个典型的例子是查询推荐,它往往只与当前的查询语句有关,很少与该用户直接相关。个性化推荐的特点则是在同样的外部条件下,不同的人可以获得与其兴趣爱好、历史记录等相匹配的推荐。

依据推荐方法的不同,推荐算法大致可以分为如下几种:基于人口统计学的推荐(Demographic-based Recommendation)、基于内容的推荐(Content-based Recommendation)、基于协同过滤的推荐(Collaborative Filtering-based Recommendation)、混合型推荐(Hybrid Recommendation)。其中,基于协同过滤的推荐被研究人员研究得最多也最深入,它又可以分成多个子类别,包括基于用户的推荐(User-based Recommendation)、基于物品的推荐(Item-Based Recommendation)、基于社交网络关系的推荐(Social-based Recommendation)、基于模型的推荐(Model-based Recommendation),等等。其中,基于模型的推荐是指利用系统已有的数据,学习和构建一个模型,进而利用该模型进行推荐,这里的模型可以是SVD、NMF等矩阵分解模型,也可以是利用贝叶斯分类器、决策树、人工神经网络(Neural Networks)等模型转化的分类问题,或者基于聚类技术对数据进行预处理的结果,等等。

依据推荐模型构建方式的不同,目前的推荐算法大致可分为基于用户或物品本身的启发式推荐(Heuristic-based,或称为Memory-based Recommendation)、基于关联规则的推荐(Association Rule Mining for Recommendation)、基于模型的推荐,以及混合型推荐。

典型推荐算法介绍

1.基于人口统计学的推荐

基于人口统计学的推荐(Demographic-based Recommendation)虽然已经很少被单独使用,但是理解这种方法的工作原理对于深入理解推荐系统有很大帮助。基于人口统计学的方法假设“一个用户有可能会喜欢与其相似的用户所喜欢的物品”。它记录了每一个用户的性别、年龄、活跃时间等元数据,当我们需要对一个用户进行个性化推荐时,利用其元数据计算其与其他用户之间的相似度,并选出与其最相似的一个或几个用户,利用这些用户的购买和打分历史记录进行推荐。一种简单且常见的推荐方法就是将这些(最相似的)用户所覆盖的物品作为推荐列表,并以物品在这些用户上的平均得分作为依据进行排序。

基于人口统计学的推荐方法的优点是计算简单,用户的元数据相对比较稳定,相似用户的计算可以在线下完成,便于实现实时响应。但它也有诸多问题,其主要问题之一便是计算可信度较低,因为即便是性别、年龄等元数据属性都相同的用户,也很有可能在物品上有截然不同的偏好,所以这种计算用户相似度的方法往往并不能与物品之间建立真正可靠的联系。因此,基于人口统计学的方法在实际推荐系统中很少作为一个特定的方法单独使用,而常常与其他方法结合,利用用户元数据对推荐结果进行进一步的优化。

2.基于内容的推荐

基于内容的推荐假设“一个用户可能会喜欢和他曾经喜欢过的物品相似的物品”,而这里提到的“相似的物品”通过商品的内容属性确定,例如电影的主要演员、风格、时长,音乐的曲风、歌手,商品的价格、种类,等等。典型的基于内容的方法首先需要构建用户画像,一种较为简单的方法是考虑该用户曾经购买或浏览过的所有物品,并将这些物品的内容信息加权整合,作为对应用户的画像,它描述了一个用户对物品属性的偏好特征。当然,构建用户画像的策略可以很复杂,比如可以考虑时间因素,计算用户在不同时间段内的画像,从而了解该用户在历史数据上表现出的偏好变化,等等。

有了用户画像,就可以开始推荐了,最简单的推荐策略就是计算所有该用户未尝试过的物品与该用户画像之间的相似度,并按照相似度由大到小的顺序生成推荐列表,作为推荐结果。当然,推荐策略也可以很复杂,例如在数据源上,考虑本次用户交互过程中收集到的即时交互数据来决定排序;在模型上使用决策树、人工神经网络等,但这些方法最核心的环节都是利用用户画像和物品属性之间的相似度计算。

其实在很多基于内容的推荐算法中,并不是把用户画像显式地计算出来,而是利用用户打过分的物品,直接计算推荐列表。一种直观的方法就是计算它与该用户尝试过的所有物品之间的相似度,并将这些相似度根据用户的打分进行加权平均。这实际上也是基于内容的方法,只是绕过了计算用户画像的环节。实际上,很多具体的应用表明,绕过用户画像的计算,直接利用物品属性计算相似度往往更灵活,能获得更好的推荐效果,这是因为在计算用户画像的过程中,一些有用的信息被丢掉以至于无法在后面的环节中被利用。

基于内容的推荐方法对于解决新物品的冷启动问题有重要的帮助,这是因为只要系统拥有该物品的属性信息,就可以直接计算它与其他物品之间的关联度,而不受用户评分数据稀疏性的限制。另外,推荐结果也具有较好的可解释性,一种显然的推荐理由是“该物品与用户曾经喜欢过的某物品相似”。然而,基于内容的推荐方法也有一些缺点:首先,系统需要复杂的模块,甚至需要手动预处理物品信息以得到能够代表它们的特征,然后受信息获取技术、处理对象的复杂性高等因素的制约,这样的工作难以达到较好的效果;其次,该方法难以发现用户并不熟悉但有潜在兴趣的物品,因为该方法总是倾向于向用户推荐与其历史数据相似的物品;最后,该方法往往不具备较好的可扩展性,需要针对不同的领域构建几乎完全不同的物品属性,因而针对一个数据集合训练的模型未必适合其他的数据集合。

3.基于协同过滤的推荐

基于协同过滤的推荐一般是指通过收集用户的历史行为和偏好信息,利用群体的智慧(Wisdom of the Crowds)为当前用户个性化地推荐。根据前文所述,基于协同过滤的推荐大致包括基于用户的推荐、基于物品的推荐,以及基于模型的推荐,等等。

基于用户的推荐方法是最早的基于协同过滤的推荐算法(Resnick and Iacovou,1994),其基本假设与基于人口统计学的方法类似,即“用户可能会喜欢和他具有相似爱好的用户所喜欢的物品”,它们的不同之处在于,这里的“相似爱好的用户”不是利用用户的人口统计信息直接计算出来的,而是利用用户的打分历史记录进行计算的。它的基本原理为那些具有相似偏好的用户,他们对物品的打分情况往往具有更强的相似性。

基于用户的推荐方法的核心是最近邻搜索技术。我们把每一个用户看成一个行向量,并计算其他用户行向量与该用户的相似度,这里的相似度计算可以采用多种不同的指标,如Pearson相关性系数、余弦相似度等。拥有了用户之间的两两相似度之后,选择与目标用户最相似的前k个用户的历史购买/浏览行为信息,为目标用户做出个性化的推荐列表。例如在Top-N推荐中,系统统计在前k个用户中出现频率最高且在目标用户的历史记录中未出现的物品,利用这些物品构建推荐列表,并将其作为输出。关联推荐的基本思想则是利用这前k个用户的购买或打分记录进行关联规则挖掘,并利用挖掘出的关联规则结合目标用户的购买记录完成推荐,典型的推荐结果如很多网络购物商城中常见的“购买了某物品的用户还购买了该物品”。

在基于用户的推荐方法中,“个性化”体现在对不同的用户,其最近邻是不同的,从而得到的推荐列表也不尽相同;“协同过滤”则体现在对目标用户进行推荐时使用了其他用户在物品上的历史行为信息,这是与基于人口统计学的推荐方法的不同之处。

基于用户的方法的优点在于在数据集完善、内容丰富的条件下能够获得较高的准确率,而且能够对物品的关联性和用户的偏好进行隐式透明的挖掘。其缺点是随着系统用户数量的增大,计算用户相似度的时间代价显著增长,使得该方法难以胜任用户量变化巨大的系统,从而限制了算法的可扩展性。另外,冷启动用户的问题也是该方法难以处理的重要问题:当新用户加入系统时,由于其打分历史记录很少,难以准确计算该用户的相似用户,这也进一步引出数据稀疏性对系统可扩展性的限制。

鉴于基于用户的协同过滤方法可扩展性差的问题,研究人员进一步提出了基于物品的推荐(Sarwar, et al., 2001),如图8.6所示。在该图所表示的矩阵中,每一行表示一个用户,每一列表示一个物品,矩阵中每一个元素表示相应的用户对相应的物品的打分。基于物品的推荐方法所基于的基本假设与基于内容的方法类似,也就是“用户可能会喜欢与他之前曾经喜欢的物品相似的物品”。例如,喜欢《长尾理论:为什么商业的未来是小众市场》这本书的人,很有可能去看《世界是平的》。与基于内容的推荐方法不同的是,这里的“相似的物品”并非通过物品属性来计算,而是通过网络用户对物品的历史评分记录来计算的。

图8.6  基于物品的推荐

基于物品的推荐方法将矩阵的每一个列向量作为一个物品来计算物品列向量之间的相似度,并基于物品之间的两两相似度进行预测和推荐。一个简单的例子是:当用户购买了某一个物品后,直接向其推荐与该物品相似度最高的前几个物品;复杂一点的情况是,考虑该用户所有的历史打分记录(Sarwar, et al., 2001),并根据一个用户行向量中的0值(即用户未购买的物品),预测用户在该物品上可能的打分,如图8.6所示。例如,我们可以考虑目标用户在历史上所有打过分的物品,并以它们与待预测的物品的相似度为权重对这些历史打分值进行加权平均,作为对待预测的目标物品的预测打分,最终以预测打分的高低为顺序给出推荐列表。总体而言,基于物品的推荐方法是一种启发式方法,对目标的拟合能力是有限的,但是把多个启发式方法结合起来,也可以有很好的拟合能力。

基于物品的推荐方法的优点如下。

(1)计算简单,容易实现实时响应。在常见的系统中,物品被评分的变化要比用户低得多,因此物品相似度的计算一般可以采用离线完成、定期更新的方式,从而减少了线上计算,实现实时响应并提高效率。尤其是在用户数远大于商品数的情况下效果更为显著,例如,用户新添加了几个感兴趣的商品之后,系统就可以立即给出新的推荐。

(2)可解释性较好。用户可能不了解其他人的购物情况,但是对自己的购物历史总是很清楚的。另外,用户总是希望自己有最后的决定权。基于物品的推荐方法很容易让用户理解为什么推荐了某个物品,并且当用户在兴趣列表里添加或删除物品时,可以调整系统的推荐结果,这也是其他方法最难做到的一点。

然而,基于物品的推荐也有缺点:以物品为基础的信息过滤系统较少考虑用户之间的差别,因此精度较基于用户的方法稍微逊色。

除此之外,还有许多其他的问题有待解决,最典型的就是数据稀疏性和冷启动的问题。

基于用户的推荐和基于物品的推荐具有某种对称性,且均为个性化推荐系统最基础的入门级方法,因此我们要对这两种最基本的协同过滤方法进行对比。

在计算复杂性上,基于用户的推荐方法往往在线计算量大,难以实时响应。对于一个用户数量大大超过物品数量,且物品数量相对稳定的应用,一般而言,基于物品的推荐方法从性能和复杂度上都比基于用户的推荐方法更优,这是因为物品相似度的计算不但计算量较小,而且不必频繁更新;而对于诸如新闻、博客或者微内容等物品数量巨大且更新频繁的应用,基于用户的推荐方法往往更具优势,推荐系统的设计者需要根据自己应用的特点选择更合适的算法。

在适用场景上,内容之间的内在联系是非社交型网站中很重要的推荐原则,往往比基于相似用户的推荐原则更有效。以购书网站为例,当用户看一本书的时候,推荐引擎会向用户推荐与其相关的书籍,这个推荐的重要性远远超过了网站首页对该用户的综合推荐。在这种情况下,基于物品的推荐方法成了引导用户浏览的重要手段。同时,基于物品的推荐方法便于为推荐做出解释。以一个非社交型网站为例,如果给某个用户推荐图书被解释为“某个与该用户有相似兴趣的人也购买了被推荐的图书”,则很难让目标用户信服,因为该用户可能根本不认识推荐理由中“有相似兴趣的”用户;但如果解释为“被推荐的图书与用户之前看过的图书相似”,则很容易被用户接受,因为用户往往对自己的历史行为记录非常熟悉且认可。相反,在社交型网站中,基于用户的推荐方法则是更好的选择,因为基于用户的推荐方法加上社交网站中的社会网络信息,可以大大增加用户对推荐解释的信服度。

在一个综合的推荐系统中,一般很少只用某一种推荐策略,考虑到基于用户和基于物品的推荐方法之间的互补性,很多推荐系统将两者结合起来,作为系统的基础推荐算法。

4.基于模型的推荐

基于用户或基于物品的推荐方法共有的缺点是计算规模庞大,难以处理大数据量下的即时结果。以模型为基础的协同过滤技术则致力于改进该问题:先利用历史数据训练得到一个模型,再用此模型进行预测。

以模型为基础的协同过滤技术包括潜在语义分析(Latent Semantic Indexing)、贝叶斯网络(Bayesian Networks)、矩阵分解(Matrix Factorization)、人工神经网络,等等。它们收集用户的打分数据进行分析和学习,并推断出用户行为模型,进而对某个产品进行预测打分。例如,可以将用户属性和物品属性中的各个特征作为输入,以用户打分作为输出拟合回归模型;或者将打分作为类别,将问题转化为一个多分类器问题,等等。这种方式不是基于一些启发规则进行预测计算,而是用统计和机器学习的方法对已有数据进行建模并预测。

5.混合型推荐

混合型推荐系统和算法是推荐系统的另一个研究热点,它是指将多种推荐技术进行混合,相互弥补缺点,以获得更好的推荐效果。最常见的是将协同过滤技术和其他技术相结合以克服冷启动的问题。常见的混合型推荐策略有如下几种(Burke, 2002)。

(1)加权融合(weighted):将多种推荐技术的计算结果加权混合产生推荐,最简单的方式是基于感知器的线性混合。先将协同过滤的推荐结果和基于内容的推荐结果赋予相同的权重值,然后比较用户对物品的评价与系统的预测是否相符,进而不断调整权值。

(2)切换(switch):根据问题背景和实际情况采用不同的推荐技术。例如,系统先使用基于内容的推荐技术,如果它不足以产生高可信度的推荐就转而尝试使用协同过滤技术。因为需要针对各种可能的情况设计转换标准,所以这种方法会增加算法的复杂度和参数化。由于融合了多种推荐算法,并能够根据场景自动选择合适的推荐算法,基于切换的混合型推荐方法能够充分发挥不同推荐算法的优势。

(3)混合(mix):将多种不同的推荐算法推荐出来的结果混合在一起,其难点是如何进行重排序。

(4)特征组合(feature combination):将来自不同推荐数据源的特征组合起来,由另一种推荐技术采用。这种方法一般会将协同过滤的信息作为增加的特征向量,然后在增加的数据集上采用基于内容的推荐技术。特征组合的混合方式使得系统不再仅仅考虑协同过滤的数据源,降低了用户对物品评分数量的敏感度。相反,它允许系统拥有物品的内部相似信息,其对协同过滤系统是不透明的。

(5)级联型(cascade):用后一个推荐方法优化前一个推荐方法。它是一个分阶段的过程,先用一种推荐技术产生一个较为粗略的候选结果,在此基础上使用第二种推荐技术对其做出更精确地推荐。

(6)特征递增(feature augmentation):将前一个推荐方法的输出作为后一个推荐方法的输入,它与级联型的不同之处在于,这种方法的上一级产生的并不是直接的推荐结果,而是为下一级的推荐提供某些特征。一个典型的例子是将聚类分析环节作为关联规则挖掘环节的预处理,从而将聚类所提供的类别特征用于关联规则挖掘。

(7)元层次混合(meta-level hybrid):将不同的推荐模型在模型层面上进行深度融合,而不仅仅是把一个输出结果作为另一个的输入。例如,基于用户的推荐方法和基于物品的推荐方法的一种可能的组合方式为:先计算目标物品的相似物品集,然后删掉所有其他(不相似的)物品,进而在目标物品的相似物品集上采用基于用户的协同过滤算法。这种基于相似物品计算近邻用户的协同推荐方法,能很好地处理用户多兴趣下的个性化推荐问题,尤其是在候选推荐物品的内容属性相差很大时,该方法可以获得较好的性能。

基于矩阵分解的打分预测

1.矩阵上的打分预测问题及其评价

在前面的介绍中我们已经知道,一个典型的推荐系统常常把用户和物品之间的关系形式化为一个稀疏矩阵(如图8.7所示),其中矩阵的每一行对应一个用户,每一列对应一个物品,矩阵中的每一个非零值(图8.7中以“×”标记的元素)代表相应的用户对物品的打分(一般是1~5的星级打分),而每一个零值(图8.7中空白的部分)则代表用户在历史上没有对该物品进行过评分。在这样一个矩阵上的打分预测问题即为根据矩阵中已有的值预测矩阵中缺失的值,也就是尽可能精确地估计一个用户在未买过的物品上可能的打分,从而基于预测打分的高低给出推荐列表。

图8.7  推荐系统的稀疏矩阵示例

为了设计好的打分预测算法,我们先定义合适的评价指标来评价一个算法的预测结果,常用的评价指标为根分均方差(Root Mean Square Error,RMSE)和平均绝对误差(Mean Absolute Error,MAE)。设矩阵以X表示,矩阵中的每一个打分记为rij,所有打分的集合记为S,我们一般取部分打分(如 80%)进行模型的训练和验证,并用其部分(如 20%)进行评价。设

表示算法给出的预测打分,并以表示所有用于测试的打分值集合,那么评价指标RMSE和MAE的计算如下所示:

一个评分预测算法致力于预测矩阵中未知的打分,并使RMSE或MAE评价指标最小。接下来,我们介绍在推荐系统中广泛使用的基于矩阵分解的预测算法及其统一的形式化表示。

2.矩阵分解算法

基于矩阵分解的矩阵补全因其具有较好的预测精度和较高的可扩展性,在实际推荐系统中得到了广泛的应用。目前,研究人员设计了诸多基于矩阵分解的矩阵补全和预测算法,例如SVD、非负矩阵分解(Non-negative Matrix Factorization,NMF)、概率化矩阵分解(Probabilistic Matrix Factorization,PMF)、最大间隔矩阵分解(Maximum Margin Matrix Factorization,MMMF),等等。图8.8所示为使用NMF对原始矩阵的未知值进行预测的结果。

图8.8  基于NMF的矩阵补全示例

大部分已有的矩阵分解算法都可以用一个统一的模型进行概括。为了帮助读者更好地了解矩阵分解算法的本质及不同算法之间深刻的内在联系,我们先介绍矩阵分解算法的一种统一表示形式(Singh and Gordon, 2008)。

是一个稀疏矩阵,并设是对原始矩阵X的低秩分解,那么一个矩阵分解算法可以形式化地概括为如下各个子模块的组合:

预测函数:

可选的权重矩阵,当权重矩阵存在时,它往往是损失函数的一部分。

损失函数,它表示当我们用预测矩阵来近似X时所引入的预测误差。

对分解矩阵的约束条件:

正则化因子:

基于这些子模块,原始矩阵X被近似为。同时,一个矩阵分解算法可以形式化为如下最优化问题:

其中的损失函数D(·,·)对于第二个自变量一般是一个凸函数,且往往可以分解为矩阵中各个元素上的损失之和。例如,对于常见的加权奇异值分解(Weighted Singular Value Decomposition,WSVD)算法而言,其损失函数为:

其中,表示将两个同维度的矩阵对应元素相乘得到一个新的矩阵,则表示矩阵的Frobenius范数,即矩阵中各个元素的平方和。

选取不同的预测函数f、权重矩阵W、损失函数Dw和正则化项R等各部分,就可以获得很多不同的矩阵分解算法,用以解决不同背景下的个性化推荐问题。

3.常用矩阵分解算法

在如上的矩阵分解形式化描述下,我们介绍几种常见的矩阵分解方法,从而帮助读者对矩阵分解在个性化推荐,尤其是在矩阵的打分预测任务上的应用有更深入的了解。

1)SVD

奇异值分解在矩阵计算中具有理论上重要的基础性意义。最原始的SVD方法具有严格的数学定义,设是任意一个矩阵,矩阵中的列向量是矩阵的单位正交特征向量,矩阵中的列向量是矩阵的单位正交特征向量,对角矩阵∑∈中的每一个对角元素是与矩阵U(同时也是与矩阵V)中的每一个列向量对应的特征值的平方根,并以从大到小的顺序排列,则原矩阵X可表示为,其中被称为奇异值矩阵。如果只保留奇异值矩阵中的前k个最大的奇异值,同时只保留UV中的前k个对应的列向量,则新的矩阵为对原矩阵X的一个近似。可以证明,对原矩阵X所有秩为k的近似,采用如上SVD得到的近似结果可以取得最小的平方误差,即

当然,通过这种方式取得的近似矩阵也就具有最小的RMSE值。奇异值分解示意图如图8.9所示。

图8.9  奇异值分解示意图

在实际的推荐系统中,我们所要处理的往往是非常稀疏的矩阵,即矩阵中存在大量的未知打分(以0值表示)。需要指出的是,这些0值并不意味着用户对相应的物品打了0分,仅表示用户没有进行相关的打分,或者没有观测到相应的打分,因此在计算预测精度时,将这些元素上的预测值也考虑在内,并以0作为真实值进行评测是不合理的。

基于这一事实,在实际的推荐系统中使用的SVD算法并不是原始的“精确的”SVD,而是只考虑已观测数据进行模型训练和预测的SVD算法,并采用优化的方法求得近似矩阵以应对大规模的稀疏矩阵。

因此,我们采用低秩近似的方式,用两个秩较低的矩阵的乘积近似一个秩较高的大规模矩阵,并考虑在已观测的点上对矩阵进行优化,得到如下SVD算法:

其中,权重矩阵中与原矩阵的已观测点相对应的元素取值为1,与未观测点相对应的元素取值为0,也就是只考虑原矩阵中已观测点上的预测损失,而正则化项用于最小化模型复杂度,从而减小模型过拟合带来的影响。

2)NMF

在如上的SVD算法中,我们并没有对分解矩阵附加其他限制条件,只是简单地要求其列维度为。在很多实际应用场景中,我们希望矩阵分解得到的分解向量满足一定的条件,最常见的就是要求分解矩阵的各个列向量由非负值组成(Lee and Seung, 2001),这是因为在很多场景中(如图像处理、社交网络关系处理、文本处理、概率估计,等等),我们所处理的数据均为非负值,采用非负的向量更符合问题的假设,往往能取得更好的效果。因此,NMF相对于SVD算法在包括推荐系统在内的很多实际系统中获得了更广泛的应用。典型的NMF算法的优化表达式为:

其中,与SVD的不同之处在于我们限制分解矩阵取非负值:(注意优化目标约束区间的不同)。

(3)PMF

PMF(Mnih and Salakhutdinov, 2007)为矩阵分解算法提供了概率框架下的解释,并试图利用概率模型对原始矩阵中的已观测点进行最大似然估计:

其中,为高斯分布,Wij仍然描述原始打分矩阵的数值分布情况,即对应于原始矩阵中的非零值Wij=1,否则Wij=0。同样,也可以用概率分布来描述分解矩阵UV

我们在已观测数据上最大化如下的对数似然概率:

显然,该形式同样可以表达为统一的矩阵分解形式,如下面的最小化问题所示:

4)MMMF

如上所介绍的常用矩阵分解算法所隐含的基本假设均为“低秩近似”假设:虽然一个大规模的稀疏矩阵其原始形式可能具有较高的秩,但我们认为可以用一个秩较低的矩阵对原始矩阵进行近似和重构。

在如上的矩阵分解中,原始矩阵的行数和列数(m和n)可以高达上百万甚至千万的量级,但是我们所采用的分解矩阵U和V的列数被限制在k维。k在实际系统中不过是几十至几百的量级,而近似矩阵的秩一定小于k,因此存储空间相对于原始矩阵而言大大降低。其中隐含的意义在于,虽然原始矩阵的规模和维度非常庞大,但我们认为用来描述这些数据的规律、结构和参数的数量是有限的,且最多用k个维度就可以较为完备地刻画出来,这k个维度的参数就用超线性参数矩阵U和V的形式描述。例如,一个化妆品购物网站所包含的用户数量和商品数量可能非常庞大,因而对应的用户-物品稀疏矩阵也具有庞大的规模。但是描述网站用户对化妆品评分关系的因素可能是为数不多的有限个,例如化妆品的品牌、价格、包装、颜色、质量,等等。这就为矩阵的低秩分解和近似提供了基础。

基于低秩近似的矩阵分解算法存在的一个重要问题是在实际操作中难以确定选择多少个维度进行分解,因为在实际应用中,设计人员很难估计决定系统规律的参数维度到底有多少个。使用的维度过少可能无法完全描述用户的偏好信息,从而造成预测精度的下降;使用的维度过多会带来巨大的计算负载,甚至带来过拟合。

MMMF(Srebro, et al., 2004)突破传统的低秩近似假设,采用低范数近似的理念对原始矩阵进行分解和预测,从而绕过选取特定维度进行分解。为了简化问题描述和符号表示,我们在这里采用两类标签的矩阵。假设原始矩阵,对Y的近似矩阵为X,则MMMF最小化如下的优化目标:

其中的正则化项为矩阵的核范数(Nuclear Norm),它表示一个矩阵的各个特征值之和,用来描述和控制模型的复杂度。可以证明,矩阵的核范数可以等价表示为如下的形式:

即一个矩阵的核范数等于其所有可能的分解矩阵(不对分解的维度进行具体限制)的Frobenius范数中的最小值。正是基于这一定理,我们可以绕过显式的矩阵分解,转而采用直接最小化核范数的方式使在全部可能的维度下寻找最优解成为可能。

基于神经网络的推荐算法

深度神经网络在个性化推荐问题上也得到了应用。例如,矩阵的打分预测问题可以看作一个基于多层神经网的拟合问题。然而,直接用多层神经网络进行打分预测的效果并不好,谷歌提出了融合浅层网络与多层神经网络的推荐算法,如图8.10所示。在该模型中,浅层网络用于拟合系统中已有的属性信息,从而利用明确已知的信息进行预测。深层网络用于拟合隐藏在训练数据中的未知信息,辅助提升推荐效果。神经网络算法也被应用在实际的商业推荐系统中,例如,文献(Covington, et al., 2016)将多层神经网络与用户物品的表示学习用在了YouTube的视频推荐系统中,与视频预筛选等工程手段结合,取得了不错的效果。

图8.10  谷歌提出的融合浅层网络与多层神经网络的推荐算法

需要指出的是,学术界对基于神经网络的推荐算法到底有没有真正提高推荐效果是有争议的。例如,文献(Dacrema, et al., 2019)通过系统性的实验指出,大多数基于神经网络的推荐算法,其实际推荐效果低于论文所汇报的结果,并且在很多情况下,传统的基于矩阵分解的算法,甚至是基于相似度的算法,要好于神经网络模型的推荐效果。因此,读者或者推荐系统从业人员,应当根据自己的实际场景和业务需求,使用最合适的推荐算法。

如果没能获得这本书,可点击图片进行购买!

更多福利

CSDN技术公开课年度总评选

福利前所未有!

扫描海报二维码为你喜欢的讲师投票,就有机会获得超值奖品

送书 | 2020年新一天,用这本书开启你的NLP学习之路!相关推荐

  1. 【送书活动】豆瓣9.0,这本书YYDS

    抽奖方式在文末 抽奖方式在文末 抽奖方式在文末 学习Python,我猜你或多或少听过,这本美亚排名前三.中文版畅销超30万册,豆瓣评分9.0的入门书<Python编程快速上手--让繁琐工作自动化 ...

  2. python基础看什么书-2020年入门Python,这7本书一定要看!

    毋庸置疑,Python是2019年最流行的编程语言之一,它可以用于各种与开发相关的任务,并且拥有一个庞大的社区和用户. 作为一个刚想要入门开发领域的程序员来说,Python是一个不错的选择,因为它确实 ...

  3. 2020最值得读的java书,2020年最值得读的10本书,你看过几本?

    嘿,你有多久没有读书了? 小伙伴们,你是否有读书的习惯,春暖花开的日子,是否考虑读上几本书呢. 4月23日,第25个"世界读书日"如约而至.今天小编参加了一场关于书的活动,接下来就 ...

  4. 双11活动提前来袭,你买视频我送书

    51CTO学院,双十一火热开启!下单即领王春海老师实体图书~ 虚拟化不用怕,一步到位帮你拿下高薪职位~ 所有课程均支持花呗分期服务, 每天几块钱,轻轻松松投资自己 活动时间:11.7-11.30 [说 ...

  5. 【送书】联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!...

    联邦学习是如何应用在视觉领域的? 本文会通过一个获得了2020年AAAI人工智能创新应用奖(也是第一个基于联邦学习的人工智能工业级奖项)的案例来向大家介绍! 本案例是联邦学习在视觉.物联网.安防领域的 ...

  6. ICLR 2020关键亮点与发展趋势总结(附python实战分析PyTorch vs Tensorflow使用情况)|文末送书...

    介绍 ICLR是International Conference on Learning Representations的简称,是机器学习和深度学习研究界最著名的会议之一. ICLR 2020最初计划 ...

  7. 我这样回答了Spring 5的新特性,面试官对我刮目相看 | 文末送书

    最近,有一个小伙伴拿到了自己满意的Offer,和他交谈的过程中得知他面试官问他关于Spring的问题比较多,其中最让面试官满意的就是自己回答关于Spring 5的知识点回答的不错. Spring5是2 ...

  8. 2020年十本最值得阅读的前端书籍推荐(本文送书10本)

    送书规则 留言点赞最多,共 5 名 在本文中留言,其中留言被点赞最多的前 5 名可以获得前端书籍一本,在本文推荐的10本书中自行选择 点在看,随机选 5 名 在本文点在看,我这里是能看到谁点了再看的, ...

  9. 新一期的送书活动,无条件抽奖,速来~

    本期活动还是抽奖,以及加入知识星球送书活动,之前也答应了知识星球的小伙伴们这个周末要送一本的,不过这次我并没有打算增加任何限制,因为过几天我还会办几期送书活动,到时候再增加条件也不迟. 本次带来了两个 ...

最新文章

  1. 皮一皮:智商捉急...
  2. 【数字信号处理】相关函数 ( 周期信号 | 周期信号的自相关函数 )
  3. Java输入输出入门 A+B
  4. excel判断字符串包含另一个字符串_【前端冷知识】如何正确判断一个字符串是数值?...
  5. 当别人问你自定义哪些hooks
  6. wps流程图数量如何修改_免费WPS会员领取渠道!(不要转发)
  7. Android AndroidNSSP的简单说明
  8. 冒泡排序代码(升序+降序)
  9. 炒冷饭的“象棋人机大战”
  10. 我在阿里工作的这段时间里,都学到了哪些东西
  11. 解决Vue history模式下路由跳转时页面404问题
  12. 英语听力采用计算机化考试,高考英语听力机考特点与应对建议
  13. 使用 docker 对容器资源进行限制
  14. 洪水填充算法_洪水填充算法分析
  15. dubbo报错Forbid consumer xxxx access service xxx from registryxxx
  16. 三维点云拼接 标记点拼接 SVD分解法
  17. 如何使用media-server搭建DASH服务
  18. 程序设计我爱你_如何用爱设计
  19. 日本Java18_死磕18个Java8日期处理,工作必用!
  20. 2017精选BIM案例分享介绍及下载

热门文章

  1. solrcloud Read and Write Side Fault Tolerance
  2. ActionDescriptor 的认识
  3. win7 64位操作系统中 Oracle 11g 安装教程(图解)
  4. 【转载】【贪心】各种覆盖问题
  5. 浏览器是怎样工作的:渲染引擎,HTML解析
  6. 下一代安全威胁的内幕故事
  7. How to never give up
  8. ROS中launch文件使用笔记
  9. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
  10. MyBatis中jdbcType=INTEGER、VARCHAR作用