基于Apache Spark协同过滤系统设计与实现.docVIP

基于Apache Spark协同过滤系统设计与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Apache Spark协同过滤系统设计与实现

基于Apache Spark协同过滤系统设计与实现   摘要:随着Web技术的发展,互联网用户数量持续增长,快速为用户生成精确推荐变得愈加困难。提出了项目协同过滤算法,采用余弦相似性计算项目间相似度并用加权平均值的方法为用户生成推荐结果。在Apache Spark上构建该系统,对抓取到的某电商商品数据进行测试。实验结果表明,基于Spark的推荐系统可以显著提高推荐生成的速度和有效性。   关键词:Apache Spark;协同过滤;推荐系统   DOIDOI:10.11907/rjdk.143871   中图分类号:TP319   文献标识码:A 文章编号文章编号2015)001009703   0 引言   协同过滤推荐在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该用户的喜好程度预测。   Spark[1]是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发,是MapReduce模型的实现之一,它提供的框架自动执行任务分解、发送、执行、归并、容错工作,免去了二次开发和定制专用的分布式调度系统。和Hadoop一样,建立在HDFS基础上,但它的Job中间输出和结果可保存在内存中,减少了硬盘I/O次数,因而可以有较高的速度,对迭代和多步骤运算有更好的支持能力。鉴于此,很多机器学习相关工作者都在研究和使用它。本文在学习Spark基础上,搭建了一个Spark平台,并在其上设计实现了一个协同过滤系统。   1 协同过滤算法设计   协同过滤系统一般分为基于用户的协同过滤、基于项目的协同过滤和基于模型的协同过滤[2]。基于用户的协同过滤假设:对同样的项目,如果用户间的评分结果较为相似,则他们对其它项目的评分也比较相似。此假设弊端是运算量随用户量和项目数量的增长而急剧增长。基于项目的协同过滤系统则通过计算基本稳定的项目间相似性作出推荐,意味着用户的偏好由系统中的项目唯一确定,因而有更好的可扩展性。   在一个典型的协同过滤场景中,有n个项目Ι={i1,i2,…,in}和k个用户U={u1,u2,...,uk},令Mk*n为基本用户对各项目的偏好矩阵。其中,Mu,i表示用户u对项目i的偏好,如评分,其值为实数或空,空表示当前用户尚未对项目作出评价。推荐系统的任务就是根据目标用户u∈U的评分历史,预测出用户最喜欢的项目。本文采用基于项目的协同过滤算法,使用余弦相似性计算项目间相似性,然后采用加权平均值的方法为用户生成推荐结果。   1.1 相似性度量方法   本文主要采用余弦相似性度量方法[2]计算用户间、项目间的相似性,这里以计算用户间相似性为例,其计算方法可表示为:   sim(ux,uy)=∑i∈Cux,uyrux,iruy,i∑i∈Cux,uyrux,i2∑i∈Cux,uyruy,i2(1)   其中,Cux,uy表示用户ux和uy共同评价过的项目i∈Ι的集,rux,i表示用户ux对项目i的评分,ruy,i表示用户uy对项目i的评分。相似性即两向量ux,uy的夹角余弦值,因为用户评分均为正数,故相似性取值范围为[0,1]。   1.2 加权平均值   在协同过滤算法中,计算出所有用户间的相似度后,就可以采用一种方法为给定的用户u∈U,预测出用户对所有尚未评价项目的评分。这里介绍一种最为简单、常用并且效果良好的方法:加权求和,表示为:pux,i=ux+∑uy∈Nux(ruy,i-uy)*sim(ux,uy)∑uy∈Nuxsim(ux,uy)(2)   其中,Nux 表示用户ux的邻居,sim(ux,uy)表示用户ux和uy的相似度。   2 推荐系统部署与设计   由于推荐系统的高度计算密集性,将推荐系统部署到单台机器上会有很大的限制,例如,CPU运算速度、内存大小和硬盘I/O能力等,更为重要的是如果此计算机发生故障,将面临数据丢失的风险。使用分布式计算环境可以大大缓解此类问题,如可在分布式运算框架Hadoop/MapReduce下实现推荐系统[4-6]。Spark是一个开源的Hadoop/MapReduce并行计算框架,本文在Spark平台上构建一个协同过滤系统。   2.1 软硬件配置   实验平台硬件采用Intel Core i5双核的普通PC,网络带宽为100Mbps,为提高虚拟机I/O速度,采用1条4G和1条8G DRR1333内存条,并搭载128GSanDisk固态硬盘。主机采用Windows 8.1 x64位系统,虚拟机采用开源的Oracle VM VirtualBox 4.3,虚拟主机系统采用开源

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档