矩阵ubuntu12.10

ubuntu12.10  时间:2021-04-01  阅读:()
JournalofComputerApplicationsISSN1001-90812015-【-10计算机应用,2015,CODENJYIIDUhttp://www.
joca.
cn收稿日期:2015-6-17;修回日期:2015-7-6.
作者简介:郑凤飞(1990-),男,甘肃会宁,硕士研究,主要研究方向:云计算技术;黄文培(1967-),男,陕西西安,副教授,博士,主要研究方向:信息安全、网络安全;贾明正(1990-),男,硕士研究生,主要研究方向:数据挖掘、云计算.
基于Spark的矩阵分解推荐算法郑凤飞*,黄文培,贾明正(西南交通大学信息科学与技术学院,成都611756)(*通信作者电子邮箱1207264887@qq.
com)摘要:针对传统矩阵分解算法在处理海量数据信息时所面临的处理速度和计算资源的瓶颈问题,利用Spark在内存计算和迭代计算上的优势,提出了Spark框架下的矩阵分解并行化算法.
首先,依据历史数据矩阵初始化用户因子矩阵和项目因子矩阵;其次,迭代更新因子矩阵,将迭代结果置于内存中作为下次迭代的输入;最后,迭代结束时得到矩阵推荐模型.
通过在GroupLens网站上提供的MovieLens数据集上的实验表明,Speedup值达到了线性的结果,该算法可以提高协同过滤推荐算法在大数据规模下的执行效率.
关键词:协同过滤;推荐算法;矩阵分解;迭代最小二乘法;Spark中图分类号:TP301.
6(算法理论)文献标志码:ARecommendationAlgorithmwithMatrixFactorizationMethodBasedonSparkZHENGFengfei*,HUANGWenpei,JIAMingzheng(SchoolofInformationScienceandTechnology,SouthwestJiaotongUniversity,Chengdu611756,China)Abstract:Inordertosolvethebottleneckproblemsofprocessingspeedandresourceallocation,asparkbasedmatrixfactori-zationrecommendationalgorithmwasproposed.
Firstly,userfactormatrixanditemfactormatrixwereinitializedaccordingtohistorydata;Secondly,factormatrixwereiterativelyupdatedandtheresultwerestoredinmemoryastheinputofnextiteration;Finally,recommendationmodelweregeneratedwheniterationended.
TheexperimentonMovieLensshowsthatthespeedupwaslinerandsparkbasedalgorithmcansavetimeandsignificantlyimprovetheexecutionefficiencyofcollaborativefilteringrecommendationalgorithm.
Keywords:collaborativefiltering;recommendationalgorithm;matrixfactorization;alternatingleastsquare;Spark0引言随着互联网的迅猛发展,为了满足人们在繁多的信息中获取自己需要内容的需求,个性化推荐应用而生.
协同过滤推荐[1]是其中运用最为成功的技术之一.
其中,基于用户的最近邻法根据相似用户的评分来预测当前用户的评分[2].
然而,在用户数量以及用户评分不足的情况下,该方法存在冷启动和数据稀疏的问题.
文献[3]中提出了基于项的最近邻法,利用项之间相似性稳定的特点可以离线计算相似性,降低了在线计算量,提高了推荐效率,但同样存在冷启动和数据稀疏问题.
文献[4]使用矩阵分解中的奇异值分解(SingularValueDecomposition,SVD)减少评分矩阵的维数,之后应用最近邻法预测评分,一定程度上解决了同义词问题,但由于评分矩阵中大部分的评分是分解之前填充的,所以得到的特征矩阵不能直接用于评分.
文献[5]提出了一种基于矩阵分解和用户近邻模型的算法,解决了数据稀疏的问题,但存在模型过拟合的问题.
文献[6]提出了一种支持不完整评分矩阵的矩阵分解方法,不用对评分矩阵进行估值填充,有很好的推荐精度.
在Netflix推荐系统竞赛中的应用表明,该矩阵分解相比于其他的推荐算法能产生更精确的推荐[7].
在矩阵分解推荐算法中,每项评分预测都需要整合现有评分集的信息.
因此,随着用户数与项目数的增长,算法的计算量也会随着增长,单机模式的推荐算法逐渐难以满足算法的计算以及推送的即时性需求.
因此分布式推荐算法成为推荐算法中研究的一个新的方向.
文献[8,9]中提出了分布式的矩阵分解算法,为矩阵分解的并行计算提供了一种可行的解决方案,但其使用的MapReduce框架在各计算节点的迭代计算中会产生过多的文件读取操作,影响了算法的执行效率.
本文旨在将文献[6]中提出的矩阵分解推荐算法与专长于内存计算和迭代计算的Spark并行计算框架结合,探索矩2计算机应用第35卷阵分解算法在Spark上的实现,来解决大数据情况下矩阵分解推荐算法时间代价过高的问题.
1矩阵分解推荐算法与Spark平台1.
1矩阵分解推荐算法在协同过滤推荐中,输入数据可以用一个m行n列的评分矩阵R来表示,本文称之为User-Item矩阵.
1112121222123nnmmmmnRRRRRRRRRRR=""##%#其中,n表示项目数量,m表示用户数量,矩阵元素Rij表示用户i对项目j的偏好评估值,例如1~5分范围内,1代表很不喜欢,5代表很喜欢.
协同过滤中矩阵分解的目标是把用户和项目映射到同一个维数为f的潜在因子空间[10],这样用户与项目之间的关系就可以通过潜在因子空间中的内积来建模,如式(1)所示:TRPQ≈(1)其中,P是一个nu*f的矩阵(nu表示用户的数量,也即是矩阵R中横向量的个数,f表示因子个数,也即是低维矩阵的维数),Q是一个ni*f的矩阵(ni表示项目的数量).
我们称P为用户因子矩阵,Q为项目因子矩阵,则每个用户对应的向量为pu,每个项目对应的向量为qi.
矩阵分解的目标就是计算得到每个用户的因子向量pu和每个项目的因子向量qi,使得预测用户u对项目i感兴趣的程度uTuiipqr=能够尽可能的接近真实评分rui.
当给定的矩阵不完全时,此模型容易导致过拟合,因此,当前的很多研究都建议仅对存在的评分项进行建模,采用正则化[6]6-7模型避免过拟合问题,目标函数定义如式(2):22minnuipquikTuiuirpqpqλ∈++∑2||)(2)其中,λ参数用来正则化模型,称为正则化系数,k代表训练集中存在的评分项,求解上面的模型,目前常用的方法有两种:随机梯度下降法[11](SGD,stochasticgradientdescent)和交替最小二乘迭代法(ALS,alternatingleastsquares)[12].
1.
2Spark平台Spark是UCBerkeleyAMPLab开源的通用并行计算框架[13].
该框架提出了内存集群计算,通过将数据集缓存到内存中,减少数据的I/O操作,从而提高数据的读写速率.
Spark创新的提出了ResilientDistributedDataset(RDD)弹性分布数据集[14].
RDD本质是自定义的可并行的数据容器,不同的数据集格式对应不同类型的RDD.
弹性表现在若一个RDD分片丢失,Spark可以根据日志信息重构它;分布式表现在可以用操作本地集合的方式来操作分布式数据集.
此外,RDD可以被缓存在内存中,在之后的计算过程中可以直接从内存中读入,省去了大量的磁盘存取开销,适合需要迭代计算的矩阵分解算法.
图1显示了Spark的基本工作流程,每个SparkApplication都有自己的Executor进程,进程的生命周期和整个Application的生命周期相同,而且其内部维持着多个线程来并行的执行分配给它的Task.
这种运行模式有利于进行不同Application之间的资源、调度隔离.
SparkExecutorClusterManagerSparkContextSparkExecutor图1Spark基本工作流程图2基于spark矩阵分解并行化2.
1Spark下算法描述对于目标函数式(1),交替最小二乘方法在求解时可以固定P求解Q,然后再固定Q求解P,重复交替这两步直至算法收敛.
在实现上,SGD方法比ALS方法更容易实现,而且能够更快收敛,但是ALS算法更易于并行化,因此本文采用ALS算法.
本文中基于Spark的矩阵分解并行化,主要是基于图模型来完成的,用每个用户元组或项目元组作为图的顶点,这样评分矩阵R可使用如下二部图来描述,如图2所示:U1UserFactorItemFactorU2U3v1v2表示实际交互表示消息发送图2基于Spark的矩阵分解图示在Spark框架下的并行化,不同于Hadoop的并行化,Hadoop中,每个任务需要写一个MapReduce程序,那么实现一个需要多次MapReduce的操作就需要编写多个MapReduce任务实现并行处理.
而在Spark中,并行化主要是通过能对其进行并行操作的分布式数据集RDD实现的.
在需要并行化的时候,将数据按照指定的分片个数封装在RDD中不同的分区,然后对RDD进行map、filter、union等并行数据集的互相转化操,如图3所示,RDD中不同的数第*期郑凤飞等:基于Spark的矩阵分解推荐算法3据分区便可实现数据的并行处理.
对于矩阵分解的并行化,主要是通过设定RatingsOfUserBlock和RatingsOfItemBlock的分区数进行的.
由图3可以看出,在进行迭代计算时,用户对于项目的评分位于用户与项目交互的边上,评分时首先需要计算参数梯度,例如111lp和111lq(其中21()2Tuiuiuiplqr=),然后将这两个梯度更新的信息,也即用户或项目的因子矩阵更新信息发送给需要的顶点,即UpdateSendList中包含的顶点,在此图中接收的顶点为U1和V1,在各个顶点需要将接收到的所有梯度信息汇总,形成,再进行用户或者项目因子矩阵更新,即Updateuser或UpdateItem.
(,)uiuikl∈∑Map,filterunoin图3RDD分区操作示意图2.
2Spark框架下的矩阵分解并行化算法输入:评分数据及Ratings输出:矩阵分解模型1.
varpartitionNum//分区个数2.
varsc=newsparkContext()3.
读入数据生成Ratings:RDD[Rating],Rating是序列4.
依据用户设置或者默认的并行化数生成RatingsOfUserBlock和RatingsOfItemBlock的RDDRatingOfUserBlock:Ratingmap→RatingsOfItemBlockRatingmap→5.
生成基于User或者Item的InLinkRDD(内连接信息)和OutLinkRDD(外连接信息);6.
将内外连接信息缓存在内存中,避免重复计算;7.
以各自外连接信息初始化用户和项目的因子矩阵OutLink{(index,itr)itermap→(x,y)}mapPartition→8.
WhileiterUbuntu12.
10,Spark版本1.
2.
0.
实验采用来自GroupLens[15]网站的MovieLens作为数据源,文中使用了ml-100k的数据包,其中包括了943个用户对1682部电影的90571条评分记录.
从数据包中分别选取50、200、400、800和943个用户作为实验数据,得出在不同节点下算法的运行时间,如图4所示.
00.
30.
60.
91.
21.
51.
82.
12.
402004006008001000运行时间/min用户数(无单位)单节点2节点3节点图4并行化运行时间比较从实验结果图中可以看出,对于同规模的数据集,增加Slave节点的数量可以减少运行时间,提高算法的执行效率,而且用户数据集越大,Spark集群的耗时增长更趋平滑,这体现了Spark基于内存计算的实时性优势.
同时,对于同一数据集2节点与单节点的运行时间差小于2节点与3节点的时间差,这是因为两个节点的Spark集群包括一个Master节点和Slave节点,Master节点除了负责计算任务外还需要负责集群的任务分配.
实验采用Speedup[16]衡量同一数据集下增加节点时并行算法的表现.
1()1,2,.
.
.
.
pSpeeduppTTp==(3)式(3)中,T1为单个节点执行任务的时间,Tp为p个节点执行任务的时间,理想情况下依次增加节点时(如从一个节点增加到3个节点)Speedup与直线y=x重合.
从图5中可以看出本实验Speedup值达到了线性的结果,可以预期对更大规模的数据处理时,Speedup性能会进一步提升,表明该算法可以提高矩阵分解算法在大规模数据下的执行效率.
4计算机应用第35卷00.
30.
60.
91.
21.
5RMSE(无单位)非分布式分布式图5并行化性能比较实验采用RMSE作为评价标准[17],RMSE通过计算实际的用户评分与预测的用户评分与之间的偏差来衡量推荐的准确性.
其公式为:21()niiiprRMSEN==∑(4)其中,N为项目数量,pi为实际评分,ri为预测的分数,RMSE越小,代表算法的推荐精度越高.
本文实现的矩阵分解推荐算法与传统矩阵分解算法的RMSE比较如图7所示:00.
30.
60.
91.
21.
502004006008001000RMSE(无单位)用户数(无单位)非分布式分布式图6RMSE比较从图6中可以看出,在用户数据集相对较小,数据稀疏的条件下,本文分布式算法的推荐精度优势不明显,而随着用户数据集逐渐扩大算法的推荐精度逐渐提高,与传统矩阵分解算法的推荐精度基本相同.
这说明,本文提出的基于Spark的矩阵分解并行化算法可以适应海量数据背景下的推荐.
4结语本文介绍了传统矩阵分解算法和Spark云平台的概况,根据Spark的编程模型,将传统的矩阵分解推荐算法改进为适应Spark平台的并行矩阵分解推荐算法.
实验结果表明,基于Spark的矩阵分解推荐算法能带来较高的加速比,从而提高了矩阵分解算法在大规模数据下的执行效率.
但是也存在不足之处,在用户数据集相对稀疏的情况下,该算法的精度优势不明显,这说明该算法在应对数据稀疏方面还有待进一步的改进.
参考文献[1]LIUZB,QUWY,LIHT,etal.
AhybridcollaborativefilteringrecommendationmechanismforP2Pnetworks[J].
FutureGenerationComputerSystems,2010,26(8):1409–1417.
[2]BREESEJS,HECKERMAND,KADIEC.
Empiricalanalysisofpredictivealgorithmsforcollaborativefiltering[C],Proceedingsofthe14thConferenceonUncertaintyinArtificialIntelligence,NewYork:ACM,1998:43-52.
[3]SARWARB,KARYPISG,KONSTANJ,etal.
Item-basedcollabora-tivefilteringrecommendationalgorithms[C],Proceedingsofthe10thInternationalConferenceonWorldWideWeb.
NewYork:ACM,2001:285-295.
[4]VOZALISMG,MARGARITISKG.
ApplyingSVDonitem-basedfiltering[C],Proceedingsofthe5thInternationalConferenceonIntelligentSystemsDesignandApplications.
Washington,DC:IEEE,2005:464-469.
[5]YANGY,XIANGY,XIONGL.
Collaborativefilteringrecommendationalgorithmbasedonmatrixfactorizationusernearestneighbormodel[J],JournalofComputerApplications,2012,32(2):395-398.
(杨阳,向阳,熊磊.
基于矩阵分解与用户近邻模型的协同过滤推荐算法[J].
计算机应用,2012,32(2):395-398.
)[6]PATEREKA.
Improvingregularizedsingularvaluedecompositionforcollaborativefiltering[C],//ProceedingsofKDDCupandWorkshop.
NewYork:ACM,2007:5-8.
[7]NETFLIX.
Netflixprize[EB/OL].
[2015.
1.
10].
http://www.
netflx.
com[8]GEMULLAR,HAASPJ,SISMANISY,etal.
Large-scalematrixfactorizationwithdistributedstochasticgradientdescent[J],.
KDD,2011:69--77.
[9]ZHANGY,CHENGJJ.
StudyonrecommendationalgorithmwithmatrixfactorizationmethodbasedonMapReduce[J].
ComputerScience,2013,40(1):19-18.
(张宇,程久军.
基于MapReduce的矩阵分解推荐算法研究.
计算机科学,2013,40(1):19-21)[10]KORENY,BELLR,VOLINSKYC.
Matrixfactorizationtechniquesforrecommendersystems[J].
Computer,2009,42(8):30-37.
[11]TAKACSG,PLIASZYI,NEMETHB,etal.
Investigationofvariousmatrixfactorizationmethodsforlargerecommendersystems[C]//ProceedingsoftheIEEEInternationalConferenceonDataMiningWorkshops.
WashingtonDC:IEEE,2008:553-562.
[12]PILASZYI,ZIBRICZKYD,TIKKD.
Fastals-basedmatrixfactorizationforexplicitandimplicitfeedbackdatasets[C]//ProceedingsofthefourthACMconferenceonrecommendersystems.
NewYork:ACM,2010:71-78.
[13]JONESMT.
Spark,analternativeforfastdataanalytics[EB/OL].
[2015.
1.
10].
http://www.
ibm.
com/developerworks/library/os-spark/.
[14]ZAHARIAM,CHOWDHURYM,DAST,etal.
Resilientdistributeddatasets:afault-tolerantabstractionforin-memoryclustercomputing[D].
California:UniversityofCalifornia,2011.
[15]GROUPLENS.
Grouplens[EB/OL].
[2015.
1.
20].
http://www.
grouplens.
org.
[16]ZHANGJ,LIT,DAR,etal.
Aparallelmethodforcomputingroughsetapproximations[J].
InformationSciences,2012,194(5):209–223.
[17]RICCIF,ROKACHL,SHAPIRAB,etal.
RecommenderSystemsHandbook[M].
Germany:Springer,2011:109.

ProfitServer$34.56/年,5折限时促销/可选西班牙vps、荷兰vps、德国vps/不限制流量/支持自定义ISO

ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...

Hosteons:新上1Gbps带宽KVM主机$21/年起,AMD Ryzen CPU+NVMe高性能主机$24/年起_韩国便宜服务器

我们在去年12月分享过Hosteons新上AMD Ryzen9 3900X CPU及DDR4内存、NVMe硬盘的高性能VPS产品的消息,目前商家再次发布了产品更新信息,暂停新开100M带宽KVM套餐,新订单转而升级为新的Budget KVM VPS(SSD)系列,带宽为1Gbps端口,且配置大幅升级,目前100M带宽仅保留OpenVZ架构产品可新订购,所有原有主机不变,用户一直续费一直可用。Bud...

炭云188元/年,上海CN2 VPS/2核/384MB内存/8GB空间/800GB流量/77Mbps端口/共享IP

炭云怎么样?炭云(之前的碳云),国人商家,正规公司(哈尔滨桓林信息技术有限公司),主机之家测评介绍过多次。现在上海CN2共享IP的VPS有一款特价,上海cn2 vps,2核/384MB内存/8GB空间/800GB流量/77Mbps端口/共享IP/Hyper-v,188元/年,特别适合电信网络。有需要的可以关注一下。点击进入:炭云官方网站地址炭云vps套餐:套餐cpu内存硬盘流量/带宽ip价格购买上...

ubuntu12.10为你推荐
lcoc.top日本Ni-TOP是什么意思?partnersonline国内有哪些知名的ACCA培训机构www.hyyan.comdota屠夫怎么玩?从初期到后期的装备是什么?baqizi.cc和空姐一起的日子电视剧在线观看 和空姐一起的日子全集在线观看干支论坛干支计时的干支计时猴山条约中国近代史领土被割占去了多少,包括战争中失去的和吞并的总数莱姿蔓不蔓不枝的蔓是什么意思云鹏清1840年-1901年西方强逼中国签订了哪些不平等合约长房娇人物描写片段,不用太长,150字左右,要有出处!急!!!!!www.38.com俺去也的最新网址是什么?
域名转让网 免费域名空间申请 工信部域名备案系统 a2hosting uk2 webhostingpad themeforest 网站监控 好玩的桌面 typecho 免空 web服务器的架设 老左正传 adroit 亚马逊香港官网 根服务器 便宜空间 下载速度测试 全能空间 ledlamp 更多