分布式矩阵分解算法在推荐系统中的研究与应用_张海建
- 格式:pdf
- 大小:573.44 KB
- 文档页数:3
《基于矩阵分解的鲁棒推荐算法研究》篇一一、引言随着互联网技术的飞速发展,信息过载问题日益严重,如何从海量数据中为用户提供精准、个性化的推荐服务成为了一个重要的研究方向。
推荐系统作为解决这一问题的有效手段,已经在电商、社交网络、视频网站等各个领域得到了广泛应用。
其中,基于矩阵分解的推荐算法因其良好的性能和可扩展性而备受关注。
然而,传统的矩阵分解推荐算法在处理用户和项目之间的复杂关系时仍存在鲁棒性不足的问题。
因此,本文旨在研究基于矩阵分解的鲁棒推荐算法,以提高推荐系统的准确性和稳定性。
二、矩阵分解推荐算法概述矩阵分解是一种常用的推荐算法技术,其基本思想是将用户-项目评分矩阵分解为用户和项目的潜在特征矩阵。
通过挖掘用户和项目的潜在特征,可以为每个用户推荐最感兴趣的项目。
传统的矩阵分解推荐算法主要包括奇异值分解(SVD)和交替最小二乘法(ALS)等。
这些方法在处理大规模数据集时具有良好的性能和可扩展性,但它们在处理用户和项目之间的复杂关系时仍存在一定局限性。
三、鲁棒性问题的提出在实际应用中,推荐系统常常面临用户行为的不确定性、数据稀疏性和冷启动等问题。
这些问题的存在使得传统矩阵分解推荐算法的鲁棒性受到影响。
具体而言,当用户行为受到外部因素的干扰时,传统的矩阵分解推荐算法可能无法准确捕捉用户的真实兴趣;当数据稀疏性较高时,算法容易受到噪声数据的影响;而冷启动问题则使得新用户和新项目难以获得准确的推荐。
因此,提高矩阵分解推荐算法的鲁棒性成为了一个亟待解决的问题。
四、基于矩阵分解的鲁棒推荐算法研究为了解决上述问题,本文提出了一种基于矩阵分解的鲁棒推荐算法。
该算法通过引入正则化项和优化损失函数来提高算法的鲁棒性。
具体而言,我们采用了L1正则化和L2正则化的组合来约束潜在特征矩阵的稀疏性和平滑性;同时,我们通过引入一个自适应的损失函数来优化算法的性能。
此外,我们还利用了用户和项目的上下文信息以及时间因素来进一步提高算法的准确性。
基于矩阵分解和聚类的混合推荐算法研究基于矩阵分解和聚类的混合推荐算法研究摘要:随着互联网技术的不断发展和普及,推荐系统成为了电子商务和社交网络中的一种重要应用。
然而,传统的协同过滤方法难以解决“冷启动”和“长尾”问题。
为了解决这些问题,本文提出了一种基于矩阵分解和聚类的混合推荐算法。
该算法采用了矩阵分解的方法对用户-物品评分矩阵进行降维处理,同时利用聚类算法将用户和物品划分到不同的组别中,从而实现精准的推荐。
本文采用了三种经典的评价指标——准确率、召回率和覆盖率来评估算法的性能,实验证明该算法在各指标方面优于传统的协同过滤算法。
关键词:推荐系统;矩阵分解;聚类算法;准确率;召回率;覆盖率第一章绪论推荐系统是一种为用户提供个性化周推荐的计算系统,在电子商务、社交网络等领域得到了广泛应用。
协同过滤算法是当前推荐系统中最为常用的方法,但是其存在“冷启动”“长尾”等问题,严重影响了推荐效果。
本论文旨在提出一种能够更好地解决这些问题的混合推荐算法。
第二章相关研究目前,关于推荐系统的研究已经非常丰富,其中协同过滤算法是应用最广泛的方法之一。
矩阵分解算法是协同过滤算法的一种改进,能够有效提高推荐效果。
聚类算法也被广泛应用于推荐系统中,能够挖掘出数据的潜在结构。
然而,这两种算法各自存在不足,因此本文提出了一种混合算法,综合了两者的优势。
第三章矩阵分解算法本章首先阐述了矩阵分解算法的原理及优缺点,然后详细介绍了基于梯度下降的矩阵分解算法的实现过程。
第四章聚类算法本章介绍了常见的聚类算法,包括k-means算法和层次聚类算法。
同时,本章还详细讨论了如何利用聚类算法解决推荐系统中的问题。
第五章基于矩阵分解和聚类的混合推荐算法本章详细描述了基于矩阵分解和聚类的混合推荐算法的原理和实现过程。
该算法首先采用矩阵分解的方法对用户-物品评分矩阵进行降维处理,再利用聚类算法对用户和物品进行分类,最后根据用户所属的类别和物品所属的类别进行推荐。
《基于矩阵分解的鲁棒推荐算法研究》篇一一、引言随着互联网技术的飞速发展,信息过载问题日益严重,用户面临着海量的数据和信息选择困难。
推荐系统作为一种有效的解决方案,已经被广泛应用于各种在线服务平台中,如电商、社交网络、视频网站等。
在众多推荐算法中,基于矩阵分解的推荐算法因其简单有效和良好的可扩展性而备受关注。
然而,传统的矩阵分解推荐算法在处理用户和项目数据的稀疏性、噪声和异常值等问题时,往往表现出一定的脆弱性。
因此,本文提出了一种基于矩阵分解的鲁棒推荐算法,以提高推荐系统的准确性和稳定性。
二、背景及现状传统的基于矩阵分解的推荐算法主要利用用户-项目评分矩阵进行分解,从而预测用户对项目的评分或喜好程度。
然而,在实际应用中,由于用户和项目的数量巨大,评分数据往往稀疏且充满噪声和异常值。
这些问题会严重影响推荐算法的准确性和稳定性。
为了解决这些问题,许多研究者提出了各种改进的矩阵分解算法,如非负矩阵分解、时间敏感矩阵分解等。
然而,这些算法在处理鲁棒性问题时仍存在一定的局限性。
三、基于矩阵分解的鲁棒推荐算法针对上述问题,本文提出了一种基于矩阵分解的鲁棒推荐算法。
该算法在传统矩阵分解的基础上,引入了鲁棒性优化技术,通过引入正则化项和损失函数中的鲁棒项来处理稀疏性、噪声和异常值等问题。
具体而言,该算法包括以下步骤:1. 构建用户-项目评分矩阵。
根据用户对项目的评分数据,构建一个稀疏的用户-项目评分矩阵。
2. 矩阵分解。
利用矩阵分解技术,将用户-项目评分矩阵分解为用户特征矩阵和项目特征矩阵。
3. 引入鲁棒性优化技术。
在损失函数中加入正则化项和鲁棒项,以处理数据中的噪声和异常值。
正则化项用于约束特征向量的稀疏性,鲁棒项则用于降低异常值对模型的影响。
4. 迭代优化。
通过迭代优化算法,求解优化问题并得到最优的用户特征矩阵和项目特征矩阵。
5. 生成推荐结果。
根据预测的用户对项目的评分或喜好程度,生成推荐结果并输出给用户。
《基于矩阵分解的鲁棒推荐算法研究》篇一一、引言随着互联网技术的飞速发展,信息过载问题日益突出,使得用户难以从海量的数据中筛选出符合自己兴趣的内容。
推荐系统作为解决这一问题的有效手段,被广泛应用于电商、视频、音乐、社交等众多领域。
其中,基于矩阵分解的推荐算法因其实用性和高效性受到了广泛关注。
然而,传统的矩阵分解推荐算法在处理用户和项目的稀疏性、冷启动问题以及动态变化的数据时,其鲁棒性有待提升。
本文针对这些问题,对基于矩阵分解的鲁棒推荐算法进行研究。
二、矩阵分解推荐算法概述矩阵分解是推荐系统中的一种重要技术,其基本思想是将用户-项目评分矩阵分解为用户和项目的隐因子矩阵。
通过这些隐因子矩阵,可以预测用户对项目的评分,从而进行推荐。
传统的矩阵分解算法如SVD、NMF等在处理大规模数据时表现出色,但在处理数据稀疏性、冷启动和动态变化等方面存在不足。
三、鲁棒性在推荐算法中的重要性鲁棒性是评价推荐算法性能的重要指标之一。
在现实应用中,推荐系统的数据往往具有高度的稀疏性、动态性和不确定性。
因此,一个鲁棒的推荐算法应该能够有效地处理这些挑战。
具体来说,鲁棒的推荐算法应具备以下特点:对数据稀疏性的鲁棒性、对冷启动问题的鲁棒性以及对动态变化的鲁棒性。
四、基于矩阵分解的鲁棒推荐算法研究为了解决传统矩阵分解推荐算法在处理稀疏性、冷启动和动态变化等方面的不足,本文提出了一种基于矩阵分解的鲁棒推荐算法。
该算法在传统的矩阵分解基础上,引入了以下改进措施:1. 引入正则化项:通过引入正则化项,可以有效地抑制过拟合现象,提高算法的鲁棒性。
此外,正则化项还可以提高算法对噪声数据的处理能力。
2. 结合时间因素:考虑到用户和项目的动态变化特性,本文在矩阵分解过程中引入了时间因素。
通过考虑用户和项目的时间变化趋势,可以更准确地预测用户对项目的评分。
3. 融合其他信息:除了用户-项目评分信息外,还可以融合其他相关信息如用户的社会网络信息、项目的内容信息等。
推荐系统中的基于隐式反馈的矩阵分解算法在当今大数据时代,推荐算法已经被广泛应用于各个领域,如电商、社交网络、音乐、电影等。
推荐系统在这些领域中起到了重要的作用,为用户提供了个性化的推荐服务,提高了用户的满意度和购买率。
在这些推荐系统中,基于隐式反馈的矩阵分解算法因其高效性和准确性而备受关注和使用。
一、推荐系统介绍推荐系统是一种能够根据用户的兴趣和需求,向用户推荐相关产品或服务的系统。
推荐系统主要有两种类型:基于内容的推荐和基于协同过滤的推荐。
基于内容的推荐是根据用户的历史行为和偏好,向用户推荐与其喜好相似的物品或服务。
而基于协同过滤的推荐,则是根据许多用户相似的兴趣和喜好,向用户推荐其他用户感兴趣的物品或服务。
二、矩阵分解算法介绍矩阵分解算法是一种将矩阵进行分解的算法。
通常,我们使用矩阵分解算法将一个大矩阵分解为两个小矩阵,这两个小矩阵的乘积等于原来的大矩阵。
其中,第一个小矩阵代表用户对物品的兴趣矩阵,第二个小矩阵代表物品的属性矩阵。
在推荐系统中,我们使用矩阵分解算法将用户对物品的兴趣矩阵进行分解,从而得到用户对未知物品的兴趣向量,从而实现个性化推荐。
三、基于显式反馈的矩阵分解算法在推荐系统中,我们通常使用用户对物品的评分来进行推荐。
这种方法称为显式反馈推荐,因为用户对物品的评分是显式给出的。
基于显式反馈的矩阵分解算法是通过分解用户对物品的评分矩阵,来得到用户对物品的兴趣矩阵和物品的属性矩阵。
这种算法的本质是矩阵分解。
显式反馈推荐算法的优点是能够直接使用用户对物品的评分进行推荐,因此推荐结果更加准确。
但其缺点是,在很多情况下,用户对物品的评分是缺失的,因此推荐的覆盖率较低。
四、基于隐式反馈的矩阵分解算法在实际应用中,很多用户并不会对所有物品都进行评分,因此评分矩阵中存在大量的缺失值。
这时我们可以使用基于隐式反馈的矩阵分解算法来解决这个问题。
隐式反馈推荐算法是通过用户的行为来推断用户的兴趣,例如用户的浏览、点击、购买等行为。
基于矩阵分解的推荐算法研究第一章:引言随着互联网的快速发展,互联网上的信息量越来越大,用户很难很快地找到自己需要的信息。
因此,推荐系统应运而生。
推荐系统是一种用于预测和推荐个人可能感兴趣的项目或产品的技术。
推荐系统已经在电子商务、社交网络、媒体、旅游和学术等多个领域得到应用。
随着推荐系统的不断发展,不同的推荐算法也不断出现。
本文将重点探讨基于矩阵分解的推荐算法。
第二章:矩阵分解推荐算法的概述基于矩阵分解的推荐算法主要是基于矩阵分解技术,将稀疏矩阵分解为两个低秩矩阵的积,即:A ≈ U*V。
其中,A是一个矩阵,U是一个m * k的矩阵,V是一个k * n的矩阵,k表示低秩的阈值,通常k<<<min(m,n)。
通过矩阵分解技术,可以在保持原有矩阵数据不变的前提下,将原有稀疏矩阵分解为两个低秩矩阵的积,以便更好地进行推荐。
第三章:基于矩阵分解的推荐算法的实现方法基于矩阵分解的推荐算法的实现方法主要有两种:基于矩阵分解的隐式反馈推荐算法和基于矩阵分解的显式反馈推荐算法。
基于矩阵分解的隐式反馈推荐算法主要是利用用户在系统中的隐式反馈信息,如点击、阅读、浏览历史、购买记录等,建立用户隐式反馈矩阵。
同时,利用单个项目的隐式反馈信息,如销售量、热度、热评等,建立项目隐式反馈矩阵。
然后,利用矩阵分解算法,对用户隐式反馈矩阵和项目隐式反馈矩阵进行分解,得到用户特征向量和项目特征向量。
最后,根据用户特征向量和项目特征向量计算用户对项目的兴趣分数,推荐给用户可能感兴趣的项目。
基于矩阵分解的显式反馈推荐算法则是利用用户的显式反馈信息,如评分信息,建立用户评分矩阵。
然后,利用矩阵分解算法,对用户评分矩阵进行分解,得到用户特征向量和项目特征向量。
最后,根据用户特征向量和项目特征向量计算用户对项目的兴趣分数,推荐给用户可能感兴趣的项目。
第四章:基于矩阵分解的推荐算法的优缺点基于矩阵分解的推荐算法的优点主要包括以下几点:(1)可以对稀疏数据进行处理和分析,提高推荐的准确性。
《基于矩阵分解的鲁棒推荐算法研究》篇一一、引言随着互联网技术的飞速发展,网络数据呈现爆炸式增长,用户面临着信息过载的问题。
为了解决这一问题,推荐系统应运而生,成为了一种有效的信息过滤工具。
其中,基于矩阵分解的推荐算法是当前研究的热点之一。
本文旨在研究基于矩阵分解的鲁棒推荐算法,以提高推荐系统的准确性和稳定性。
二、背景及意义推荐系统通过分析用户的行为数据,为用户提供个性化的信息推荐服务。
基于矩阵分解的推荐算法是推荐系统中的一种重要方法,其核心思想是将用户-项目评分矩阵分解为用户矩阵和项目矩阵,从而捕捉用户和项目的潜在特征。
然而,传统的矩阵分解算法在处理稀疏数据和噪声数据时,容易出现准确性下降和稳定性差的问题。
因此,研究基于矩阵分解的鲁棒推荐算法具有重要意义。
三、相关文献综述近年来,关于矩阵分解的推荐算法研究取得了丰富的成果。
研究者们从不同角度对算法进行了改进和优化,如引入额外信息、考虑时间因素、处理数据稀疏性等。
然而,现有研究在处理噪声数据和保证算法鲁棒性方面仍有待加强。
因此,本研究旨在针对这一问题展开深入研究。
四、基于矩阵分解的鲁棒推荐算法研究(一)算法原理本研究提出的基于矩阵分解的鲁棒推荐算法,主要思想是在传统矩阵分解的基础上,引入鲁棒性优化方法,以提高算法在处理噪声数据时的准确性和稳定性。
具体而言,我们采用一种改进的梯度下降算法,通过引入正则化项和损失函数调整,使得算法在优化过程中能够更好地抵抗噪声数据的干扰。
(二)算法实现1. 数据预处理:对原始数据进行清洗、去重、归一化等处理,以便于后续的算法分析。
2. 矩阵分解:将用户-项目评分矩阵进行分解,得到用户矩阵和项目矩阵。
3. 鲁棒性优化:在传统矩阵分解的基础上,引入鲁棒性优化方法,通过调整损失函数和正则化项,提高算法的鲁棒性。
4. 预测与推荐:根据用户的历史行为数据和其他相关信息,预测用户对项目的评分,并为用户提供个性化的推荐服务。
(三)实验与分析我们采用真实数据集对算法进行实验验证。
《基于矩阵分解的鲁棒推荐算法研究》篇一一、引言在信息过载的时代,推荐系统成为了我们日常生活的重要组成部分。
其目的在于从海量数据中寻找并呈现给用户最相关的信息,以此提升用户体验。
基于矩阵分解的推荐算法因其优秀的性能和广泛的应用领域而备受关注。
然而,传统的矩阵分解算法在处理复杂、动态的数据时,常常面临鲁棒性不足的问题。
因此,本文旨在研究基于矩阵分解的鲁棒推荐算法,以解决这一问题。
二、背景与相关研究矩阵分解是推荐系统中的一种重要技术,其基本思想是将用户-项目评分矩阵分解为用户和项目的潜在特征矩阵。
这些潜在特征可以捕捉用户和项目的相似性,从而进行推荐。
然而,传统的矩阵分解算法在处理噪声数据、冷启动问题以及数据稀疏性等方面存在局限性。
近年来,许多研究者开始探索基于矩阵分解的鲁棒推荐算法,以提高算法的鲁棒性和准确性。
三、方法与算法本文提出了一种基于矩阵分解的鲁棒推荐算法。
该算法通过引入正则化项和优化技术,提高算法对噪声数据的鲁棒性。
具体来说,我们采用了一种基于L1正则化的稀疏矩阵分解方法,该方法可以在处理噪声数据的同时,有效解决冷启动和数据稀疏性问题。
此外,我们还采用了随机梯度下降(SGD)优化技术,以提高算法的收敛速度和准确性。
四、实验与分析为了验证我们的算法的有效性,我们在几个公开的数据集上进行了实验。
实验结果表明,我们的算法在处理噪声数据、冷启动和数据稀疏性等方面具有显著的优越性。
具体来说,我们的算法在推荐准确性和鲁棒性方面均优于传统的矩阵分解算法。
此外,我们还对算法的收敛速度和计算效率进行了分析,结果表明我们的算法在保持高准确性的同时,也具有较好的计算效率。
五、讨论与未来工作虽然我们的算法在处理噪声数据、冷启动和数据稀疏性等方面取得了显著的成果,但仍存在一些局限性。
例如,我们的算法可能无法处理某些特定类型的噪声数据,或者在某些情况下可能无法充分利用数据的全部信息。
因此,未来的工作将集中在如何进一步提高算法的鲁棒性和准确性上。
基于矩阵分解的推荐系统优化与实现近年来,随着互联网的不断普及和数据量的不断增加,推荐系统成为了各大电商、视频网站等互联网企业业务中不可或缺的一部分。
然而,市场上的推荐系统存在推荐不准确、数据量过大等问题。
为了解决这些问题,推荐系统也不断地进行着优化及创新。
其中,基于矩阵分解的推荐系统成为了一种强有力的推荐算法,被广泛运用于各类推荐场景。
一、什么是基于矩阵分解的推荐系统?矩阵分解即将一个大矩阵拆分成多个小矩阵的过程。
基于矩阵分解的推荐系统,可以将用户和商品的关系表达为一个矩阵。
该矩阵可以被分解为两个小矩阵,通过对这两个小矩阵进行操作,可以得出用户和商品的关系,以及推荐的评分等信息。
具体地说,将用户和商品之间的评分关系表示为一个矩阵,并将此矩阵分解为用户与特征之间的矩阵,以及商品与特征之间的矩阵。
通过这种方式,可以将较大的矩阵分解为两个较小的矩阵,并在此基础上实现推荐。
基于矩阵分解的推荐系统不仅可以提高推荐的准确性,同时也可以通过降维的方式,实现对海量数据的快速处理。
二、基于矩阵分解的推荐系统的优劣势基于矩阵分解的推荐系统拥有以下几个优势:1、提高推荐准确性:基于矩阵分解的推荐系统可以从用户和商品之间的关系中挖掘出更多的信息,进而提高推荐的准确性。
与传统的推荐算法相比,基于矩阵分解的推荐系统能够更好地解决“长尾推荐”问题,提高推荐的全面性和可信度。
2、适用于海量数据的处理:对于互联网企业而言,处理海量数据是一个十分困难的问题。
基于矩阵分解的推荐系统通过降维处理,可以大大降低数据的处理难度,并提高数据的处理速度。
3、可扩展性:基于矩阵分解的推荐系统可以动态地调整特征矩阵的大小,从而让推荐算法能够随着业务的发展和数据规模的变化而自适应。
然而,基于矩阵分解的推荐系统也存在以下几个弊端:1、初期建立阶段需要大量的历史数据:要让基于矩阵分解的推荐系统达到最优的推荐效果,需要使用大量的历史数据进行参考和训练。
这就对互联网企业的数据积累能力提出了较高的要求。
第46卷第8期Vol46No$82020年8月August2020计算机工程Computer Engineering•人工智能与模式识别•文章编号:1000-3428(2020)08-0072-06文献标志码:A中图分类号:TP18一种融合社交关系的矩阵分解推荐模型吴清春tb,贾彩燕tb(北京交通大学a.计算机与信息技术学院;b.交通数据分析与挖掘北京市重点实验室,北京100044)摘要:推荐系统可以有效解决信,为用供个性化的推荐服务$然矩阵稀疏的情况下,仅通用户项目矩阵来生成预测结果的传统模型效差$,利用用以及用会信任关系信息计算用户相似度,一融合系的矩阵分解型推荐模型SoRegIM$通用户的拓扑关系,利用目标用户的直接邻接邻居信息构会信任网络,用用 系信息的同时减少的声$基于公开集的实验结果表明,与SoReg、Soc/IM F等7种经典模型相比,SoRegIM能够有效提高推荐准确性,且于稀疏的效果明显$关键词:;荐系统;拓扑关系;信任;矩阵分解开放科学(资源服务)标志码(OSID):H|倉中文引用格式:吴清春,贾彩燕.一种融合社交关系的矩阵分解推荐模型:J).计算机工程,2020,46(8):72-77,84.英文弓丨用格式:WU Qingchun,JIA Caiyan.A matrix factorizetion recommendation model fusing social relationship[J]. Computer Engineering,2020,46(8):72-77,84.A Matrix Factorization Recommendation Model Fusing Social RelationshipWU Qingchun",b,JIA Caiyan c,b(a.SchoolofComputerand Information Technology; b.Beiiing Key Laboratory ofTra f icDataAnalysisand Mining,Beiiing Jiaotong University,Bei iing100044,China)+Abstract]Recommendation systems can Cfcctively solve the problem of information overload and provide personalized recommendation service for users.However,traditional models which generate prediction resultsonly by analy eing user proiect scoring matrix arenote f ectivein the case of sparse scoring matrix.To addre s the problem,thispaperusesthe rating information and social trust relationships of users to calculate user similarity,and on this basis proposes a Matrix Factorieation(MF)recommendation model named SoRegIM fusing social relationship.By mining the topological relationship ofusersin social network,theweighted social trust network is constructed based on the information of direct and indirect neighbors of the target users,so asto reduce the redundant social noise while making fu l useofthesocial relationship information of users.Experimental results on the open datasets show that,compared with cla s ical models such asSoRecand SocialMF,SoRegIM hashigherrecommendation accuracy and demonstrates an obvious improvement on sparsedata.+Key words]social network;recommendation system;topological relationship;Wust network;Matrix Factorizetion( MF) DOI:10.19678//.issn.1000-3428.00549540概述着互联网快速发展,人信息的方式越来越多,然而大量无关的信息会干扰用所需信的选择。
随着互联网的普及和电子商务的发展,推荐系统逐渐成为电子商务IT技术的一个重要研究内容,得到越来越多研究者的关注[1]。例如,Amazon、CDNOW、e-Bay、京东等电子商务网站,都开始逐渐引入了各种形式的推荐系统。协同过滤推荐是当今被广泛使用的推荐技术[4],其中,潜在因素模型(latentfactormodels)是协同过滤推荐使用的技术之一。潜在因素模型是通过分析消费历史记录来推测潜在的发展趋势。矩阵分解算法(matrixfactorization)[2]
是潜在因素模型中被广泛使用的技术之
一。但是,随着网站消费记录的增多,传统的矩阵分解算法不能高效地为大规模消费记录构建潜在因素模型,无法实现推荐系统的实时性。本文针对大规模历史消费记录,提出了高效地特征矩阵分解算法,该算法是
收稿日期:2012-12-21作者简介:张海建(1978-),男,北京人,硕士,讲师,主要研究方向:计算机软件,数据库系统。
分布式矩阵分解算法在推荐系统中的研究与应用张海建(北京信息职业技术学院,北京100018)
摘要:随着互联网信息技术的高速发展,越来越多的人开始接触网络。网上购物成为当今社会的购物的主要方式之一,各大电子商务网站每天都有大量的消费者购买及浏览记录。电子商业往往希望通过分析大量的网站购买记录以及消费者浏览记录,对消费者提供有价值地商品推荐,以便于提高销售量。矩阵分解广泛地应用在推荐系统中的协同过滤算法中,但是,随着网站数据量的增大,传统的矩阵分解算法不能有效地处理这些大规模海量数据。本文针对推荐系统中大规模的网站数据,提出了基于云平台的分布式矩阵分解算法,该算法能够分布式完成推荐系统中的协同过滤过程。实验结果表明,本文提出的算法能够高效地完成推荐系统中的协同过滤,并且,该算法具有很好的可扩展性。关键词:推荐系统;分布式;云平台;mapReduce;矩阵分解;协同过滤
中文分类号:TP3文献标识码:A文章编号:1001-7119(2013)12-0151-03TheResearchandApplicationofDistributedMatrixFactorizationAlgorithminRecommendSystem
ZhangHaijian(BeijingInformationTechnologyCollege,Beijing100018,China)
Abstract:Withthehigh-speeddevelopmentofinternetinformationtechnology,moreandmorepeoplebegintogetintouchwithinternet.On-lineshoppingisbecomingoneofthemainshoppingmethods,severalbige-commercesitespro-
ducebigamountofconsumerpurchasingandbrowsingrecords.E-commercesitesusuallyhopetoanalyzetheserecordsandprovidetotheconsumerswithvaluablecommodityrecommendation,inordertopromotesales.Matrixfactorizationispopularlyusedincollaborativefilteringalgorithminrecommendationsystem.However,withtheincensementofwebdata,traditionalmatrixfactorizationcouldnotdealwiththishugeamountofdata.Inthispaper,focusingonbigscalewebsitedata,weproposedistributedmatrixfactorizationbasedonCloudcomputingplatform.Throughtheexperimentalresults,thealgorithminthispapercouldcompletecollaborativefilteringinrecommendationsystemeffectively,andithasgoodscalability.Keywords:recommendersystems;distributed;cloudplatforms;mapReduce;matrixdecomposition,andcollaborativefiltering
第29卷第12期2013年12月
科技通报BULLETINOFSCIENCEANDTECHNOLOGYVol.29No.12Dec.2013技通报科第29卷
基于MapReduce[5]分布式云计算平台[7],能够高效、快速地完成潜在因素模型的构建。实验结果进一步表明,本文提出的算法具有很高的加速比,并且有很好的可扩展性。
1矩阵分解算法矩阵分解模型中,引入一组二进制值pui,pui代表用户u对项目i的偏好:
pui=1ulikei0udislikei如果用户u已经购买了项目,那么令pui=1,否则,令
pui=0。在购买历史记录中,不存在pui=0的样本值,因此该矩阵分解算法只能用于对正训练数据进行推荐。在矩阵分解模型中,偏好度被假定为内积形式:pui=xTuyi。矩阵分解模型的目标是求解向量xu和yi满足最
小化训练数据的预测错误平方值。用户因素和项目因素是通过最小化如下方程求解的:minx*,y*
∑(u,i)∈R(pui-xTuyi)2+λ(∑u||xu||2+∑i||yi||2
)
其中,λ是正则化参数,用于防止过拟合问题。通过固定用户参数或者项目参数,成本函数变为二次方程,因此该问题转化为最小平方优化问题,步骤如下:首先,通过重新计算用户因素xu最小化如下成本方程:xu=(YTY+λI)-1YTp(u)其中,p(u)包含所有用户u的购买项目记录。然后,通过相同的方法重复计算项目因素:yi=(XTX+λI)-1XTp(i)通过迭代重复计算项目因素和用户因素xu和yi,矩
阵分解模型将p赞ui中top-N项目推荐给用户u,其中p赞ui代表用于u对项目i的预测偏好度。
2分布式矩阵分解算法通过前面的介绍,可以看出算法的执行时间与矩阵相乘有关,并且与因式分解的个数相关,如果矩阵X的维度非常大,那么大矩阵相乘问题将严重影响算法的执行时间。本节部分针对大规模数据计算矩阵相乘求解慢问题,基于MapReduce分布式计算平台,设计分布式矩阵分解算法。下面,详细介绍算法的执行流程。(1)将数据集平均分配到各个不同节点中,即将初始化矩阵X,Y平均分配到K的个计算节点中,每个计算节点的子矩阵表示为:Y1,Y2,..,Yk;X1,X2,..,Xk。并且,
将p(u)和p(i)的信息传递到各个计算节点。(2)每个计算节点中,分别求解子矩阵转置与该子矩阵的乘积,即:YTkY,XTkX以及YTkp(u)和XT
kp(i)
。
(3)当所有计算节点计算完毕后,将所有的计算结果YTkY,XTkX做和作为YTY和XTX
最终的结果;同时,将
YTkp(u)和XTkp(i)结果按照列号合并,最为最终的矩阵结果。(4)对YTY和XTX分别求逆运算,与矩阵和XTp(i)
分别相乘,求解出相应的xu和yi。迭代步骤(2)、(3)、(4),直
至收敛为止,完成最小化成本函数求解。
(5)将最终的xu转置和yi相乘,得出预测p赞ui,并将top-N项目推荐给用户u。下面是基于MapReduce的分布式矩阵分解算法的伪代码:Input:User-FactorMatrixX,Item-FactorMatrixY,p(u),p(i)
Output:p赞uiMapperProgram:
图1可扩展性测试结果Fig.1ScalabilityTestingResults
表1实验数据描述Table1ExperimentalDataDescription数据集名称D1D2D3D4D5D6记录条数1,000,0002,000,0004,000,0008,000,00010,000,00012,000,000
表2算法执行时间比较Table2AlgorithmRunningTimeComparison
实验数据D1D2D3D4D5D6分布式矩阵分解(D-MF)执行时间/s3867781523312336704632传统算法(T-MF)执行时间/s48251058019296409114660959289加速比12.513.612.6713.112.712.8
152第12期1:foreachnodek2:compute(YTkY,XTkX);3:compute(YTkp(u)和XTkp(i));4:endfor5:ItermediateResult=store(k,YTkY,XTkX,YTkp(u),
XTkp(i));ReducerProgram:1:foreachkeyk2:YTY=Matrix_Add(YTkY)3:XTX=Matrix_Add(XTkX)4:YTp(u)=Matrix_Combine(YTkp(u))5:XTp(i)=Matrix_Combine(XTkp(i)))6:xu=Compute(YTY,YTp(u))7:yi=Compute(XTX,XTp(i))ControllerProgram:1:InitializeX,Y,p(u),p(i)2:DistributeX,Y,p(u),p(i)toKnodes3:Transmitdatatomappers4:StartMapper5:StartReducer6:while(|Ccurrent-Cbefore|>β){7:repeat4),5)8:}9:Store(xu,yi)=Output(Reducer)
10:p赞ui=MatrixMulti(xu,yi)
3实验结果实验部分的数据集是使用公开的互联网消费记录中获取的,其中数据集的记录格式如下所示:用户ID项目ID数量时间戳每条记录描述了用户购买某一项目的数目以及时间。表1详细地描述了使用的大规模数据的信息。由于本文是基于分布式计算框架,本文的所有计算都是基于最新版本的Hadoop[6]-0.20.2做为MapRe-
duce分布式编程环境。本文的实验环境是分布式云计算平台,该平台含有20个运算节点,每个节点的配置为:4.0Hz的Intel处理器,32G内存,CentOsLinux操作系统。本文的实验分为两个部分,第一部分测试分布式矩阵分解加速比,主要测试分布式矩阵分解算法(D-MF)与传统算法(T-MF)在执行时间上的比较。表2描述了分布式算法在20个计算节点上对6组实验数据的执行时间和传统矩阵分解算法的执行时间,以及加速