本栏目责任编辑:谢媛媛
软件设计开发
基于Spark 和微服务架构的电影推荐系统设计与实现
史爱武,李险贵
(武汉纺织大学云计算与大数据研究中心,湖北武汉430200)
摘要:推荐系统广泛应用于人们生活的多个领域,日常生活中常见的有电商、电影、音乐和新闻推荐等。推荐系统根据用
户的历史偏好主动推送相关的信息,节约了用户的时间,极大地提升了用户的体验。随着大数据技术的发展成熟,数据处理的速度变得更快。该文选取MovieLens 电影数据集,并基于大数据分布式处理框架Spark 和交替最小二乘法ALS 等算法搭建数据处理平台,然后再结合Spring Boot 和Spring Cloud 等搭建电影后台服务,实现一个基于微服务架构的电影推荐系统。
关键词:推荐系统;Spark ;ALS ;微服务架构中图分类号:TP311.52
文献标识码:A
文章编号:1009-3044(2021)05-0078-03
开放科学(资源服务)标识码(OSID ):
Design and Implementation of Movie Recommendation System Based on Spark and Microservice Architecture SHI Ai-wu,LI Xian-gui
(Cloud Computing and Big Data Research Center of Wuhan Textile University,Wuhan 430200,China)
Abstract:Recommendation system is widely used in many fields of people's life,such as e-commerce,movies,music and news rec⁃ommendation and so on.Recommendation system actively pushes relevant information according to the user's historical preference,which saves the user's time and greatly improves the user's experience.With the development and maturity of big data technology,the speed of data processing becomes faster.This paper selects movielens movie data set,builds a data processing platform based on big data distributed processing framework Spark and alternating least squares algorithm ALS,and then builds movie background service combined with Spri
ng Boot and Spring Cloud to realize a movie recommendation system based on microservice architecture.Key words:recommendation system;Spark;ALS;microservice architecture
1背景
大数据时代用户面临信息过载的问题,为了从海量数据中到用户可能感兴趣的信息,由此产生了推荐系统。日常生活中常见的有电商、电影、音乐和新闻推荐等[1]。随着大数据技术如Spark 、Flink 等的发展成熟,其计算速度更快,可以更好地为广大众服务。本文将基于Spark 和微服务架构设计并实现一个简易的电影推荐系统。
2相关技术
2.1推荐策略
推荐系统的实质是对用户或者物品的本身属性即基本信
息,或者是对用户的行为数据进行分析,通过特定的算法模型从海量数据中到相关性,从而产生推荐的结果。常见的推荐策略有基于内容的推荐、协同过滤推荐和混合推荐等[2]。
基于内容的推荐,即根据物品自身的属性特征计算物品间的相关性或相似性,再基于用户的历史偏好记录为用户推荐相
似的物品。基于协同过滤的推荐,即根据用户评分矩阵,用户和物品协同作战。协同过滤推荐可分为基于内存的协同过滤Memory-based CF 和基于模型的协同过滤Model-based CF 。Memory-based 可分为基于用户的协同过滤User-based CF 和基于物品的协同过滤Item-based CF [3]。混合推荐,即多种算法按照不同的策略进行混合后再推荐,常见的混合推荐有加权、切换、分区、分层、瀑布式混合、特征组合和特征增强等[4]。2.2Spark 介绍
Spark 作为大数据并行计算框架,由于支持内存计算,减少
了IO 开销,带来了更高的迭代计算效率,同时Spark 也支持批处理和实时流数据处理等。Spark 包含的组件主要有Spark Core 、Spark SQL 、Spark Streaming 、Structured Streaming 、MLlib 和
GraphX 等[5]
。2.3微服务架构
微服务架构将单一应用细分为多个微服务,可以独立开发
收稿日期:2020-10-28微服务网关和注册中心区别
作者简介:史爱武(1972—),男,湖北人,副教授,研究方向为云计算与大数据;李险贵(1994—),男,湖北人,硕士,研究方向为云计
算与大数据。
78
软件设计开发
本栏目责任编辑:谢媛媛
Computer Knowledge and Technology 电脑知识与技术
第17卷第5期(2021年2月)
和部署每个微服务,便于开发和维护。多个微服务之间互相协调、互相配合。常见的微服务架构有Spring Cloud 和Dubbo 等等。微服务架构体系包含服务注册与发现、服务调用、服务降级、服务网关、服务配置和服务总线等[6],对应的组件如表1所示。
表1微服务架构相关组件
微服务架构服务注册与发现服务调用服务降级服务网关服务配置服务总线
组件
Eureka 、Zookeeper 、Consul 、Nacos 等Ribbon 、LoadBalancer 、Feign 、OpenFeign 等
Hystrix 、Resilience4j 、Sentinel 等
Zuul 、Gateway 等Config 、Nacos 等Bus 、Nacos 等
3系统设计
3.1架构设计
本系统采用微服务架构,并基于前后端分离设计理念。系统架构设计如下图1,首先选取MovieLens 电影数据集ml-1m ,并基于Spark 进行数据处理,将结果存入到MongoDB 中;然后基于Spring Boot 搭建电影后台微服务,同时将服务注册到Nacos 中;前端基于Vue 等进行开发,通过服务网关Gateway 访问不同的服务,并由Feign 调用具体的微服务[7]
。
图1系统架构设计
3.2功能模块
本系统主要分为数据处理部分和电影后台微服务部分。
如图2其中数据处理主要包括离线统计模块和离线推荐模块,离线统计模块包含最新电影推荐和热门电影推荐功能;离线推荐模块包含基于交替最小二乘法ALS 的协同过滤推荐、基于物品的协同过滤推荐和基于内容的推荐;电影后台服务包含电影
模块和用户模块等。
图2系统功能模块
4系统实现
4.1开发工具和开发环境
实现一个简易的基于微服务架构的电影推荐系统,选取
IntelliJ IDEA 和Visual Studio Code 为开发工具,开发环境如下表2。
表2开发环境
JDK Scala Spark Spring Cloud Spring Cloud Alibaba
Spring Boot Vue MongoDB Mysql
1.8
2.112.1.1Hoxton.SR12.1.02.2.22.5
3.25.6
4.2热门电影推荐实现
热门电影推荐考虑最近每周内每部电影的评分次数,评分
次数越多说明该电影的热度越高。具体流程如下。
1)加载数据集。2)统计最近每周电影的评分次数并进行降序排序。3)将结果存入到MongoDB 中。4.3基于ALS 的协同过滤推荐实现
交替最小二乘法ALS 其实是将一个稀疏的用户评分矩阵通过降维得到用户隐特征矩阵和电影隐特征矩阵的过程[8],推荐流程如下。
1)加载数据集并随机切分为训练集和测试集。2)多次调整ALS 的参数如迭代次数iteration 、隐特征个数k 和正则化系数lambda 等对模型进行训练。
3)计算每种参数组合下测试集预测评分与实际评分之间的均方根误差RMSE 。
4)选取RMSE 最小时的参数组合作为ALS 的最优参数组合。
5)通过训练ALS 模型得到电影隐特征矩阵。6)计算两两电影隐特征向量的余弦相似度并按照相似度进行降序排序。
7)将结果存入到MongoDB 中。4.4基于物品的协同过滤推荐实现
基于物品的协同过滤是根据用户的行为数据如评分、点击、收藏等计算出两物品间的相似度,即两物品间有相同的受众,表示两物品间有相关性。以用户评分记录为例,具体流程如下。
1)加载数据集。2)统计每部电影的评分个数,并根据电影ID 进行组合。3)统计两两电影被同一用户评过分的次数。4)计算两两电影间的同现相似度并按相似度降序排序。5)将结果存入到MongoDB 中。4.5电影后台服务实现
电影后台服务基于Spring Boot 和Spring Cloud 等实现,主
79
本栏目责任编辑:谢媛媛
软件设计开发Computer Knowledge and Technology 电脑知识与技术第17卷第5期(2021年2月)
要功能是读取MongoDB 中的数据,并对外提供用户模块和电影模块的访问接口。为了让每种算法推荐的效果更加明显,基于Vue 搭建前端项目,最终前端页面的推荐效果如图3,其中上半部分展示电影的详细信息,中间部分展示各种推荐算法推荐的电影ID 列表和是否有交集及交集个数,下半部分展示不同算
法推荐的电影列表及相似度。
图3推荐效果图
5结束语
通过设计并实现一个简易的电影推荐系统,对Spark 进行
数据处理和微服务架构等有更深入的了解,同时也了解了不同
推荐算法的具体流程,本系统暂时包含最新电影推荐、热门电影推荐、基于ALS 的协同过滤推荐、基于物品的协同过滤推荐、基于内容的推荐、用户注册登录和电影展示等功能。未来的研究工作将结合kmeans 和深度学习等模型进行推荐,提高推荐的多样性和准确率,同时也可考虑进行实时推荐。
参考文献:
[1]项亮.推荐系统实践[M].北京:人民邮电出版社,2012.
[2]Zhang S,Yao L N,Sun A X,et al.Deep learning based recom⁃mender system:a survey and new perspectives[EB/OL].[2020-03-02]./abs/1707.07435.
[3]Zhang Y F,Chen X.Explainable recommendation:a survey and new perspectives[J].Foundations and Trends®in Information Retrieval,2020,14(1):1-101.
[4]张志威.个性化推荐算法研究综述[J].信息与电脑(理论版),2018(17):27-29.
[5]林子雨.大数据技术原理与应用:概念、存储、处理、分析与应用[M].2版.北京:人民邮电出版社,2017.
[6]冯志勇,徐砚伟,薛霄,等.微服务技术发展的现状与展望[J].计算机研究与发展,2020,57(5):1103-1122.
[7]熊其昌.基于微服务架构的学习系统设计与实现[D].武汉:华中师范大学,2020.
[8]侯敬儒,吴晟,李英娜.基于Spark 的并行ALS 协同过滤算法研究[J].计算机与数字工程,2017,45(11):2197-2201.
【通联编辑:谢媛媛】
(上接第77页)求方面,还是在满足校园业务与信息动态发展方面,均得到了明显加强。可以说,混合模式的跨平台移动校园系统的推广应用无疑是为高校管理工作的顺利实施提供了良好的内在保障。但是
需要注意的是,混合模式的跨平台移动校园系统尚未达到成熟推广应用阶段,在部分应用层面上仍旧存在亟待解决的问题。针对此,建议在未来的开发设计过程中,研究人员可以从细化用户角类型、功能模块与时俱进以及数据挖掘等方面加强对混合模式跨平台移动校园系统的研究,以期可以更好地满足师生用户需求。
参考文献:
[1]王慧.移动校园系统数据传输关键技术研究与实现[D].青岛:中国海洋大学,2014.
[2]李国才.基于Android 平台的智慧校园移动App 设计与实现
[J].电脑编程技巧与维护,2019(12):76-77,82.
[3]崔瑶.互联网技术在智慧校园建设中的应用研究[J].信息记录材料,2019,20(11):185-186.[4]赵英,程良.基于OSGi 和RESTful 技术的移动校园数据中间件的设计[J].华中科技大学学报(自然科学版),2013,41(S2):127-130.[5]邓春红,任海鹏,潘涛.基于移动终端的智慧校园系统设计[J].绥化学院学报,2017,37(5):158-160.
[6]王振.基于Android 平台的移动智慧校园系统的构建分析[J].山西能源学院学报,2017,30(2):133-135.
[7]张敏.移动智慧校园客户端的开发与应用[J].湖南工业职业技术学院学报,2016,16(1):11-13+39.[8]李引,陈敏锋.基于移动端的智慧校园服务平台研究与实现[J].科技传播,2018,10(24):92-93.
【通联编辑:唐一东】
80
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论