基于Spark的推荐系统的设计与实现

所需积分/C币:36 2018-06-20 11:23:23 516KB PDF

推荐系统是数据挖掘的一个重要部分,能够实现海量数据信息的快速、全面、准确过滤。然而基于以往传统单个主机模式实现的推荐算法其计算过程耗费的时间过长,已经不能满足当前商业时代快速可靠的技术追求。大数据平台Spark分布式计算框架通过引入RDD(弹性分布式数据集)的概念以及基于内存的运算模式,能够更好的适应大数据挖掘这一应用场景。推荐算法在实现过程中存在多次迭代计算,Spark计算框架的使用可以极大提升推荐系统的运算效率。本文利用Spark平台设计了一个基于物品的协同过滤(Item-CF)算法的商品推荐系统,并将其应用在Movie Lens数据集上运行测试。实验结果表明,该系统能够提高推荐精确度并降
Executor并发执行。 Worker node Cache Task Task Driver Progran Sparkcontext.4 Cluster manager Worker node ①初始化 SparkCantext ②申请资源 Executor Cache ③初始化 Executor ④解析RDD,划分 Stage,调度任务 Task Task ⑤发送任务到 Executor 执行计算任务 ⑦返回计算结果 ⑧米闭 SparkCont.ex,回收资源 图1 Spark工作流程 1.4环境说明 本文中搭建的Sark集群采用了实验室中的四台普通计算机,组成了一个 Mastor主节点和 三个 Slave节点的运行环境,节点均采用 Centos6.5 Linux系统,节点之间使用局域网进行网络连 接,同时以上节点还运行了分布式文件存储系统HDFS的服务。只体情况如表1所小 表1节点具体说明 主机名 地址 作用 Sparko1 192 168 1.11 NameNode, Master Spark02 192 168 1.45 DataNode, Worker Spark03192.168 1.46 DataNode, Worker Spark04 192 168. 1.47DataNode,Worker 1.5软件安装 本系统 Java jDK的安装包采用jdk-7u79-1inux-x64.tar.gz, Scala的安装包采用 scala- sdk-2.10.4.tar.gz, Hadoop安装包采用 hadoop-2.5.0-cdh5.3.6.tar.gz,在系统软件安装过稈 中最重要的一点就是要配置安全外壳协议(SH)以便实现远程无密码登陆与管理。在完成 Hadoop 集群的配置安装之后,在此基础上进行 Spark的安装, Spark安装包采用 Spark1.5.1.tar.gz, 软件开发环境采用 IntellijIDEA2017.2.1。集群所有软件在安装并配置完毕后即可启动 Spark 分布式集群进行测试。 2推荐系统 2.1推荐系统概述 如今推荐系统已经普遍应用于电商、新闻、地理位置等诸多领域。比如在电商领域,推荐系 统实现的功能就是根据已有的信息,物品信息,用户信息,用户行为信息等,将相应的物品推荐 给用户。常见的推荐任务主要有两种;评分预测和Top-N推荐。对」用户U,评分预测的任务是 预测U对某物品可能的打分,而Top-N推荐则是为用户U推荐N个他可能感兴趣的物品。这两种 推荐的依据都是用户、物品自身的信息及用户过去的行为记录做出的预测。 2.2协同过滤算法 协同过滤( Collaborative Filtering,CF)算法的核心思想就是利用群体的智慧来进行事物 推荐。协同过滤按照参照物的不同主要可分为基于用户的协同过滤( User- based ce)和基于物品 的协同过滤(Item- based CF)两种。User- based CF在推荐时首先根据行为记永找到相似用户 (即人以群分),然后根据相似用户进行推荐。Item- based cF最初由 Amazon提出并应用,基于 物品协同过滤算法不是计算用户间的相似度,而是计算物品间的相似度(即物以癸聚),将与目 的用户偏好过的商品的相似商品作为候选推荐列表推荐给日的用户。对于大型电子商务平台而 言,商品更新速率较慢并且商品的数目远小于用户数目,计算物品相似度开销远远比计算用户相 似度开销小,因而基于物品协同过滤算法(Item- based cF)的稳定性比基于用户协同过滤算法 User- based ce)更高。故本系统采用是基于物品协同过滤的TopN推荐 2.3基于物品协同过滤算法的基本思路 Item- based CF的基本思路和流程如下: 1)收集用户的历史行为数据,进行初步的减噪和归一化处理。即统计得出物品-用户评分矩阵, 用以表示具体每件物品被哪些用户袢分过,该表其实是由用户-物品评分表(如表2所示)转置得 到,而用户-物品评分矩阵则是每位用户对物品的历史评分记录,如表2所示。推荐系统屮)要 有显式评分与隐式评分两种评分方式。其中显示评分指的是用户对物品的评价直接用具体分数来 表小,比如平时比较常见的用户对某种物品的喜好程度可以由1至5分来量化;而隐式评分则只 是依照用户对于某种物品有没有购买、是否浏览过、评论过等行为,如果有相关行为则评分为1 无则评分为0。J是,可以得到一个N×M矩阵R如式2-1所示 R 72M 2-1) 2 NM 其屮,N表示用户数量,M表示物品数量,F:表示用户L2对物品m.的评分。若用户,对物品m进 行了评分,则;≠0,否则r2=0。由于本文采用隐反馈方式,所以F,的取值只能是1或0。 表2用户物品评分表 用户 物品 0 2)计算物品之间相似度 找到与物品最相似的N个物品集合,物品m和n的相似度可使用以下佘弦相似度公式(2-2)计算 N 其中N(m)表示所有拥有物品m的用户集合,(n)表示所有拥有物品n的用户集合。使用相 似度计算公式可计算出示例表2中物品m1,m2以及m1,m3的相似度 422}⌒,42, 1,21x1,w2,u2 u,n SU7 由结果可知m1、m2间有更大的相似度,因此在一位新用户购买m1的时侯,可优先将m2高 品推荐给他 在示例计算的过程中可发现此方法实际上会对比物品空间中的所有物品,致使其时间复杂度 较高,为0(n2)。然而一个大型数据集中,会出现很多物品并没有共同用户交集的情况,因此在 实际的操作中,建立用广-物品倒排表可以优化计算,如下图2所示。其中矩阵W′中的值为公 式(2-2)的分了的值。 h l L 3 1 0 图2用户物品倒排表生成过程 3)计算出物品之间的相似度后,根据用户的历史物品表再计算出用户物品兴趣度,以此进行物 品推荐。用户u对物品m的兴趣度如下公式(2-3): int erest(u, m)= mn un (2-3) H∈N(m,k^N(u) 其中 1nt erest(L,m)表示用户u对物品m的兴趣度,M(m,k)表示与物品n最相似的K件物品 集合,M(m)表示用广u现已拥有的物品集合,sim表示物品m和物品n之间的相似度,r表 示用户u对物品n的兴趣值(若只考虑隐式反馈数据,ln为1)。 2.3推荐系统评价指标 个推荐系统的性能好坏可以用以下评测指标来评定 (1)淮确率( Precision) 准确率是一个非常重要重要的性能指标,它直接关系到推荐系统服务质量的好坏。若推荐系 统向用户u摧荐了M件物品,推荐集合可记为Ru),而用户在测试集T上的喜好物品项集合记 为T(u),则准确率计算公式如下(2-4): ∑R()⌒7(a) Precision R(2 准确率指的是向用户推荐的集合项Rω)中,有多少件物品属于正确推荐,即推荐正确项占 推荐列表的比例。 (2)召回率( Recall) 召叫率指的是用户喜好的集合项T(u)中,含有多少推荐系统止确推荐的物品,即推荐止确 项占真实喜好列表的比例,召回率反玦了推荐系统推荐项的覆盖率,只体公式如下(2-5): ∑R(n)⌒T(m) Recall (2-5) T() (3)覆盖率( Recover) 覆盖率指的是推荐集合项(c)在供应尚提供的物品总量中所占的比例,具体公式如下 (2-6) Recover Cusu r(()l (2-6) 上式中U表示所有被推荐用户,Ⅰ表示供应商提供的所有物品项。覆盖奉描述了推荐系统对 物品长尾的发掘能力。 (4)均方根误差(RMSE) 在推荐系统屮,均方根误差要是对评分预测进行评估。通常需要依照一定的方式将数据集 切分为训练集和测试集,然后在训练集上训练用户的兴趣模型,即对物品的评分预测。在测试集 中,假设用户物品对为(υ,m,用户对物品的真实的评分为γ,模型训练出来获得的预测评 分为,可用RMSE来表示最终预测的精度,公式如下(2-7): RMSE- u,m∈Twn (2-7) 依据准确率和召回率公式定义可知,准确率和召回率往往是两个相工矛盾的指标参数。系 统推荐并且用户真实喜好旳物品项集与系统推荐的物品项之间的比值越大,准确率就越大:系统 推荐的物品项集中用户真实喜欢的物品越多,召回率也越人。如果推荐系统推荐的物品很多,虽 然召回率可能提高,准确率也会有所下降;因此如果希望推荐系统更加准确,就要推荐物品数量 定要适当。 3 Spark平台推荐算法并行化实现 3.1基于物品的协同过滤推荐算法(ltem- based CF)的 Spark并行化实现流程 Item-based ce算法的核心思想是对用户推荐与其已喜欢物品相似的不同物品。其中比较关 键的几个参数及公式为用户-历史评分矩阵Rmn,物品之间的相似度计算公式Simm用户对物品 兴趣度计算公式 int erest(,m),详细参见公式(2-2),(2-3)。本系统以电影推荐为背景,测试 数据集选取绎典的 Movielens数据集,该数据集记录了用户评分记录。本文采用100万条记录 作为实验数据集,将数据集文件下载并解压后,其中的 users.dat文件记录所有用户相关信息; movies.dat文件存储的是电影自身信息,包括电影名、类型、年份等。 ratings.dat文件记录用 电影的评分信息及时间戳:每条评分记录的格式为 userid:: itemid: rating: times tam, 前三项是我们需要的薮据资源。基于物品的协同过滤推荐算法具体沇程如图3所示 输入: userid, itemid, rating 输出:用户最感兴趣的N个物品项 (1)计算用户对物品的喜好:采用隐反馈数据原则对每个用户给物品的评分进行预处理操作。数 据处理如下:用户评分的物品记为1;反之记为0; (2)统计每个物品数好评总数;可设置阈值,低于指定数的物品不参与后续计算 (3)统计物品-好评键倌对,对两个相关联的物品之间的共同用户数进行统计(也可设置阈值); (4)计算仟意两个有关联物品的相似度; (5)根据兴趣度向用户推荐N个最感兴趣的物品; 数据读入、创建RDD 相似度计算 推荐列表生成 目的用户 用户钧品侧排表 L 集加载 用户商品袢价分 数加线 改据过运处理操 目的片户偏 好过的商品 的邻商品 统计两两商品 TOPN推荐商 被偏好用 间共同被偏好 品生成 户数 用户封 稀疏评分 商品被偏 两两商品共同 好用户总 波偏好用户总 End 数RDD 商品间相似度 计算 图3基于 Spark的商品协同过滤算法流程图 32实验与结果分析 系统基于 Spark平台推荐算法并行化实现,并测试计算推荐系统的相关评测指标:准确率、 召冋率、覆盖率等。实验中训练集占数据量75%,测试集占数据集总量的25‰。根据不同的参数 设置,每个实验均进行4次,并求得4次结果的平均值作为最终的测试结果如表3所示 表3基于物品协同过滤推荐算法在不同推荐列表长度(L值)时的性能 准确率召回率 覆盖率 20.74%10.23% 15.37% 40 9.S2% 60 18.36% 9.57% 13.75% 8 793%19.02% 12.87% 分析:从上表可以看出,基于物品协同过滤推荐算法屮准确率与召回率并不是和推荐列表长 度成线性关系,并且当推荐列表长度为20时,系统的准确率与召回率会比较高,由此可以看出 推荐列表长度的选择是基于物品协同过滤推荐系统性能的重要影响因素。而对匕覆盖率可发现覆 盖率随着L值的增长越来越低,具此分析是因为当推荐列表长度不断增加时,推荐算法越来越倾 向于推荐比较热门的电影所致。 4结束语 大数据时代互联网中藴藏着海量富有价值的信息资源,如何更加忺速有效地从中挖掘有用信 息正是大数据应用平台需要考虑解决的问题。而用户推荐这一应用场景,正是从海量数据中挖掘 有用信息的典型案例。研究表明, Spark计算框架相比传统的 MapReduce框架具有更强的并行计算 能力。并且推荐算法中需要进行连续达代计算,这需求也恰好使之丰常适合运行在 Spark半台 之上。木文以设计并实现一个大数据坯境下的推荐系统为主线,介绍了大数据相关技术和推荐系 统相关概念,实现了基于 Spark的Item-CF推荐系统,并在数据集 Movielens下进行了相关指标的 测评,结果显示推荐系统能够较好完成推荐仼务,达到了设计前的预期。下一步的工作将针对电 商平台中日益多样化的用户行为,设计多种的数据处理方式,优化推荐算法引擎,提升系统的通 用性和可靠性。 参考文献 L1 Chen M, Mao S, Liu Y Big data: a survey lj. Mobile Networks and Applications, 2014, 19(2) 71-209 [2]项亮.推荐系统实践[M].北京:人民邮电出版社,2012年6月:1-34 [3 Resnick P, lacovou N, Suchak M, et al. GroupLens: an open architecture for collaborative filtering of netnews[c]. Proceedings of the 1994 ACM conference on Computer supported cooperative work. ACM 1994: 175-186 [4 Zaharia M, Chowdhury M, Franklin MI, ct al. Spark: cluster computing with working scts[C1// Proc of Usenix Conference on Hot Topics in Cloud Computing. [S 1.]: L'SENIX Association, 2010 10-10 []高彦杰. Spark大数据处理,技术、应用与性能优化[C].北京:机械I业出版社,2015:215-217. L6 Shvachko K, Kuan g H, Radia S, et al. The hadoop distributed file system[C]// Mass Storage Systems and Techno logics (MSST), 2010 IEEE 26th Symposium on. IEEE, 2010: 1-10 [7. Han Z, Zhang Y Spark: A Big Data Processing Platform Based on Memory Computing[C]//Proc of International Symposium on Parallel Architectures. [S.1.]: IEEE Press, 015: 172-176 []梁彦.基于分布式平台Sipκk和YARN的数据挖掘算法的并行化硏究[U].中山大学,2014. [9]郭景瞻.图解 Spark核心技术与案例实战[M].北京:中国工信出版集团,2017:48. 「10于娜娜,王屮杰.基于 Spark的协同过滤算法的研宄「.系统仿真技术,2016,12(1):41-44 11]王全民,苜雨,何明,郑爽.基于矩阵分解的协同过滤算法的并行化研究[J计算机技术与发展,2015, 25(2):55-59 [12]Jiawei Han, Micheline Kamber. Data Mining: Concepts and Techniques [M], Elsevier Science Publishers 2007: 237 [13]杨志伟.基于 Spark平台推荐系统研宄[D].合肥:中国科学技术人学,2015 [1l4]朱郁筱.推荐系统评价指标综述J].电子科技大学学报2012,41(2):163-175 [15]李现伟.基于 Spark的推荐系统的研究[D].浙江:沂江理工大学,2016 「161岑凯伦,于红岩,杨腾霄.大数据下基于 Spark的电商实时推荐系统的设计与实现「J.现代计算机(专业 版),2016,08(2):61-69 基金项目:国家自然科学基金(61572260); 作者简介:李早(1991),男(汉),硕士硏究玍,斫究方向为大薮据分析与应用:李涛(1964),男,顸士,副教授,研 宄方向为信号与信息处理在网络中的应用及新型网络中路由技术的研宄

...展开详情
img
qq_28339273

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐