鄂州大学学报Journal of Ezhou University 2021年3月Mar.2021
第28卷第2期
Vol.28No.2
doi:10.16732/jki.jeu.2021.02.032
基于Spark框架的电影推荐系统的实现
赖丽君
(泉卅经贸职业技术学院信息技术系,福建泉卅362000)
正则化的缺点摘要:随着大数据的发展,传统的推荐系统和基于Hadoop平台的推荐系统在计算能力和实时性上存在一定的缺陷。阐述Spark框架,简述协同过滤算法,对交替最小二乘(ALS)算法原理进行分析,然后搭建Spark框架及生态组件,同时采用HDFS分布式存储海量数据,考虑显式反馈数据和隐式反馈数据,以ALS算法为推荐算法模型反复训练数据,进行迭代更新预测评分,实现基于Spark框架的电彩推荐系统,解决新用户存在的冷启动问题,增加基于电彩排名的推荐模块如热门电彩推荐、好剧推荐等功能,为新老用户提供个性化电彩推荐服务。
关键词:大数据;Spark;ALS算法;电彩推荐
中图分类号:TP311文献标识码:A文章编号:1008-9004(2021)02-098-04
推荐系统通过分析海量信息来挖掘、学习用户的兴趣或喜好,结合推荐技术及系统支撑框架,为每个用户推荐其感兴趣的产品或内容。目前解决“信息过载”的两种重要的手段即是利用推荐系统与搜索引擎叫两者均能协助用户获取感兴趣的内容,不同于搜索引擎,推荐系统在进行深度挖掘、分析用户数据,推测用户兴趣和喜好时是通过选用合适的推荐算法来进行处理,把用户主动搜索的方式转化为系统主动推送其感兴趣的内容或产品,为用户提供智能化、个性化的推荐服务。
"I Spark框架
推荐系统目前已经广泛应用于电影、音乐、电子商务等网站中,并取得较好的推荐效果,推荐系统以往是基于Hadoop框架下的MapReduce的分布式计算平台的,能解决海量数据的高效存储和分布式计算问题,但是随着网络和大数据技术的发展,对推荐系统的计算速度、实时性要求更高,而传统的基于Hadoop计算平台不能满足需要,Spark框架以其计算速度快、实时性强等特点,逐渐取代MapReduce成为目前热门的推荐系统框架。
Apache Spark是用于针对大规模数据处理的一种统一分析引擎冋。Spark由Scala语言实现,支
持Python、Java、Scala等语言开发,可以和其施大数据工具如Hadoop、Kafka等很如■地整合。Spark 是基于内存计算的,且具有易操作的特点,能够快速、简洁、高效的进行并行化应用的开发冋。与Hadoop相比,Spark因其数据结构RDD强大的计算能力,对于处理数据挖掘与机器学习算法更加适合叫能够更高效地实现MapReduce的操作。2算法模型
2.1协同过滤算法
基于协同过滤、内容的推荐、混合推荐的这类的算法是传统的推荐方法叫在这三种算法中,当前使用最为广泛,最为经典的方法则是协同过滤算法,如矩阵因子分解借助于用户与项目或产品之间的交互信息,向用户提供推荐内容。协同过滤算法目前有很多,主流的算法有两种,分别是基于模型的协同过滤与基于邻域的协同过滤。
基于邻域的协同过滤算法在进行推荐的过程中,通过对邻域进行搜索来计算相似度,主要相似度的计算为用户之间的相似度与项目之间的相似度,它的实现相对简单,但也存在过分依赖用户的评分的缺点,特别是数据很稀疏时,推荐系统的预测精度将会急剧下降,这将导致无法为新用户进行推荐的问题出现冏,基于模型的协同过滤算法在这种情况下,它的预测速度将会更快且算法的可扩展性更强,有一种典型的代表就是使用最小二乘法(ALS)进行矩阵分解算法。
2.2交替最小二乘(ALS)算法
ALS同时考虑了用户和物品两个方面,将用户和物品的关系抽象为一个三元组<用户,物品,用户对物品的评分〉,并表示为一个评分矩阵,由于用户不可能对所有物品进行评分,所以R矩阵注定是一个稀疏矩阵,缺失不少评分。为填充空值, ALS算法采用“隐语义模型”,通过降维的方法来补全“用户-物品”矩阵,并对没有出现的值进行估计叫这使得稀疏矩阵的问题能得到有效地解决。在AU算法中,首先假设有m个用户,n个物品,
收稿日期:2020-10-21
基金项目:福建省中青年教师教育科研项目(JAT191472)
作者简介:赖丽君(1984-),女,讲师,工学硕士,研究方向:大数据技术。
第2期赖丽君:基于Spark框架的电影推荐系统的实现99
用矩阵R喚来表示用户对物品的评分,即矩阵元素堆代表评分值为第i个用户对第j个物品的评分冏。R唤矩阵的规模通常很大,而且数据稀疏,为填充缺失值,ALS算法假设评分矩阵是近似低秩的,将R嘶分解为两个子矩阵X缺(用户对隐含特征的偏好矩阵),Y血(物品包含隐含特征的矩阵),使两个矩阵相乘近似得到R唤,其中k«min(m,n)即k值远小于m和n,这样达到降维的目的,公式如下:
为了使得矩阵X与矩阵Y的乘积与原始矩阵R值尽可能接近,AU采用最小化平方误差损失函数方法,同时
对损失函数加上正则化项后表示如下:厶(x,丫)=Y"佻-谒护+入(kf+略丿
其中x是正则化项系数。血作为用户U的隐含特征向量,y:是物品i隐含的特征向量。而瑞则表示用户u对物品i的评分。
具体求解步骤如下:
(1)将矩阵Y进行固定,再对x u求导气公式如下:
临=(FY+入旷丹”
(2)再固定矩阵人然后对yi求导气公式如下:
yi=(X T X+A.I^X T ri
在迭代过程中,随机对X,Y进行初始化,交替对X、Y进行迭代优化,不断更新X和Y的值,直至收敛。
3基于Spark框架的电影推荐系统设计和实现3.1系统总体设计
本文基于Spark生态框架及Mysql、IDEA、Node.js等软件平台构建电影推荐系统。由HDFS 分布式存储结构来对海量的历史评分数据进行保存,为充分测试系统性能,使用的评分数据源于网络,在使用之前
在Pycharm平台进行预处理后,在IDEA平台上进一步清洗数据,用户在浏览网站时的行为及轨迹产生的实时数据由Spark Streaming 处理,系统将用户注册信息、最新评分数据、浏览历史记录等信息存储到Mysql数据库中。通过MLlib平台实现ALS算法,训练数据获得最佳的推荐模型,产生推荐结果,向用户推荐电影,同时对电影进行点击率、评分排名处理,设计基于电影排名推荐功能,与ALS算法一起形成组合推荐模式,向用户推荐电影。系统工作流程图如图1:3.2系统功能设计
系统主要分为用户信息,电影推荐,电影信息管理三个主要功能模块,用户信息模块分为注册、登录、用户信息管理功能,电影推荐模块主要有个性化电影推荐功能、用户评分功能,为解决ALS算法存在的冷启动问题,在此模块还增加热门电影推荐功能和好剧推荐功能,使系统在向老用户推荐电影的同时,也能为新用户提供电影推荐,此外,为进一步缓解冷启动问题,在用户注册模块增加年龄和对电影类别的偏好的信息填写,增加用户特征属性,对于新用户进行辅助推荐。
系统功能模块如图2:
图2系统功能设计
^
1
#
户«s
离1
1
n
4s.
i荐
恵s
3.3Spark大数据处理框架搭建
在实验室搭建Spark生态环境,安装配置Kafka、Zookeeper、flume、MLlib、Spark SQL、Spark Streaming等座态组件,搭建Hadoop平台,配置1个Master节点和2个work节点,采用其HDFS分布式存储历史评分数据,对于实时产生的评分数据,将其存于MySQL数据库中。安装IDEA平台采用Scala编程语言开发程序,安装Node-js进行前端开发。搭建Spark环境部分效果如图3。
3.4系统实现
3.4.1算法实现
Spark生态组件MLlib是实现部分机器学习算法的平台,其中的spark.ml包有提供实现交替最小二乘算法的函数,在ALS算法中,主要的实现过程如下几个步骤:
(1)M数据集和Spark生态环境进行初始化操作,通过语句(import org.apache.-mendation.{ALS,ALSModel})来加载交替最小二乘ALS算法模型。
(2)数据集转换,将样本评分数据分为3部分,训练数据占70%,将最靠近最近时间段的数据作为测试数据占20%(通过用户评分表中的timestamp排序获取),校盛数据占10%。
(3)设置参数,如隐语义因子的个数、迭代次数,正则化参数等。
'(4)在对ALS模型进行训练的过程中,既进行显式反馈数据模型的训练,
同时也对隐式反馈数
100鄂州大学学报第28卷
图3Spark环境搭建
据进行模型训练,通过调整参数,多次迭代训练,
产生最佳模型。
(5)通过模型预测评分,计算与实际评分间的
均方根误差RMSE,值越小越接近收敛。
⑹将推荐结果写入数据库,向用户推荐电影。
3.4.2功能实现
(1)用户信息模块。实现了用户注册、登录、用
户信息管理三个子功能模块,用户注册时尽可能
简化用户操作,除了填写基本信息外,需要选择感
兴趣的电影种类,以便对新用户进行电影推荐。用
户信息管理模块用于管理用户个人信息,用户可
以对自己的信息进行修改、完善,系统管理员也可
查询和管理网站所有用户信息。用户注册界面效
果如图4。
(2)电影推荐模块。这部分是网站的核心模
块,实现了个性化电影推荐、热门电影推荐、好剧
推荐、用户评分等四个子功能模块,用户选择对电
影进行星级评分,并发表评论,后台管理员可以查
看所有评分和评论并进行管理,网站实现对每个
用户提供个性化电影推荐服务,并组合近一个月
内点击率高及评论数多的热门电影,和评分排名靠前的好剧进行推荐。部分效果如图5、图6、图7所示。
(3)电影信息管理模块。实现电影信息管理、
图4用户注册界面
电影分类管理子功能模块,便于网站管理员对电影信息进行查询、增加、修改、删除等操作。
图5
猜你喜欢
第2期赖丽君:基于Spark框架的电影推荐系统的实现101
图6热门电影推荐
图7电影评价
4结语
知矣数据环境下,推荐系统已进入到人们生活的各个方面,为人们提供了更加丰富和便捷的体验,应用前景广泛。本文设计并实现了一个基于Spark生态环境的电影推荐系统,通过在Spark框架中采用ALS算法模型对数据进行反复的训练、优化调整,最终取得推荐的最佳模型,向用户提供个性化电影推荐服务。
面对新用户,推荐的挑战主要是冷启动问题,该系统以ALS推荐算法为主,辅以热门电影和优质好剧推荐,同时将电影分类,以用户兴趣为出发点,结合电影点击率排名、评分排名向新用户提供电影推荐服务,有效缓解冷启动问题。参考文献:
[1]刘宏志.推荐系统[M].北京:机械工业出版社,2020:14-20.
[2]A pache Spark.Lightning-fast unified analytics engine[EB/
OL].[2020-07-1l](2020-10-18)Jittp^:l-2.
⑶张力元.基于Spark的混合模式电影推荐系统研究与实
现[D].重庆大学,2018.
[4]孙远帅.基于大数据的推荐算法研究[叨.厦门大学,2014.
[5]黄立威,江碧涛,吕守业,等.基于深度学习的推荐系统研
究综述[J].计算机学报,2018(7):1619-1647.
[6]林子雨.大数据实训案例[M].北京.人民邮电出版社,2019:
90-100.
[7]孟祥武,纪威宇,张玉洁.大数据环境下的推荐系统[J].北京
邮电大学学报,2015⑵:1-15.
(责任编校:朱立文)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。