收稿日期:2020-04-27
基金项目:安徽高校自然科学研究重点项目(KJ2019A1123);校级自然科学重点研究项目(201914KJA019);校级自然科学重点
研究项目(202014KJA017);校级大数据与物联网研究所(KYJG201813Z ).
作者简介:徐伟,安徽安庆人,合肥职业技术学院讲师;许鹏,合肥职业技术学院教授(安徽合肥230013).
基于MapReduce 的个性化课程
推荐系统设计与实现
伟,许
摘要:新一代信息技术促进了教学方式的变革,涌现出很多优秀的线上教学平台,如职教云、
腾讯课堂等.线上课程具有不受时空限制、授课形式灵活多样的特点,在新冠肺炎疫情期间得到广泛应用,但大量线上课程的出现也给学生选课带来了困扰,为便于学生在众多的课程中选择适合自身特点的课程,设计开发了一款个性化课程推荐系统,系统采用协同过滤推荐算法,根据学生对课程的历史评分数据,使用大数据Hadoop 离线计算框架MapReduce 技术计算课程之间的相似度并生成课程推荐列表,在一定程度上满足了学生个性化需求.
关键词:Hadoop ;MapReduce ;协同过滤算法;个性化推荐系统中图分类号:TP31
文献标志码:A
文章编号:1008-7974(2021)02-0103-06
DOI :10.13877/jki22-1284.2021.02.017
云计算、大数据、人工智能技术的发展改变了传统的课程教学模式,促进了线下线上课程教学模式的融合,尤其是在今年的新冠肺炎疫情期间,各学校为了深入贯彻教育部“停课不停学”的指示精神,要求教师在职教云、腾讯课堂、学习通等在线教育平台上进行线上授课,开展线上课程建设.线上课程以其具有的不受时间场地限制、授课形式灵活多样的特点,在新冠肺炎疫情期间得到广泛应用.据不完全统计,新冠肺炎疫情期间线上课
程数量急剧增加,占课程总量的85%,在一定程度上满足了学生学习知识和技能的需求,但同时也给学生选课带来了困扰.为了能够让学生在众多的线上课程中选择到适合自身学习特点的课程,笔者提出设计开发一款高效精准的个性化推荐系统[1],该推荐系统可以根据用户的历史行为数据发现用户的喜好,形成用户画像数据,从而为用户做出精准的个性化推荐,提供更加优质的服务.
本文在对当前主流在线教育平台的课程
2021年第2期
第42卷总第311
学报
2021年
第2
学报
推荐功能进行深入研究的基础上,对学生购买课程的历史数据进行分析,将评分数据作为学生对课程喜好度的主要依据,将评论数据作为次要依据,基于协同过滤推荐算法,使用MapReduce 计算模型计算出课程间的相似度,最终向学生推荐符合其喜好的课程列表,实现了个性化课程推荐[2]功能.
1系统架构
整个系统由日志采集子系统、数据清洗
子系统、数据计算子系统、在线教育平台业务子系统组成.通过收集业务系统学生用户的行为数据,针对不同学生进行个性化课程推荐,以满足不同学生用户的需求.系统架构如图1所示.
(1)日志采集子系统.负责采集用户的操作日志,并通过大数据组件Flume 将每天的数据实时采集到HDFS 中.Nginx 服务器除了作为网站的代理服务器外,还作为网站日志接收服务器,网站所产生的日志信息发送到Nginx 服务器,Nginx 将接收到的日志存储在日志文件access.log 中.Flume 组件运行在集中并实时监控access.log 文件的增量日志,一旦监测到有新的增量日志就会将新日志导入到HDFS 文件系统的指定目录[3].
(2)数据清洗子系统.负责对日志进行数
据清洗,剔除无效数据,从HDFS 指定目录读
入非结构化日志数据,然后根据特定规则切分日志条目,将不符合特定规则的脏日志数据舍弃,并将清洗后的数据存入数据仓库以便于其他应用程序使用[4].
(3)数据计算子系统.基于协同过滤推荐
算法,采用MapReduce 离线计算框架,通过Linux 定时任务[5]周期性计算课程相似度,并把结果回写到MySQL 的推荐表中.
(4)在线教育平台业务子系统.本业务系统是基于Python 语言的轻量级Web 框架Flask 快速开发的在线教育平台[6],主要包含用户模块、课程模块、订单模块、评论模块等核心业务模块,具备线上教育平台的核心业务功能,包括前台课程展示页面与后台管理员页面,同时在课程详情页面还包括课程的推荐列表.在管理员页面可以对课程进行相应的操作,以及查看不同维度统计信息.在Web 开发中,页面跳转是通过不同的Flask 控制器View 视图函数进行控制,根据用户的请求路径调用对应的视图函数进行处理[7].
2MapReduce 计算模型执行过程
本文采用MapReduce 离线计算模型,使用
Linux 下执行定时任务工具crontab 周期性对学生行为日志数据进行离线计算,并将计算结果通过Sqoop 同步更新到数据库中.MapRe⁃duce 采用的是分而治之的数据处理方式,
Map
图1基于MapReduce 的个性化课程推荐系统架构图
徐伟,等:基于MapReduce 的个性化课程推荐系统设计与实现
操作即为“分”操作,将一个大数据块分解为多个切片,交由集中的各个节点去计算;而Reduce 即为“合”操作,合并各个节点上的计算结果并输出[8].
MapReduce 编程模型是一种并行数据计
算模型,该模型根据数据输入量的大小将数
据划分为N 个相对独立的数据切片,启动N 个Map 任务,每个Map 任务获得一个切片数据,该切片数
据经计算处理后生成键值对,以(Key/Value )的形式输出,在Map 和Reduce 中间需要一个Shuffle 过程,该过程将Map 的输出结果Key/Value 键值对按Key 进行分组,形成P 个Key/ValueList ,然后交给P 个Reduce 任务去处理,即一个Shuffle 之后的Key 对应一个Reduce 任务,如果用户指定了Reduce 任务的个数,则需要通过对Key 进行Hash 计算,求出Hash 值,然后根据Hash 值将不同的Key 发送
到不同的Reduce 任务,Reduce 任务接收到来自Shuffle 的Key/ValueList 输入,通过迭代Val⁃ueList 计算并输出最终结果,这是单个MapRe⁃duceJob 的完整执行过程[9],如图2所示.
在实际项目开发中,可以根据自身的业务功能进行灵活选择,比如,如果只是一个简单的数据清洗作业(Job ),可以只有Map 过程,而没有Reduce 过程;也可以将多个Job 串联在一起,形成一个复杂的计算逻辑,将JobA 的输出作为JobB 的输入,JobB 的输出作为JobC 的输入直至整个任务完成[10].
3基于协同过滤算法的课程推荐实现
过程
本课程推荐系统主要实现两个功能,分
步骤实现,首先计算出课程与课程间的相似度,然后根据用户的订单及评分数据,出课程相似度比较高的课程列表进行推荐.以下为具体实现过程.
首先,获取用户对某一课程的评价信息,主要是评分数据,这一信息可以在订单表中获取.通过Sqoop 数据导入导出工具,按指定要求增量或者全部导出所有数据到HDFS 指定目录,这里只导出用户ID 、课程ID 和评分数据.数据集如表1所示
.
图2单个MapReduceJob 完整执行过程
2021年
第2
学报
linux内核设计与实现 pdf
表1
课程评分表UserId 1112222
CourseId 101102103101102103104
Score 532.522.5
52
然后,运行指定的MapReduce 程序,读入上述数据集,建立用户对课程的评分矩阵并把计算结果存入相应目录中.用户对课程评分矩阵如图3所示
.
图3用户对课程评分矩阵
评分矩阵的行为课程ID ,列为用户ID ,评分矩阵中的数值代表该ID 用户对该ID 课程的评分数据,如果数据为0,则表示该ID 的用户尚未对该课程进行评价.从该矩阵列方向看,每一列在MapReduce 程序中可以用一行字符串101:5,102:0,103:-3,104:4.5,105:0,106:4,107:4表示.按照上述方式处理矩阵,图3用户评分矩阵的5列就可以由5行类似的字符串来构成.那么第一个MapReduce 程序的功能就是将关系型评分矩阵按照列维度进行数据转换操作.
其次,读入评分矩阵,计算出课程的同现矩阵[11],如图4所示
.
图4课程同现矩阵
课程同现矩阵的行为课程ID ,列也为课程ID ,矩阵的值表示两个课程同时被用户评分的次数,例如104和105这个课程组合被3、5两个ID 的用户评价过,那么在矩阵中104和105所对应的数值就是2.如果两个课程同时被多个用户购买并评价过,那么这两个课程在很大程度上是相似课程,同时被购买并评价的次数越多,即课程同现矩阵中数值越大,根据协同过滤算法的定义,这两个课程的相似度就越高.从列方向上看,这个同现矩阵的每一列在MapReduce 程序中可以通过简单的字符串102:1013,102:1023,102:1032,102:1042,102:1051,102:1061,102:1070表示,x *y 的同现矩阵就由x 个以上的字符串(y 行)组成.可以看出,课程和课程的同现矩阵需要另外一个MapReduce 任务来完成,它是
将第一个MapReduce 任务的输出作为输入进行计算的.
最后,计算课程相似度并产生最终推荐结果,推荐结果等于用户对课程的评分矩阵*课程同现矩阵.课程的同现次数*用户对各个课程的评分,反应出用户对课程的评分.
例如,计算用户2对105课程的喜好度,那么必须到和105课程相似的课程,课程之间的相似度体现在同现度上,同现度越高,相似度越高.比如101课程和105课程的同现度为4,说明101课程和105课程相似,用户2对105课程的评分为2,表示用户2对105课程的喜好度,101课程和105课程的同现度*用
户2对101课程的评分可得到用户2对105课程的喜好度权重值,将用户2对各课程评分权重相加,最终计算出用户2对105课程的喜好度.第三个MapReduce 任务的功能就是实现评分
矩阵和同现矩阵的相乘,并输出结果.推荐结
徐伟,等:基于MapReduce 的个性化课程推荐系统设计与实现
果如图5所示
.图5
推荐结果
个性化课程推荐系统开发完成后,部署在学校数据中心的服务器上,学生可以通过互联网或校园网访问使用该系统.为了解学生使用该系统的实际效果,设计了在线问卷调查系统,经统计共874名学生参与问卷调查.调查数据显示:71%的学生认为该系统可以满足自己的个性化需求,感到“非常满意”;23%的学生认为对自己选课有所帮助,感到“满意”;6%的学生认为该系统的个性化课程
推荐对自己帮助不大,感觉“一般”;没有同学感到“不满意”.系统满意度调查如图6所示
.
图6推荐系统满意度调查
4结语
随着在线教育体系的不断发展和完善,
线上教学模式必将成为今后学生学习知识和
技能的一个重要途径,而在线教育平台如何满足学生用户个性化需求将是一个值得研究的课题.本文采用协同过滤推荐算法,根据学生对课程的评分数据和对课程的历史评价数据,了解学生感兴趣的课程特征,使用MapRe⁃duce 离线计算框架计算出课程之间的相似度,从而实现了个性化的课程推荐功能,在很大程度上满足了学生的需求.后期将在业务系统中采集学生的个人爱好、喜欢的讲师授课风格等更多个性化特征数据并应用于算法模型中,进一步提高推荐系统的精准性.
参考文献:
[1]姜雨菲,万超.基于物品内容的电视产品推荐系统研究[J ].计算机与数字工程,2020,48(2):447-452.
[2]王文君.基于用户播放行为序列的个性化视频推荐研究[D ].深圳:深圳大学,2018:35.
[3]陈飞,艾中良.基于Flume 的分布式日志采集分析系统设计与实现[J ].软件,2016,37(12):82-88.
[4]刘永增,张晓景,李先毅.基于Hadoop/Hive 的web 日志分析系统的设计[J ].广西大学学报(自然科学版),2011,36(S1):314-317.
[5]王继敏.Linux 下实现定时任务综述[J ].科技视界,2017(21):98.
[6]叶锋.Python 最新Web 编程框架Flask 研究[J ].电脑编程技巧与维护,2015(15):27-28.
[7]牛作东,李捍东.基于Python 与flask 工具搭建可高效开发的实用型MVC 框架[J ].计算机应用与软件,2019,36(7):21-25.
[8]李玉林,董晶.基于Hadoop 的MapReduce 模型的研究与改进[J ].计算机工程与设计,2012,33(8):
3110-3116.
[9]于明,胡前笑.云计算技术与业务发展策略分析[J ].电信技术,2009(10):77-80.
[10]周世龙,陈兴蜀,罗永刚.基于灰盒模型的Hadoop MapReduce job 参数性能分析与预测[J ].四川

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