基于Spark的分布式实时推荐系统
本作品内容为基于Spark的分布式实时推荐系统,格式为 docx ,大小 43188 KB ,页数为 6页
('基于Spark的分布式实时推荐系统王佳娴;王中杰【摘要】提出了一个基于Spark的分布式实时推荐系统(RS).该系统应用MovieLens数据集,在Spark平台上实现了基于模型的协同过滤(CF)算法,并在SparkStreaming框架上运用该算法进行测试,评估实时推荐中算法的可靠性.%Adistributedreal-timerecommendationsystem(RS)basedonSparkisproposedinthispaper.Amodelbasedcollaborativefiltering(CF)algorithmisimplementedonSparkplatformusingMovieLensdataset.Then,thealgorithmistestedontheSparkStreamingframework,andthereliabilityofthealgorithmisevaluated.【期刊名称】《系统仿真技术》【年(卷),期】2017(013)002【总页数】4页(P158-161)【关键词】推荐系统(RS);协同过滤(CF);流式数据;Spark【作者】王佳娴;王中杰【作者单位】同济大学电子与信息工程学院,上海201804;同济大学电子与信息工程学院,上海201804【正文语种】中文【中图分类】TP391.3随着信息产业的飞速发展,用户在面对互联网上海量信息时,难以迅速有效地找到自己想要的内容,这就形成了网络信息过载。推荐系统(RS)[1]是一种用来解决信息过载问题的工具,它的基本任务是联系用户和信息(或项目),一方面帮助用户发现自己感兴趣的信息,另一方面让信息能够呈现在可能对它感兴趣的用户面前。然而,在真实系统中,用户兴趣是不断变化的,如何根据变化的用户数据更新推荐结果,即在线处理流式数据是实时推荐系统不可避免的问题。协同过滤(CF)[2]是应用最广泛、最成功的推荐系统。在目前的协同过滤研究中,大多是通过单节点进行实验和调试的。随着大数据时代的到来,推荐系统需要存储的用户数据和项目数据迅速增长,在单节点上计算并实现这些算法非常慢,推荐周期很长,难以进行实时推荐。此外,更新和反馈很慢,无法捕捉用户兴趣的变化,也会导致用户体验不佳。因此,需要对这些算法进行并行改进,提高算法计算效率,从而加速推荐结果的产生,以适应用户兴趣的变化。目前的数据并行处理平台有两种,即Hadoop和Spark[3]。Hadoop的MapReduce[4]模型不适合描述复杂的数据处理过程。每次MapReduce计算步骤完成之后,不必要地把数据写到磁盘上再读出,才能继续下一个节点,同时整个计算模型需要网络传输,这就增加了输入输出(I/O)传输开销。Spark是一个新兴的大数据处理引擎,编程操作都是基于对弹性分布式数据集(RDD)的操作完成的。它的Job中间输出和结果可保存在内存中,减少了访问硬盘输入/输出传输次数,可以有较高的运算速度,更适合数据挖掘与机器学习等需要多次迭代的MapReduce算法。本文在Spark平台上实现了基于该模型的协同过滤算法,并在SparkStreaming框架上运用该算法进行测试,评估实时推荐中算法的可靠性。1.1环境说明本文中搭建的Spark集群采用实验室的三台普通个人计算机,包括一个Master节点和两个Slave节点,三个节点均为Ubuntu14.10系统,节点之间局域网连接[5]。具体情况如表1所示。1.2软件安装JavaJDK用的是jdk-7u75-linux-i586.gz,Hadoop版本为Hadoop-2.6.0.tar.gz,安装过程中最重要的一点就是配置安全外壳协议(SSH)实现无密码远程登陆与管理。搭建好Hadoop集群之后,在此基础上进行Spark的安装,其版本为Spark1.2.0,开发环境为IntelliJIDEA14.0.3,对应的Scala为scala-sdk-2.10.4。所有软件在三台机器上安装并配置好后即可启动Spark分布式集群。基于模型的协同过滤[6]是一个典型的机器学习问题,它主要基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好信息进行预测,并计算推荐。协同过滤的核心在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。该算法性能的优劣关键在于好的模型建立与否,因为好的模型相对原始数据集而言小得多,却能挖掘出用户和项目之间更多的潜在关系,在一定程度上不仅有效缓解了推荐算法的实时性问题,还有效解决了用户-项目评分矩阵的稀疏性问题,在推荐性能上更优。本文主要介绍基于交替最小二乘法(ALS)的矩阵分解算法[7],它属于基于隐语义模型的协同过滤推荐算法。在这个模型里,用户和商品通过一组隐性因子进行表达,并且这些因子也用来预测缺失的元素,那么学习这些潜在因子方法的选择就显得尤为重要。本文采用交替最小二乘法,它是一种求解矩阵分解问题的最优化方法,功能强大、效果理想而且被证明相对容易并行化,这使得它很适合如Spark这样的平台[8]。交替最小二乘法的实现原理是利用迭代式求解一系列最小二乘的回归问题。在每一次迭代时,固定用户因子矩阵或物品因子矩阵,然后用固定的这个矩阵以及评级数据来更新另一个矩阵。之后,被更新的矩阵被固定住,再更新另外一个矩阵。如此迭代,直到模型收敛(或是迭代了预设好的次数)。基于交替最小二乘法协同过滤算法的具体原理如下[9]:对于m×n的用户-项目评分矩阵R,希望找到一个低秩的矩阵X来逼近评分矩阵R,如下所示:R≈X=UVT其中,U∈Cm×d,V∈Cn×d,d表示特征值的个数,一般dr,r≈min(m,n),r≪表示矩阵R的秩。Funk将损失函数定义为为了防止过拟合,给式(2)添加二阶正则化项,则式(2)可以改写为固定V,对Ui求导,,得到式中:Ri.表示用户i对项目的评分向量;Vui表示由用户i评价过的项目的特征向量组成的特征矩阵;I为一个d×d的单位矩阵;nui表示用户i评价过的项目数量;λ为正则化参数;T为训练集。同理,固定U对Vi求导,得到式中:R.j表示给项目j评过分的用户的评分向量;Umj表示由为项目j评过分的用户的特征向量组成的特征矩阵;nmj表示为项目j评过分的用户数量。用均值为0、偏差为0.01的高斯随机数初始化矩阵V,然后用式(4)更新U,再用式(5)更新V,直到算法的均方根误差收敛或迭代次数足够多而结束为止。算法步骤归纳描述如下:(1)用小于1的随机数初始化V。(2)利用式(4)固定V求解U。(3)利用式(5)固定U求解V。(4)重复步骤(2)、(3)直到均方根误差值收敛或达到最大迭代次数。(5)输出矩阵U、V。(6)输出逼近矩阵X。在Spark上实现算法时,首先将原始的数据集存放在Hadoop分布式文件系统(HDFS)上,然后读取HDFS上的数据,并将其转化为压缩矩阵,根据转化后的矩阵数据创建弹性分布式数据集,最后将每次迭代产生的中间数据U和V及数据集缓存到内存中[10]。3.1实验数据集本实验使用的是MovieLens数据集[11],包括943个用户对1682部电影的100000条评分记录,评分值都是1到5的整数值。为了模拟用户在网站上的实时评分行为,由SocketDataGenerator程序模拟生成实时流数据,并不断写入MySQL的评分表中。3.2评价指标评价一个推荐系统是否具有满意的推荐准确性,通常通过计算与实际用户评分偏差的方法,采用如下评价指标:平均绝对误差和均方根误差[11]。假设n个项目预测评分向量为(p1,p2,…,pn),对应的实际评分集合为{r1,r2,…,rn},两个指标的计算公式分别如下所示:(1)平均绝对误差通过计算预测值与真实值的平均绝对误差来衡量推荐的准确性,该评价指标计算相对简单,而且容易理解。(2)均方根误差均方根误差是用户的实际评分值与预测值的误差平方根,由于它在计算误差总和之前对真实值与预测值的误差进行了平方,所以预测的误差越大,对均方根误差的影响就会越大。3.3模型最佳参数从该数据集中随机抽取80%的评分数据作为训练集,剩下的作为测试集,来测试交替最小二乘法矩阵分解模型的最佳参数。对参数列表的全排列分别进行模型训练,并计算平均绝对误差和均方根误差,得出最佳参数组合,结果如表2所示。本实验选取的因子矩阵维数为5、8和10,正则化参数为0.10和0.01,迭代次数为7,这三个参数相互组合时对推荐结果的影响如表2所示。由表2可以看出,当因子矩阵维数为10,为0.10,迭代次数为7时,推荐结果最好。3.4SparkStreaming测试在系统的初始化阶段,推荐引擎从数据库中读取评分数据,并由算法测试时得到的最佳参数组合对其进行训练,得到最开始的模型,然后用该模型对关系型数据库管理系统(MySQL)中的用户推荐评分最高的前10个项目,其结果也保存在MySQL中。在完成初始化后,开始进行实时推荐。为了模拟用户在网站上的实时评分行为,本节利用SparkStreaming框架进行云制造环境下的流式数据测试实验[12]。系统不断接收由SocketDataGenerator程序模拟生成的用户行为数据,并和MySQL中的原始数据混合,训练出新的模型,产生推荐结果并保存。不断地进行流数据的读取、训练和保存推荐结果这一过程,直至系统关闭或者无流数据产生。在系统初始化阶段,推荐系统从数据库中读取评分数据,并由算法测试得到的最佳参数组合来对其进行训练,得到最开始的模型,如图1所示。在实时推荐阶段,推荐系统循环进行流数据的读取、模型的训练,如图2所示。推荐结果保存在MySQL中,可以通过执行selectfromresult;语句获取。第一列是用户编号,其余项则是推荐给该用户的评分排名前10的项目,评分从高到低,以“项目ID:评分”的格式顺次列出,如图3所示。本文应用MovieLens数据集,在Spark平台上实现了基于模型的协同过滤算法,通过模型训练找到最优参数组合,并在SparkStreaming框架上运用该算法对流式数据进行测试,评估实时推荐中算法的可靠性。王佳娴女(1992-),江苏常州人,硕士生,主要研究方向为控制理论与控制工程、分布式计算等。王中杰女(1971-),辽宁葫芦岛人,教授,博士生导师,主要研究方向为优化理论与应用、智能系统与信息处理等。【相关文献】[1]RESNICKP,VARIANHR.Recommendersystems[J].CommunicationsoftheACM,1997,40(3):56-58.[2]GOLDBERGD,NICHOLSD,BRIANMO,etal.Usingcollaborativefilteringtoweaveaninformationtapestry[J].CommunicationsoftheACM,1992,35(12):61-70.[3]GUPTAS,DUTTN,GUPTAR,etal.SPARK:ahighlevelsynthesisframeworkforapplyingparallelizingcompilertransformations[C]∥InternationalConferenceonVLSIDesign.NewDelhi:VLSIDesign,2003:461-466.[4]DEANJ,GHEMAWATS.Mapreduce:simplifieddataprocessingonlargeclusters[J].CommunicationsoftheACM,2008,51(1):107-113.[5]于娜娜,王中杰.基于Spark的协同过滤算法的研究[J].系统仿真技术,2016(1):2-3.YUNana,WANGZhongjie.ResearchoncollaborativefilteringalgorithmbasedonSpark[J].SystemSimulationTechnology,2016(1):2-3.[6]SCHAFERJB,DANF,HERLOCKERJ,etal.Collaborativefilteringrecommendersystems[C]∥InternationalConferenceonIntelligentSystemsDesign&Applications.WashingtonDC:IEEE,2007:438-443.[7]PANR,ZHOUY,CAOB,etal.One-classcollaborativefiltering[C]∥DataMining,EighthIEEEInternationalConference.WashingtonDC:IEEE,2008:502-511.[8]杨志伟.基于Spark平台推荐系统研究[D].合肥:中国科学技术大学,2015.YANGZhiwei.Theresearchofrecommendationsystembasedonsparkplatform[D].Hefei:UniversityofScienceandTechnologyofChina,2015.[9]李改,李磊.基于矩阵分解的协同过滤算法[J].计算机工程与应用,2011,47(30):4-7.LIGai,LILei.Anewalgorithmofcold-startinacollaborativefilteringsystem[J].ComputerEngineeringandApplications,2011,47(30):4-7.[10]宁永恒.基于Spark的若干数据挖掘技术研究[D].杭州:中国计量学院,2015.NINGYongheng.StudyofsometechniquesindateminingbasedonSpark[D].Hangzhou:ChinaJiliangUniversity,2015.[11]刘建国,周涛,郭强,等.个性化推荐系统评价方法综述[J].复杂系统与复杂性科学,2009,6(3):1-10.LIUJianguo,ZHOUTao,GUOQiang,etal.Overviewoftheevaluatedalgorithmsforthepersonalrecommendationsystems[J].ComplexSystemsandComplexityScience,2009,6(3):1-10.[12]岑凯伦,于红岩,杨腾霄.大数据下基于Spark的电商实时推荐系统的设计与实现[J].现代计算机(专业版),2016(24):61-69.CENKailun,YUHongyan,YANGTengxiao.DesignandimplementationofrealtimerecommendationsystembasedonSparkinbigdata[J].ModernComputer(ProfessionalEdition),2016(24):61-69.',)
提供基于Spark的分布式实时推荐系统会员下载,编号:1700775099,格式为 docx,文件大小为6页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。