logo资料库

论文研究-基于Spark的Web推荐系统的设计与实现 .pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 基于 Spark 的 Web 推荐系统的设计与实现 黄成,阮军** (武汉理工大学信息工程学院) 5 摘要:随着 Web 技术的高速发展,网络用户的数量的持续增长,网络资源的不断丰富,如何 为用户快速、准确的推荐高质量的结果变得十分重要。针对这个问题,本文设计并实现了一 个基于 Spark 的 web 推荐系统,该方案通过交替最小二乘法(ALS)的矩阵分解技术,对用 户-商品的评分模型进行分解,实现了对用户的推荐。实验结果表明通过 Spark 的并行化设 计能显著的提升推荐速度,通过 ALS 矩阵分解技术,相比基于内容的推荐,也有较大的准确 度的提高。 关键词:推荐系统;Spark;矩阵分解;交替最小二乘法 中图分类号::TP319 10 15 The design and implementation of a web recommendation 20 25 30 35 system based on Spark Huang Cheng, Ruan Jun (Information Engineering, Wuhan University of Technology) Abstract: With the rapid development of Web technology, the number of Internet users continues to grow, network resources continuously enriched, how users quickly and accurately recommend high-quality results become very important. To address this problem, we designed and implemented a web-based Spark's recommendation system, the program decomposition technique by alternating least squares (ALS) of the matrix, the user - commodities scoring model is decomposed to achieve recommended to the user. The results show that significant improvements can be via a parallel design of Spark recommended speed by ALS matrix decomposition technique, compared to content-based recommendation, but also a large increase accuracy. Key words: Recommended System; Spark; Matrix Decomposition; ALS 0 引言 随着互联网的迅猛发展,为了满足人们在繁多的信息中获取自己需要内容的需求,个性 化推荐应用而生。根据实现方式的不同,推荐系统可分为基于内容的推荐算法[1](Content Base,简称 CB)和协同过滤推荐算法[2](Collaborative Filtering,简称 CF),其中协同过滤 推荐是推荐系统研究领域最为著名和关注度最高的算法之一。基于不同的实现方式,协同过 滤算法可以分为两类:第一类是基于邻域的方法,比较典型的是基于用户的协同过滤[3] (User-base)和基于项目的协同过滤[4] (Item-base)。第二类是基于矩阵分解[5]的方法,比较 典型的有基于奇异值分解[6] ( Singular Value Decomposition,简称 SVD),隐语义模型[7](Latent Factor Model,简称 LFM)。 由于基于邻域的方法,需要计算用户(项目)之间的相似度,存在冷启动和数据稀疏性 的问题,同时基于邻域的方法,计算都是在内存中完成,需要消耗大量的系统内存,因此本 40 系统的设计采用矩阵分解的方法作为推荐算法核心。基于矩阵分解的算法提供了另一种协同 过滤的思路,它假设了用户对某一物品的评分是受到若干隐因子的影响,将用户和物品映射 到一个共同的隐因子空间,从而实现对用户的推荐。 作者简介:黄成(1993-),男,研究生,模式识别、机器学习 通信联系人:阮军(1978-),男,副教授,模式识别、机器学习. E-mail: justinruan@qq.com - 1 -
中国科技论文在线 http://www.paper.edu.cn 在矩阵分解推荐算法中,每项评分预测都需要整合现有评分集的信息。随着用户数与项 目数的增长,算法的计算量也会随着增长,单机模式的推荐算法逐渐难以满足算法的计算以 45 及推送的即时性需求,因此分布式推荐算法成为推荐算法中研究的一个新的方向。 本文旨在设计并实现一个 Web 推荐系统,结合 Spark 并行计算框架,采用交替最小二 乘法[8](Alternating Least Squares,简称 ALS)的矩阵分解技术,解决大数据情况下为用户 快速、准确的产生推荐结果。 1 矩阵分解推荐算法与 Spark 平台 50 1.1 矩阵分解推荐算法 矩阵分解的核心思想认为用户的兴趣只受少数几个因素的影响,因此将稀疏且高维的 User-Item 评分矩阵分解为两个低维矩阵,即通过 User、Item 评分信息来学习到的用户特征 矩阵 和项目特征矩阵 ,通过重构的低维矩阵预测用户对产品的评分。通过所有用户对 所有项目的评分数据,构建一个 的用户-项目的评分矩阵,其中 表示用户数, 表 55 示项目数,矩阵中每一个元素的值为用户对商品的评分值。基于矩阵分解的算法将原始的高 维度的评分矩阵 分解成两个低维度的矩阵的乘积 。 其中 是隐因子的数量, 可以看作是用户特征矩阵, 可以看 60 作是项目特征矩阵。矩阵分解的目的,就是然后通过迭代训练使得 不断的逼近原 始评分矩阵 。 在实际情况下,User-Item 评分矩阵维度较高且极为稀疏,传统的奇异值分解方法只能 对稠密矩阵进行分解,即不允许所分解矩阵有空值。因而,若采用奇异值分解,需要首先填 充 User-Item 评分矩阵,这样一方面将导致数据量的急剧增加,影响算法的复杂度;另一方 65 面,增加的数据填充,很容易造成真实数据失真,影响推荐结果。因此当前很多研究直接通 过训练集中的观察值,利用最小化 RMSE 学习用户特征矩阵 和物品特征 ,并用通过一 个正则化项来避免过拟合。定义损失函数为: 其中 为已有评分记录的 对集合 为用户 对物品 的真实评分, 70 为防止过拟合的正则化项, 为正则化系数。通过优化以上的损失函数,得到用户特征矩阵 和物品特征矩阵 。常用的优化方法有随机梯度下降法[9]( Stochastic Gradient Descent,简称 SGD)、交替最小二乘迭代法。 利用交替最小二乘法求解 时,首先随机初始化用户特征矩阵 ,将损失函数 对 求偏导,并令偏导数导数等于 0,得到项目特征矩阵 , - 2 - UVMNMNMNRTMDNDUV11121111111212222122121211.........................................................TNDDNDDMMMNNNDMMDRRRRRRRRRRRRRRRRRRRRR()TMNMDNDRUVmin(M,N)DMDUNDVTMDNDUVMNRUV222,,(U,V)min(r)()TuiuiuiUVuiTLUVUVT(,)uiuirui22uiUVMDUNDV()TMNMDNDRUVMDU(U,V)LiVNDV
中国科技论文在线 http://www.paper.edu.cn 75 然后再固定矩阵 ,用同样方法求得矩阵 ,如此交替往复直到收敛或者达到最大 迭代次数。最终通过计算用户 和项目 的特征向量的内集,得到用户 对项目 的预测评 分 。 1.2 Spark 并行计算框架 Spark[10]是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的基于内存计算的大数 据并行计算框架。Spark 基于 map reduce 算法实现的分布式计算,拥有 Hadoop MapReduce 80 所具有的优点;但不同于 MapReduce,Spark 基于内存计算,中间输出和结果可以保存在内 存中,从而不再需要读写 HDFS,提高了在大数据环境下数据处理的实时性,同时保证了高 容错性和高可伸缩性。 Spark 数据存储的核心是弹性分布式数据集( Resilient Distributed Dataset,简称 RDD)。 85 RDD 是 Spark 的核心数据结构,可以被抽象地理解为一个大的数组(Array),但是这个数 组是分布在集群上的。通过 RDD 的依赖关系形成 Spark 的调度顺序。通过对 RDD 的操作形 成整个 Spark 程序。同时 R DD 可以被缓存在内存中,在之后的计算过程中可以直接从内存 中读入,省去了大量的磁盘存取开销,适合需要迭代计算的矩阵分解算法。 Spark 架构采用了分布式计算中的 Master-Slave 模型。Master 是对应集群中的含有 Master 90 进程的节点,Slave 是集群中含有 Worker 进程的节点。Master 作为整个集群的控制器,负责 整个集群的正常运行;Worker 相当于是计算节点,接收主节点命令与进行状态汇报;Executor 负责任务的执行;Client 作为用户的客户端负责提交应用,Driver 负责控制一个应用的执行, 如图 1 所示。 95 图 1 Spark 架构图 Fig. 1 Spark charts figure 2 Web 推荐系统的设计与实现 2.1 Web 推荐应用 本文采用 Flask 框架结合 MongoDB 数据库搭建 Web 应用。Flask 是 Python 的一个微型 100 Web 框架,具有极强的可扩展性,它包含一个基本服务的强健核心,其他功能则可通过扩 展实现。用户完全可以通过系统的实际需求,挑选所需的扩展包,组成一个没有附加功能的 精益组合。MongoDB 是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据 库之间。它支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂 的数据类型。作为一个适用于敏捷开发的数据库,MongoDB 具有可扩展性,高性能和高可 105 用性等特点,利用内存计算的优势,MongoDB 能够提供高性能的数据读写操作。 整个 Web 平台的功能可分为三部分:用户管理模块、电影管理模块、用户推荐模块。 其中用户管理模块,包括用户的注册、登录、个人信息中心管理;电影管理模块,包含电影 - 3 - NDVMDUuiuiˆTuiuirUVClientClusterManagerDriverSparkContextRDD DAGDAGSchedulerTaskSchedulerSparkEnvWorkerExecutorTaskTaskWorkerExecutorTaskTask
中国科技论文在线 http://www.paper.edu.cn 资源的新建、编辑、删除;用户推荐模块,包含用户对电影的评分、用户的 topk 推荐。整 个系统结构如图 2 所示。 110 图 2 系统结构图 Fig. 2 System struct figure 用户可以通过 web 页面操作系统,数据通过 Control 层存储在 MongoDB 中,推荐的结 果将条用 Recommend 模块中的推荐引擎,反馈在前端页面中,如图 3 所示。 115 图 3 用户推荐结果 Fig. 3 User recommend result 2.2 Spark 并行化计算平台 Spark 并行化平台作为本系统的核心功能模块,为本系统提供后台的算法支持及推荐结 120 果的生成。 在本系统中,考虑到相比梯度下降的算法,交替最小二乘法具有:1)更容易并行化;2) 更方便的处理隐式数据等优点,因此采用 ALS 作为核心算法。在 Spark 平台下,通过对“用 户-电影-评分”数据按照指定的要求封装在不同的 RDD 分区,然后对 RDD 进行 map,filter 等并行化操作,实现数据的并行化处理。 125 并行化 ALS 矩阵分解算法: 输入:用户-电影-评分数据 输出:用户-电影矩阵分解模型。 1.初始化参数设置,numBlocks 是用于并行化计算的分块个数 (设置为-1,为自动配 置);rank 是模型中隐语义因子的个数;iterations 是迭代的次数;lambda 是 ALS 的正则化 130 参数;seed :随机种子,随机初始化用户/电影矩阵。 2.创建 sparkContext 对象。 3.加载用户数据,生成 User-Item 评分 RDD 模型,Ratings:(user,item,ratings)。 4.根据初始化的 numBlocks、rank、seed 参数,通过交替迭代,并行化生成所有用户 的 RatingsOfUserBlock 和所有电影的 RatingsOfItemBlock 的 RDD。 RatingOfUserBlock: 135 ;RatingsOfItemBlock 。 - 4 - Web PageUser ModuleMovie ModuleRecommend ModuleMongoDBCreate/Edit/delete/...RecommendRegister/Edit/…ControlStore(,,ratings)userfactors(,,ratings)itemsfactors
中国科技论文在线 http://www.paper.edu.cn 5.根据迭代次数 iterations,while iter
中国科技论文在线 http://www.paper.edu.cn 选 20%作为测试数据集作为验证集。选取不同的 rank(隐因子)、lamdba(正则化参数)、 iterations(迭代次数),计算算法所需时间与 RMSE 值。 表 3 ALS 不同参数 RMSE 值 160 Tab.3 The RMSE value with different ALS parameters Rank Lambda Iterations Time_cost/s 3 3 3 3 3 3 5 5 5 7 7 7 0.01 0.05 0.10 0.10 0.20 0.50 0.01 0.05 0.10 0.01 0.05 0.10 20 20 15 20 20 20 20 20 20 20 20 20 14.871 7.008. 6.571 6.482 7.176 7.273 7.259 7.616 6.256 6.853 6.384 6.132 RMSE 0.985546 0.950778 0.951385 0.935269 0.950340 1.075650 1.062528 0.972250 0.941061 1.131561 0.993058 0.946950 表 3 的结果表明,通常情况下,iterations 值越大,所需时间越长,RMSE 越小,但最终 会收敛;lambda 值越小,RMSE 越小,但是 lambda 达到一定值之后,继续减小,反而影响 RMSE 的值。综合考虑 RMSE 值,时间消耗,本系统确定了最终的参数,rank = 3,lambda=0.10, 165 iterations=20。通过加入验证集之后,相比测试集的 RMSE 值,提高了 16.39%。 同时为了模拟用户的评分行为,通过将数据集的 30%作为训练集,30%作为验证集,剩 下的 40%作为用户新的评分行为,每次添加 10%至训练集中,重新训练 ALS 模型,计算 RMSE,通过 RMSE 的收敛情况判断算法的训练效果。通过表 3 得到的数据,设置系统参数, 得到表 4 的实验结果。 170 表 4 模拟用户训练结果 Tab. 4 The result of simulate user behavior TrainSet Validation Time_cost/s 29730 39865 49769 60024 70087 29913 29913 29913 29913 29913 15.422832 6.474496 4.768522 4.552269 4.165985 RMSE 1.002580 0.989700 0.964058 0.944258 0.934768 表 4 的结果表明,随着用户训练数据的逐渐增加,模型训练的结果更加准确,RMSE 值 逐渐减小,并收敛于表 3 的最佳模型。另一方面,通过对计算时间的分析,由于最初第一步 的计算结果保存可以保存在内存中,因此后续的计算时间消耗极大地较少了,同时,可以看 175 出,由于并行化的计算,随着数据的增加,系统消耗的时间并没有增大太多,这些正是 Spark 并行化框架具有的优点。 4 结论 本文首先介绍了传统的矩阵分解算法和 Spark 并行化计算框架的概括,并结合 ALS 矩 阵分解计算、Spark 平台、Flask Web 框架,设计并实现了一个 Web 推荐系统。文章还对 ALS 180 算法中不同参数对推荐结果的影响进行了实验分析,得到了本系统的最佳实验模型。当然, - 6 -
中国科技论文在线 http://www.paper.edu.cn 由于水平有限、以及实验环境的限制,本文还有很多问题没有解决,比如:如何解决在线实 时训练的问题,而不是重新训练整个模型;如果构建集群化的推荐系统;如何采集更多的用 户其他行为,类似浏览、收藏、分享等作为隐因子丰富 User-Item 矩阵等。 [参考文献] (References) 185 190 195 200 205 [1] Musto C. Enhanced vector space models for content-based recommender systems[A].Musto C. Proceedings of the fourth ACM conference on Recommender systems[C]. New York:ACM,2010.361-364. [2] Greg Linden, Brent Smith, Jeremy York. Amazon.com Recommendations: Item-to-item Collaborative Filtering[J]. IEEE Internet Computing, 2003,7(1):76-80. [3] Wang J,Vries A P,Reinders M J T. 2006. Unifying user-based and item-based collaborative Filtering approaches by similarity fusion[A].Wang J.Proceedings of the 29th annual international ACM SIGIR conference on Research and development in information retrieval[C].New York:ACM,2006.501-508 [4] B Sarwar, G Karypis, J Konstan, et al. Item-based collaborative filtering ecommendation algorithms[A].B Sarwar.Proceedings of the 10th International Conference on World Wide Web[C]. NewYork:ACM,2001.285-295 [5] Koren Y, Bell R, Volinsky C. Matrix systems[J].Computer,2009,42(8): 30-37. [6] Billsus D, Pazzani M J. Learning Collaborative Information Filters[A].Billsus D.Proceedings of the 15th International Conference on Machine Learning[C].San Fruncisco: ICML, 1998. 46-54. [7] Koren Y. Factorization meets the neighborhood: a muitifaceted collaborative filtering model[A].Koren Y.Proceedings of the 14th ACM SIGKDD international conference on Knowledge discoveiy and data mining[C].New York:ACM,2008.426-434. [8] Yehuda Koren,Robert Bell,Chris Volinsky. Matrix Factorization Techniques Systems[J].Journal Computer archive, 2009,42(8): 30-37 [9] Jenny Rose Finkel, Alex Kleeman, Christopher D.Efficient, Feature-based, Conditional Random Field Parsing[A]. Jenny Rose Finkel.Proc. Annual Meeting of the ACL[C].Columbus, Ohio:Association for Computational Linguistics,2008.959-967 [10] 高彦杰.Spark 大数据处理[M].北京:机器工业出版社,2015. for Recommender recommender factorization techniques for - 7 -
分享到:
收藏