好歹学习了一段时间的WEB搜索技术,尝试着设计一个WEB搜索技术相关的系统。
思来想去,做了一个选课推荐系统,毕竟每年的选课时间都和打架一样。到处问学长学姐,在网上找各种各样的相关信息,跑到每个课堂上去试听。太痛苦。
所以方案里面写的需求都是我和同学们真正的翘首以盼的功能需要。
学分管理与选课推荐系统方案设计
目录
1. 引言
1.1 项目背景
在高校中,对于不同的学生而言,学习方法各异、对于不同的教师的教学方式也各有偏好、同时往往具有不同的听课目的,如何在繁杂的课程和各种选课规定中选择最符合自己需求的课程,成为了很多学生的困扰。通过推荐系统,可以有效的客服这种问题。同时,随着互联网技术的发展,尤其在本次疫情期间,在线教学成为了当前流行的一种学习方式,在互联网的海量学习资源中找到最适合自己的课程,费时又费力。本项目希望能够设计一种就不同用户需求提供线下选课建议和相应的线上课程的推荐系统,解决学生的需要。
1.2 项目目标
本项目的设计目标可以分为三个方面:
- 系统能为学生提供便捷的学分管理,通过获取学生培养方案中各类型课程的学分需求,并允许学生个性化各学期修读学分并提供相应的建议。
- 系统能为学生提供选课推荐的服务,根据不同学生对老师授课方式的偏好、考核方式的偏好、不同课程的偏好和分数偏好推荐选课,为学生在选课时提供选择。
- 系统能为学生提供线上课程的推荐服务,针对不同学生的兴趣、学习需要,提供适合他们的线上课程,以实现提高学习成绩、培养人才的效果。
具体而言,本项目旨在开发一个系统,方便学生用户管理课程、完成选课操作,同时为师生搭建一个沟通的平台,以便学生更好地利用资源学习、教师更好的改善教学方式。
1.3 参考资料
[1]朱丽,付海涛,冯宇轩,李恒,孙宇,艾洪福,裴欣彤.基于深度学习的在线教学推荐系统设计与研究[J].计算机产品与流通,2020(04):183+187.
[2]杨梅,迟锦贵,刘小平,钱立龙.课程推荐系统可行性分析报告[DB/OL]. 2020-04-08. https://wenku.baidu.com/view/39f1fd3eaff8941ea76e58fafab069dc512247ef.html?fr=search
[3]论坛需求分析[DB/OL]. 2020-04-09. https://wenku.baidu.com/view/e3b87c2950d380eb6294dd88d0d233d4b04e3f5c.html?fr=search
[4]李兴万. 软件需求分析报告模板(完整版)[DB/OL]. 2014-06-19. https://wenku.baidu.com/view/d784292d5acfa1c7ab00cc18.html?fr=search
[5]左旭诚.UI界面设计的需求分析方法[DB/OL]. 2020-04-28. https://libcon.bupt.edu.cn/https/77726476706e69737468656265737421e7f24f97327e6a51770c9ce29b5a2e/view/15d70e72c67da26925c52cc58bd63186bceb928f.html?fr=search
[6]刘青文. 基于协同过滤的推荐算法研究[D].中国科学技术大学,2013.
[7]刘畅. 基于知乎用户行为的理财产品推荐系统的设计与实现[D].西北大学,2019.
[8]曹一鸣. 基于协同过滤的个性化新闻推荐系统的研究与实现[D].北京邮电大学,2013.
[9]袁惠蓉.基于“MOOC”的信息检索课程辅助学习系统的研究——以海南大学为例[J].信息技术与信息化,2018(12):158-160.
[10]张欢,邹冲.高校选课系统的课程推荐机制研究[J].电子世界,2018(20):91-92.
[11]巩晓悦. 基于个性化推荐的在线学习系统研究与实现[D].北京邮电大学,2019.
[12]康梅娟.基于SSM的摄影爱好者论坛的设计[J].科技资讯,2019,17(31):6-7.
2. 需求分析
2.1 功能需求分析
2.1.1.学分管理子系统
(1)用户可以设定各类课程需要修读的学分和已修读的学分;
(2)用户可以设定希望各个学期修读的学分数,同时也提供建议修读的学分数;
(3)管理员可以添加课程和相关资料。
2.1.2.选课推荐子系统
(1)通过推荐算法向用户推荐选课;
(2)向用户展示各个课程的相关信息,如往年分数分布、老师简介、课程构成等;
(3)提供线上的师生沟通平台,方便学生了解课程的详细信息。
2.1.3.线上课程推荐子系统
(1)通过推荐算法向用户推荐线上课程;
(2)允许用户检索感兴趣的内容,并根据排序算法向用户展示多个网站的课程检索结果。
2.1.4.系统功能
(1)登录管理:能够对用户的学号、密码进行简单的认证,能够区别学生用户和老师用户;首次登陆需要修改密码并且设置密保问题;
(2)课程评价管理:只有选修过课程的学生用户能够对课程进行评价,允许匿名评价;
(3)讨论区管理:只有未选修过课程的学生用户和任课老师能够发表和回复讨论区,并且对讨论帖子的字数有限制;允许课程的任课老师对课程的讨论区中的帖子进行管理,允许删除帖子;
(4)公告管理:只有任课老师和管理员(辅导员)有该权限,可以添加和删除课程的公告;
(5)课程管理:只有管理员有该权限,管理员可以添加、删除课程,也可以修改课程的资料,如任课教师、课程名称、课程类别等;
(6)用户管理:只有管理员有该权限,可以禁用、启用用户、进行密码重置。
2.2 性能需求分析
2.2.1.精度需求
(1)在执行数据增加时,不允许因为程序的原因导致增加数据失败,也不允许增加重复数据;
(2)执行数据删除操作时,不允许因为程序的原因发生多删除数据、删除数据失败的情况;
(3)数据的修改也要求保持相应的准确性;
(4)不允许因为服务器设置未完成导致的系统错误。
2.2.2.时间性能需求
(1)系统运行不响应时间不能超过10s;
(2)对系统进行操作时,响应时间应在5s之内;
(3)对用户操作时,时间要求如上;
(4)系统应实现24h*7的不间断运行。
2.2.3.故障处理需求
(1)在用户输入不合理数据时,能够进行一些合理的提示,不能因为输入错误而导致系统的错误或者程序停止运行;
(2)系统运行时,能够对服务器或网络通信的故障进行识别并进行提示,当故障排除后,系统能够恢复正常运行;
(3)数据库应该设有备份机制,防止数据丢失。
2.3 运行环境和系统接口需求分析
2.3.1.软件环境需求
(1)客户端:Chrome、Firefox、IE浏览器等。
(2)服务器端:Windows7及以上,Tomcat6.0,JDK1.5及以上,IE6.0及以上版本。
(3)数据库:采用大数据处理平台Hadoop的分布式文件系统HDFS;
(4)网络架构:支持TCP/IP协议;
(5)开发工具或技术体系:为了保证系统的上下兼容性,开发者应使用比较通用的开发工具的较新版本进行开发。
2.3.2.硬件环境需求
(1)服务器CPU:PIII 500以上,内存512M以上。
(2)客户机CPU:P200MMX以上,内存64M以上。
2.4 用户特性分析
2.4.1.学生用户:
(1)在选课时间附近,会产生较大的访问量,估计高峰时段每小时1k~2k;
(2)不同的学生用户具有不同的偏好,根据用户自定义和历史选课行为进行确定。
2.4.2.教师用户:
(1)在选课前会陆续登录,对课程信息进行完善、发布公告、在讨论区讨论,访问量可控,估计高峰时段每小时100~200;
(2)不同的教师用户具有不同的授课风格,根据教师自测和往年学生评价进行确定。
2.4.3.管理员用户:
(1)访问时间和访问量皆可控,估计高峰时段访问量在每小时 100以下。
面对不同的用户角色,界面元素和相应的功能模块有所不同,根据用户角色的不同,目标系统中的页面元素和组成都不同。允许用户根据自己想象中的理想系统向开发人员提出个性化需求,通过多次设计与要求的交互、设计更优秀的系统。
3. 系统设计
3.1 系统结构设计及子系统划分
学分管理与选课推荐系统总体结构图如图1所示。
图1 学分管理与选课推荐系统的总体结构
通过图1可以看出,学分管理与选课推荐系统主要包括四个部分,即学分管理模块、选课推荐模块、线上课程推荐模块和管理模块;数据库中存储的用户相关信息、课程相关信息将展示至学生用户界面,系统通过推荐算法和排序算法实现选课和线上课程的推荐,便于用户选择喜欢的课程。系统的管理员用户和教师用户可以通过管理模块进行课程管理,包括增加、删除课程,修改课程的详细资料和用户的管理,如密码重置、增删、修改用户属性;教师用户可以通过管理模块管理课程和讨论区,如发布公告、删除帖子等。
3.1.2.系统流程图
(1)学生用户使用学分管理与选课推荐系统流程图如图2所示。
图2 学生用户使用学分管理与选课推荐系统的系统流程图
如图2,可以看出学生用户通过使用学分管理模块查询已修读和未修读的学分,使用选课推荐系统对已修课程进行评价,对未修课程、可以选择自定义偏好、同时允许搜索课程名的方式浏览课程信息,也允许从浏览排行表直接浏览课程,并在课程讨论区中参与讨论。在线上课程推荐子系统中,需要先进行需求设定,之后再搜索、浏览自己喜爱的课程。
(2)教师用户使用学分管理与选课推荐系统流程图如图3所示
图3 教师用户使用学分管理与选课推荐系统的系统流程图
(3)管理员用户使用学分管理与选课推荐系统流程图如图4所示。
图4 管理员用户使用学分管理与选课推荐系统的系统流程图
3.2 界面设计
3.2.1.设计风格
(1)网站的设计风格以简约风格为主,通过简洁的表现形式满足用户的需要;
(2)总体印象:主题突出、内容精干、形式简单;
(3)板式布局:栏目集中、分栏目检索明确、导航标志清晰;
(4)色彩运用:不超过三种颜色,使用不突兀、专业大气的颜色搭配;
(5)图片运用:配合文字,展示老师、课程照片;
(6)语言:以中文为主,课程名需要包含英文释义;
(7)网站结构:浏览路线方便快捷、清晰明确。
3.2.2 网页组成设计
(1)登录页面设计
在该页面中,用户通过输入学工号和密码完成登录操作。
(2)导航栏设计
导航栏的组成如图5所示。
图5 学生用户的网页导航栏组成
学生用户的置顶一级导航栏由:个人信息、我的消息、学分管理、选课推荐、线上课程共五个目录组成。
①对于学生用户来说,五个目录皆可用:
1)个人信息:用户信息界面,展示用学生户的权限、年级、个人信息等内容;
2)我的消息:关注或已选课程的公告、课程修改等信息在这个页面中进行展示,同时在讨论区中发帖的回帖消息也会在这个页面中提示。允许用户通过点击跳转到具体的消息页面;
3)学分管理:进入学分管理子系统,在该子系统中包括:查询已修学分、查询未修学分、修改个人学分配置。
4)选课推荐:进入选课推荐子系统,在该系统中包括:已修课程评价、未修课程推荐、课程排行榜、搜索栏、修改偏好。
5)线上课程:进入线上课程推荐子系统,在该系统中包括:偏好管理、教师推荐、先修课程、相似课程、扩展课程和课程排行榜构成。
②对于教师用户来说,学分管理目录不可用,其他目录皆可用,具体的目录跳转页面有改变,如图6所示:
图6 教师用户的网页导航栏组成
1)个人信息:用户信息界面,展示用教师用户的权限、授课方式评价、个人信息等内容;
2)我的消息:往年学生对课程的评价、在讨论区中发帖的回帖消息也会在这个页面中提示。允许用户通过点击跳转到具体的消息页面;
3)课程管理:进入选课推荐子系统,在该系统中包括:课程添加/删除、发布公告、讨论区、课程信息修改。
4)线上课程:进入线上课程推荐子系统,在该系统中可以为课程添加推荐的线上学习资源。
③对于管理员用户来说,导航栏主要目录有一定变化,如图7所示:
图7 管理员用户的网页导航栏组成
1)个人信息:用户信息界面,展示用管理员用户的权限、个人信息等内容;
2)我的消息:往年学生对课程的评价、课程的公告、课程修改等信息、在讨论区中发帖的回帖消息也会在这个页面中提示。允许用户通过点击跳转到具体的消息页面;
3)学生管理:进入用户管理子系统,在该系统中包括:增加/删除学生、修改学生信息、重置密码。
4)课程管理:进入选课推荐子系统,在该系统中包括:课程添加/删除、讨论区管理、课程信息修改。
(3)说明:
子系统中的内容与导航栏一致,以矩形的方式排列,排版简约大方。
(4)图片展示设计:
在课程详细页面,展示课程图片和教师图片,可以选择希望的图片对具体内容进行观看。
3.3 系统功能模块设计
系统功能模块图如图8所示。
图8 系统功能模块结构图
3.3.1.模块1 登录模块
(1)功能描述:对学工号(用户名)和密码进行简单验证,只有本校在册学生和教职工可以登录本系统,并通过查询数据库判断用户属于学生用户/教师用户/辅导员用户,根据身份的不同,对不同级别的用户系统将自动调用不同的访问页面,使用系统提供的与其用户角色相应的各项功能。
(2)算法与流程:
①使用正则表达式保证输入的用户名和密码格式正确;
3.3.2.模块2 系统管理模块
(1)功能描述:本模块负责对系统进行全面的后台管理,包括:
①推荐系统和检索系统的动态维护;
②各个子系统的初始化:清空有关的参数表格、确定当前学期等;
③信息查询:用户基本信息与权限查询、选课结果查询、历史记录查询;
④用户管理:添加管理员、辅导员、教师、学生信息员等,维护用户的基本信息;
⑤讨论区管理:回复公开帖子,删除不合适帖子;
⑥公告管理:发布、更新公告,删除过期公告;
⑦数据备份:定期对系统数据库进行压缩、备份,删除没有保留价值的备份。
3.3.3.模块3 信息查询模块
(1)功能描述:信息查询模块包括课程信息查询和用户信息查询。学生用户可以查询课程的相关信息和教师的个人档案信息,辅导员可以查询学生用户的基本信息和选课结果,教师用户可以查询课程的基本信息。
3.3.4.模块4 讨论区模块
(1)功能描述:用户可以在讨论区通过留言的形式发布公开或匿名帖子,实现意见的双向交流和课程的相互讨论;如学生可以随时向未选课程提出疑问,以往学生可以对课程、任课教师提出教学意见,教师可以针对各个问题做出回答。
3.3.5.模块5 信息浏览模块
(1)功能描述:本模块可以浏览的内容包括:个人信息、课程基本信息、任课教师相关信息、可选课程排行榜、课程公告、讨论区内容;包括:
①个人信息与权限;
②学生用户可以看到自己的已修读学分;
③以往学生对课程的评价;
④课程讨论区的帖子;
⑤校内课程基本信息(课程编号、课程名称、教学方式、授课老师、授课内容、开课时间、授课教室等);
⑥线上课程基本信息(课程名称、课程来源、授课老师、授课内容等)
⑦可选课程推荐结果的排行榜;
⑧线上课程推荐结果的排行榜。
3.3.6.模块6 课程喜爱度计算模块
(1)功能描述:该模块主要负责计算用户对课程的喜爱度,根据计算得到的喜爱度获取推荐候选集,为课程推荐模块提供数据支持;
(2)算法与流程:该模块使用基于用户的协同过滤算法与基于深度学习的矩阵分解推荐模型混合的方法分别计算用户对课程的喜爱度,然后将二者进行线性加权融合得到个性化推荐候选集。使用K-Means算法对用户隐式特征向量和课程隐式特征向量进行聚类存储,模块功能实现的流程如下:
①根据基于深度学习的矩阵分解推荐模型计算用户对课程的喜爱度,进行从大到小的降序排序,为每门课程取Top-N(本系统中取N为10)的课程作为相关课程推荐候选集;
②根据基于用户的协同过滤算法计算用户对课程的喜爱度,用相同的方式获取推荐候选集;
③采用粗粒度权重计算方法获取每种方法对应的线性加权权重;
④根据权重将两种方法获得的推荐候选集进行线性加权融合,得到最终的个性化推荐候选集,讲最终的推荐候选集存储在个性化推荐数据库中。
3.3.7.模块7 课程相似度计算模块
(1)功能描述:该模块的主要功能是计算课程之间的相似程度,然后根据相似程度获取每门课程的相似课程列表(相关课程推荐候选集),为课程推荐模块提供数据支持。
(2)算法与流程:由融合深度学习概率矩阵的结果,可知课程隐式特征向量是依据课程的描述信息获得的,隐含了课程描述的特征信息,所以本系统采用课程隐式特征向量之间的余弦相似度作为课程之间的相似程度:
①将课程隐式特征向量作为MapReduce的输入,根据余弦相似度的计算公式计算向量之间的余弦相似度;
②对余弦相似度进行从大到小的降序排序,为每门课程取Top-N(本系统中取N为10)的课程作为相关课程推荐候选集;
③讲相关课程推荐候选集存储到相关课程推荐数据库中。
3.3.8.模块8 信息检索模块
(1)功能描述:提供信息检索功能,允许学生使用单一检索、关键字检索等方式检索校内课程和在线课程。
3.4 数据库设计
3.4.1.学生用户信息表
3.4.2.教师用户信息表
3.4.3.辅导员用户信息表
3.4.4.用户历史行为记录表
3.4.5.校内课程基本信息表
3.4.6.在线课程基本信息表
3.4.7.课程分类表
3.4.8.课程评价表
3.4.9.帖子表
3.4.10.帖子讨论表
3.4.11.公告表
3.4.12.个性化推荐数据表
用于存储课程喜爱度计算模块得到的推荐候选集。
3.4.13.相似课程推荐数据表
用于存储课程相似度计算模块得到的推荐候选集。
4. 关键技术
4.1 基于协同过滤的推荐技术
4.1.1.推荐系统简介:
(1)推荐系统是指根据用户的兴趣特点和历史行为,为用户推荐感兴趣的项目的软件系统,推荐系统的设计目标是为缺乏相关领域经验或者面对海量信息而无法处理时,为用户提供一种智能的信息过滤手段;用于用户的兴趣爱好各不相同,因此推荐的结果通常是个性化的,即不同的用户群组结果收到的推荐结果往往是不同的。
(2)在本系统中,推荐结果以一个个的排序列表呈现出来,其中项目的序号是由推荐系统所预测的用户对该项目的感兴趣程度决定的。为了预测用户对某个课程的感兴趣程度,推荐系统通过收集用户的相关信息来和课程的相关特征进行匹配进行推荐,也可以收集用户的历史标注信息来预测偏好程度。历史标注信息可以分为显式的标注(例如课程评分、教师评分等)和隐式标注(如选课历史记录),从而丰富推荐系统数据库的内容,使得以后的推荐变得更加精准,从而形成良性循环。
(3)推荐系统通过计算课程信息之间的相似度,为用户推荐相关课程。通过分析用户行为,计算用户相似度,为用户推荐感兴趣的课程。
4.1.2.协同过滤技术简介:
(1)协同过滤技术的基本假设是:如果两个用户A和B在一些项目上具有相似的历史标注模式或行为习惯,那么他们在项目上具有相似的兴趣。一般而言,协同过滤技术都会通过一个数据库来存储用户的历史标注,然后使用这些信息来预测用户的兴趣爱好并据此向用户进行推荐。
(2)在一个典型的推荐系统中,给定一个用户列表{u1, u2, …, um}以及一个项目列表{i1, i2, …, im},根据用户评价矩阵的元素rxy,可以获得用户ux对项目iy的标注;因此,矩阵的第x行就表示了用户ux对所有项目的标注信息,而第y列则表示项目iy的所有评分信息。评分的形式可以分为显式(打分)和隐式(选课历史信息)两种。协同过滤的目的就是为用户提供合理的推荐,在该系统中,需要系统提供推荐的用户被称为活跃用户(active user)。
(3)在实际应用中,用户只会对少量的课程项目进行标注,因此用户评价矩阵是非常稀疏的,这是导致推荐系统精度不高的主要原因之一。
4.1.3.基于内存的协同过滤技术:
(1)通过用户(项目)的标注数据来计算用户(项目)的相似度,然后利用相似度信息进行预测或推荐。基于内存的协同过滤技术方法简单直观,易于实现而且精度较高;一般分为两个步骤:
①根据标注信息计算相似用户(项目)集合(邻居集合);
②根据用户(项目)与邻居集合中的用户(项目)的相似度进行推荐。
(2)典型的基于内存的协同过滤算法:
在该算法中,计算相似度的方法有许多种,如基于皮尔森相关系数(Pearson correlation)、基于余弦相似度(Cosine similarity)、基于欧式向量空间、基于杰卡德相关系数(Jaccard similarity),根据具体问题的不同,各种相似度的适应程度也不同。
(3)基于内存的协同过滤算法的缺点:在评价矩阵稀疏的情况下,相似度的估计往往不够准确,导致无法有效地找到邻居集合从而使得推荐精度不高
4.1.4.基于模型的协同过滤技术:
为了提高推荐精度克服基于内存的方法的缺陷,研究者提出了基于模型的协同过滤算法。
(1)基本思想:采用机器学习技术,建立相关的学习模型,利用评价矩阵中的信息进行训练得到模型参数,然后利用该模型对推荐结果进行预测。
(2)主流方法:主流的基于模型的方法主要包括以下几种:
①基于聚类的方法;
②基于矩阵分解的方法;
③基于回归模型的方法;
④基于隐语义模型的方法;
(3)基于模型的协同过滤的典型算法:
在本系统中,采用基于聚类模型的协同过滤算法,算法设计见后文。
4.2 基于k-Means的协同过滤算法
4.2.1.聚类算法
(1)基本思想:将相似的数据样本归到一个类中,而将不同的数据样本归到其他类中。通常,数据样本点之间的相似性用马氏距离或皮尔森相关系数来衡量。
(2)相似度度量:给定两个数据点X=(x1,x2,…,xn), Y=(y1,y2,…,yn),马氏距离的定义为:
其中,n表示数据点的维度,xi和yi分别表示X和Y的第i维的值,q为正整数,q=1时表示曼哈顿距离,q=2时表示欧几里得距离。
(3)聚类算法的分类:总体而言,聚类算法可以分为三类:
①基于划分的方法;
②基于密度的方法:通过判定区域的密度从而将稀疏区域和密集区域分割开,以数据点稠密的区域作为聚类结果;
③分层聚类算法:通过一定的标准将数据集划分为层次结构以完成聚类
最常用的基于划分的聚类算法为K-Means方法,该算法具有聚类精度简单、实现方式便捷的优点。因此在本系统中,使用K-Means方法完成聚类。-
4.2.2.PCA降维算法
大量的数据可以提供丰富准确的信息,但是对于有限的准确率提升,却要消耗大量的资源,另一方面,许多变量之间也有相关性,如果将变量都孤立起来,在造成计算资源大量浪费的前提下,也会导致很多有用的信息的缺失而导致无法完全利用数据。
(1)降维就是对高维度数据进行处理的方法,降维算法就是保留重要的特征,去除噪声,从而提升数据处理的准确率和处理素的的算法,常用的降维算法有PCA、SVD、FA、ICA等。
(2)算法原理:假设存在一个n维的数据X={x1,x2,…,xn},使用PCA降维算法将数据将为k维,步骤如图9所示
图9 PCA算法流程图
如图9所示,PCA算法步骤为:
①去中心化,每个向量减去自己的平均值;
②计算协方差矩阵;
③利用特征值分解法,得到的特征值和特征值向量;
④把特征值按照从大到小的降序排序,选择其中最大的N个特征值,本系统中特征值选择10个。然后按照N个特征向量分别做行向量组成特征向量矩阵P;
⑤将数据转换到N个特征向量构造的空间中,Y=PX。
(3)数据说明:
4.2.3.K-Means聚类算法
(1)算法原理:K-Means算法是一种Cluster Analysis算法,通过不断取离种子点最近的均值的算法,用来计算数据聚集;
①k值的选择:k值的选取在K-Means算法中至关重要,虽然k值的选择可以影响分类结果,但是对于K-Means算法来说,k值越大越好,但当k值等于样本个数时,无法找到样本之间的关联信息。
②距离度量:常用的距离度量方法包括有序度量和无序度量。马氏距离和欧氏距离的度量都属于有序度量,面对无序的变量,常采用无序的度量方法。
(2)算法步骤:
①将文本中以分词和预处理之后的样本作为训练集,设聚类的簇数为k;
②令Ci=空集,当j在1到m之间递增时。计算样本xj和各簇心向量λi之间的马氏距离;
③找到距离簇心最近的向量xj的簇标记,将样本xj划入对应的簇;
④当i在1到k之间递增式,重新计算簇中心向量,并更新簇中心划分;
⑤输出划分集C。
4.3 融合深度学习的矩阵分解推荐模型
4.3.1.算法思想
针对课程文本描述类推荐场景,在概率矩阵分解算法的基础上融合了深度学习模型,在课程隐式特征向量和用户隐式特征向量的获取方式上做出改进。该算法来自参考文献[11]。
该模型在课程隐式特征向量的学习过程中加入了Attention-CNN网络,通过该网络对课程的描述信息进行特征提取;在用户隐式特征向量的学习过程中加入了LSTM网络,根据用户历史记录提取用户的兴趣特征,从而获取用户隐式特征向量。两个网络的使用能够更准确的获取课程隐式特征向量和用户隐式特征向量,提高推荐的准确性。
4.3.2.模型构成
本模型由两个部分构成。
(1)Attention-CNN课程隐式特征提取网络:
①输入:课程描述信息的向量表示;
②输出:课程隐式特征向量。
(2)LSTM用户隐式特征提取网络
①输入:用户历史记录的隐式特征向量构成的序列;
②输出:用户隐式特征向量。
4.3.3.Attention-CNN课程隐式特征提取网络
(1)算法思想:通过加入注意力机制的卷积神经网络从课程的描述信息中进行特征提取,CNN可以根据全局信息有效地提取潜在特征;根据人类视觉注意力机制可知,用户只会关注课程的某些方面,关注课程全部信息的可能性很小。
(2)课程信息向量化表示算法流程:
①分词处理。选用jieba分词工具进行;
②词向量获取。常用的词向量表示方式由One-Hot和Word Embedding两种:
1)One-Hot:将文本的所有词语构成一个词典,将词典中的每一个词都表示为一个n维词向量,不考虑词序问题,可能会造成“维数灾难”;
2)Word Embedding:可以将一个词表示为自定义维度的向量表示,一般通过神经网络获得,不仅反映上下文语义信息,而且维度可控。
3)本系统采用Word Embedding的词向量表示方法,使用Google开源的词向量训练工具Word2Vec进行训练得到词向量;
③获取课程信息的向量化表示。
(3)Attention-CNN的网络结构:
Attention-CNN的网络结构如图10所示:
①卷积层:根据课程信息的向量化表示提取课程的隐式特征,利用多个不同的共享权重的卷积核对输入进行卷积预算,从而获得课程信息的隐式特征;
②最大池化层:使用某一位置相邻区域最大特征值来代替网络在该位置的输出,以达到特征筛选降低特征维度的目的;
③Attention:在该层引入了注意力机制,通过自动加权的方式对整体信息进行局部重点的关注;
④输出层:将上一层输出的高维特征通过非线性函数转化为特定维度的特征向量。
4.3.4.LSTM用户隐式特征提取网络
LSTM网络擅长处理序列数据,其可以将历史信息保存在Cell状态中,通过门结构控制Cell状态的更新,从而提取用户长期、短期的兴趣特征,并且可以解决循环神经网络的长期依赖问题。
(1)算法思想:将用户隐式特征提取看做一个序列数据处理问题,采用LSTM网络从用户历史记录中提取用户隐式特征,通过LSTM网络的记忆性,记忆用户过去和现在对课程的偏好,挖掘用户对课程偏好的变化情况。
4.3.5.模型训练步骤
(1)根据课程评分、分词后的课程信息和训练好的词向量,构造评分矩阵R;
(2)将课程信息的向量化输入到Attention-CNN网络,得到初始化的课程隐式特征向量V;
(3)根据获取的V和用户历史信息钩子用户历史评分课程序列,并通过LSTM网络初始化用户隐式特征向量矩阵U;
(4)根据下式更新U,V:
(5)根据更新后的U、V学习LSTM和Attention-CNN网络中的参数;
(6)循环执行(4)-(5)直到下式的值收敛或达到最大迭代次数:
(7)获得训练好的用户隐式特征向量U和课程隐式特征向量矩阵V,同时保存网络参数;
(8)输入测试集测试。
4.4 粗粒度权重的计算方法
4.4.1.技术目标
粗粒度权重计算的目标是最小化误差平方和,首先根据不同方法计算用户对课程的预测喜爱度,然后根据预测喜爱度构建目标函数并利用消元法进行求解。
4.4.2.算法步骤
(1)根据融合深度学习的概率矩阵分解推荐模型和基于用户的协同过滤算法,分别计算每位用户对自己已评分课程的预测喜爱度,记为和。
①:根据融合深度学习的概率矩阵分解推荐模型计算获得的用户i对课程j的预测喜爱度。
②:根据基于用户的协同过滤算法计算获得的用户i对课程j的预测喜爱度。
(2)根据预测喜爱度构建目标函数,通过最小化目标函数求解不同方法对应的权重值、目标函数如下式:
目标函数的含义是最小化实际喜爱度与预测喜爱度误差的平方和。其中,α1表示融合深度学习的概率矩阵分解推荐模型对应的权重,α2表示基于用户的协同过滤算法对应的权重,Rij表示用户i对课程j的实际喜爱度;
(3)采用消元法求解目标函数,得到不同方法对应的权重值。
4.5 大数据处理平台Hadoop介绍
Hadoop是由Java语言开发实现的开源分布式计算平台,可以充分利用分布式集群的威力进行高速的运算和存储。Hadoop的核心技术分为分布式文件存储系统HDFS和MapReduce编程模型、
4.5.1.分布式文件系统HDFS
(1)HDFS是Hadoop的核心子项目,它主要用于大规模数据集的存储,通过分布式算法,讲数据存储到集群中的不同机器上;
(2)HDFS采用主从架构来实现数据存储,其包括四个部分:
①Client:分布式文件系统的客户端,主要负责处理用户对文件的访问请求和上传请求;
②NameNode:分布式文件系统的管理节点,用于管理整个分布式文件系统的命名空间,它维护着文件系统树及整棵树内包含的所有文件和睦路,记录着每个文件中的Block所在的DataNode信息,负责处理Client的读写请求;
③DataNode:是分布式文件系统的数据节点,用于存储数据,负责存储文件中的Block数据块。Client或NameNode可以向DataNode读取或写入数据,DataNode会向NameNode定期汇报自己存储的数据块信息;
④Secondary NameNode:相当于NameNode的从节点,通过定期合并NameNode的元数据镜像文件盒事务日志,使自身与 NameNode保持一致的状态,以便在NameNode出现故障时对其进行回复。
(3)文件上传或读取步骤:
①Client向NameNode发起获取元数据信息;
②NameNode根据请求向Client返回DataNode的信息;
③Client根据返回的DataNode信息向DataNode进行数据的读取或写入。Client在向DataNode中写入数据时,如果文件大小大于默认Block大小(64M),Client会按照默认数据块的大小将文件分割为多个Block并根据NameNode返回的DataNode地址信息,将数据按顺序存储到DataNode上,并备份多个(默认备份数为3)。
4.5.2.MapReduce编程模型
(1)MapReduce是Hadoop的另一个核心组件,主要用于大规模数据集的并行计算。
(2)基本思想是:分而治之;首先将一个计算任务拆分为多个小的计算任务,然后将各个小的计算任务发到集群中的各个服务器上进行独立计算,最后将各个服务器的计算结果进行合并,得到最终的计算结果。
(3)MapReduce在执行计算任务时,分为两个阶段完成:Map阶段和Reduce阶段、每个阶段都以键值作为输入和输出、
①Map阶段:
1)读取HDFS上的输入文件内容,并对其进行分片,每个分片会交给一个Map任务来处理。Map任务在处理分片的时候,首先会将分片中的每一行数据解析成key-value键值对的形式,然后再调用Map方法对每个键值对进行处理;
2)可以根据业务需求在Map方法中编写键值对的处理逻辑,然后输出新的键值对。在本系统中,课程键值对的处理逻辑为基于K-Means的协调过滤技术;
3)对Map输出的键值对进行分区操作,具有相同key值的value会被放到相同的集合中,最终得到key-value_list。
②Reduce阶段:
1)按照分区的不同,将多个Map任务的输出分别传输到不同的Reduce任务。Reduce任务接收到不同的Map任务输出后,会先将其进行合并,然后再使用Reduce方法进行处理;
2)开发者根据自己的业务需求在Reduce方法中编写对键值对的处理逻辑,最后输出新的键值对;
3)将Reduce阶段输出的键值对保存到HDFS上、
(4)本系统中MapReduce计算的流程图如图10所示。
5.现有技术调研
5.1 相关系统调研
总而言之,现有的系统往往只能完成校内课程推荐或线上课程推荐之一,未调研到将二者结合起来的系统。
本系统中采用的基于用户的协同过滤算法与基于深度学习的矩阵分解推荐模型混合的推荐技术具有理论优势;采用Hadoop进行数据库管理先进、功能强大。
同时,本系统依旧存在一些改进空间,如增加爬虫算法、优化排序算法等。
5.2 相关论文调研
通过对相关文献进行调研,本系统的特点可以得到更清楚的展示。
[1] 王素琴,吴子锐.利用LSTM网络和课程关联分类的推荐模型[J].计算机科学与探索,2019,13(08):1380-1389.
文献为基于Hadoop平台和协同过滤算法的在线课程推荐系统,采用分布式文件系统存储数据,随着平台上的课程资源变化而变化。
与本系统相比:该文献中的系统无法对多种网站的资源整合,也无法结合校内课程提出优化。
[2] 朱华. 基于多特征排序模型的网络课程推荐算法研究与应用[D].浙江大学,2017.
文献提出了给予多特征排序模型的网络课程推荐算法,与传统的协同过滤算法和给予内容的推荐算法相比,融入排序学习的技术可以训练出最佳的模型组合。
与本系统相比:排序系统的引入值得本系统的借鉴,该文献中的系统无法对多种网站的资源整合,也无法结合校内课程提出优化。
[3] 羊雪玲. 基于Django的课程推荐系统的设计与实现[D].华中科技大学,2016.
文献中提出了Django框架和Redis算法,使用Python语言进行开发,系统具有较好的扩展性和维护性,同时Django框架自带后台管理功能,可以自动生成后台管理;使用Redis作为缓存服务器,与传统的关系数据库相比,查询和修改都较快。
与本系统相比:本系统中使用的协同过滤算法具有易于实现、维护和测试的特点,同时解决了数据稀疏性问题,查询速度较快;但是存在增量训练问题,所以文献中的系统也具有相应的优点。
面对数据不太大,对查询速度要求高的情况,本系统更好。
[4] 王剑,陈涛.个性化e-Learning协作学习推荐系统研究[J].中国远程教育,2016(07):44-51+76+80.
文献提出了基于e-learning的推荐系统,该系统采用基于属性的多维度模型的素材推荐途径,将基于内容的过滤、协同过滤以及一些混合的途径等推荐方法相结合,可以自适应地依据学习者的偏好和逐渐改变的兴趣推荐合适的学习素材。
与系统相比,该系统需要协作学习和协作学习过程的记录,与需求相悖。
[5] 李慧. 基于Web爬虫的课程推荐系统研究[D].北京理工大学,2016.
文献中使用Hash的MongoDB分片技术实施多台服务器的负载均衡,使用SCRAPY爬虫框架完成爬虫。
本系统中使用的HDFS分布式文件管理系统与MongoDB数据库具有类似的性质,MongoDB自带分布式文件系统GridFS。Hadoop可以解决MongoDB处理的场景,额外的提供了一个交错的工具结合,可以进行数据的查询、分析和处理。对于Elasticsearch、MongoDB和Hadoop:如果仅仅想要通过关键字和简单的分析,那么Elasticsearch可以完成任务;如果需要查询文档,并且包含更加复杂的分析过程,那么MongoDB相当适合;如果在海量的数据,需要大量不同的复杂处理和分析,那么Hadoop提供了最为广泛的工具和灵活性。
因此本系统的Hadoop在复杂处理和分析中更胜一筹,同时文献中的使用爬虫框架对课程资源网站进行爬取的过程值得借鉴。