基于协同过滤算法的大类专业分流实时动态系统的构建研究
——以北京林业大学为例

2020-04-20 10:24
中国林业教育 2020年2期
关键词:分流志愿协同

(北京林业大学信息学院,北京 100083)

2015年,北京林业大学信息学院开始实行大类招生。新生入学后通过3个学期的计算机类基础课程和通识课程的学习,依据自身的学习情况及未来的职业规划,在大二第一学期结束后,可自主选择心仪的专业,达到计划学分后准予毕业。为确保大类招生专业分流指标的科学性,充分发挥大类招生制度的优越性,学校依据学生的成绩、志愿、专业培养要求等要素进行综合评测后确定专业分流结果。然而对学生学习等各要素的数据收集耗时费力,加之近年来高校的办学规模不断扩大,以往的专业分流经验已不能适应目前的实际情况。例如,随着学校办学规模的扩大,招生人数不断增加,参与专业分流的学生人数逐年增多,传统的纸质化专业分流工作既耗费人力又浪费资源。同时在专业分流过程中,参与分流的学生无法全方位获得志愿填报的整体情况,导致部分分数中等的学生错失进入更好专业的机会。为解决以上问题,笔者提出开发基于协同过滤算法的大类专业分流实时动态系统,以便于教务管理人员、教师与学生之间进行沟通,提高专业分流的效率,节省人力资源。此系统可以根据学生的测试结果进行专业推荐,学生可自主选择专业,保证了大类专业分流工作的公开、公平和公正。

一、协同过滤算法的内涵

(一)协同过滤算法的基本思想

目前计算机领域中适用范围较广的推荐算法主要有基于规则推荐的算法、基于内容推荐的算法、协同过滤推荐算法和混合推荐算法(又称组合推荐算法)[1],这4种算法各有优缺点。常用于计算机领域的推荐算法及优缺点见表1。

表1 计算机领域常用的推荐算法及其优缺点

其中协同过滤算法的基本思想是:找到与当前用户Ccur相似(比如兴趣相似)的其他用户Cjs,计算对象S对于用户的效益值u(Cjs,S),利用效益值对所有S进行排序或者加权操作,找到最适合当前用户Ccur的对象S*[2]。协同过滤算法的基本思想非常易于理解,就像在日常生活中,人们往往会利用网络或前辈经验对一些事物作出个人的判断和选择。现有的国内外推荐系统大部分是基于其相似用户对某一内容的评价向目标用户进行推荐,而在本系统智能专业推荐模块使用的算法中,只需找到最相似的用户即可。因此,本系统基于此算法构建大类专业分流实时动态系统。

根据协同过滤算法的基本思想可知,协同过滤算法需要将基础用户作为参考才能进行协同推荐,基础用户对该算法而言是不可或缺的要素。

(二)协同过滤算法的核心

相似度计算是协同过滤推荐算法的核心,要寻找最适合当前用户Ccur的对象S*需要计算用户之间的相似度。根据霍兰德[3]人职匹配理论,人格一共被分为6种不同的类型,每一种类型的人格都有着不一样的特点。笔者基于霍兰德人职匹配理论,查阅相关资料提取出15个区分度明显的关键词,依据15个关键词设计了40道具有专业区分度的测试题目,并形成调查问卷,面向大类专业分流的学生开展了调查,共发放问卷300份,收回有效问卷203份。

通过余弦夹角公式(1)计算出当前用户Ccur和4个基础用户C的余弦相似度(similarity),将余弦相似度(similarity)最小的基础用户C作为推荐专业,经过测试得出推荐结果的精确度为67.3%。

余弦夹角公式(1)

通过皮尔森相关系数公式(2)计算当前用户Ccur和5个基础用户C的皮尔森相关系数r,将皮尔森相关系数r最小的基础用户C作为推荐专业,经过测试得到推荐结果的精确度为70.2%:

皮尔森相关系数公式(2)

由此可见,使用公式(2)得到的推荐结果精确度较高,因此将公式(2)作为大类专业分流实时动态系统的协同过滤推荐算法中用户间相似度的计算方法。

二、基于协同过滤算法对大类专业分流实时动态系统的分析

(一)系统数据流的分析

首先,笔者从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。对于复杂的含有多重功能的系统可以按照层次结构进行逐步分解,并以分层结构流程图来反映这种结构关系,从而可以清楚地表达和理解整个系统的结构内涵[4]。基于协同过滤算法的大类专业分流实时动态系统中涉及到的主要数据流包括学生基本信息、学生志愿填报信息、学生排名信息等。学生基本信息数据流程见图1。

图1 学生基本信息的数据流程

输入学生的基本信息后,本系统会将学生的基本信息存入数据库中,并在前端页面显示出来。学生填报志愿的数据流程见图2。

图2 学生填报志愿的数据流程

学生填报完志愿后,本系统会将学生的志愿信息存入数据库,并根据成绩显示排名,专业分流结束后,学生可以打印最终志愿表。

(二)系统功能需求的分析

本系统主要涉及学生、教师和教务管理人员3个角色。

学生通过此系统可以实时查看自己在本专业的排名、进行专业倾向测试、推断出适合自己的专业、了解更多的专业信息、查看往届专业分流的结果、获取往届学生的建议、进行志愿填报、查看专业分流结果、下载最终志愿表。教师可利用该系统发布所在专业相关的资料和资讯,增加学生了解专业的途径,并且可以统一解答学生对于专业的疑问,确定专业分流名单。教务管理人员使用本系统发布专业分流结果的通知,设置专业分流的起止时间,下载专业分流的结果。

三、基于协同过滤算法的大类专业分流实时动态系统的设计

(一)系统结构的设计

本系统采用的是B/S 三层架构模式。通常意义上的三层架构就是将整个业务应用划分为表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的是为了体现“高内聚,低耦合”的思想[5]。

1.表现层

表现层位于三层架构的最上层,与用户直接接触,主要是B/S信息系统中的Web浏览页面。

2.业务逻辑层

业务逻辑层位于表现层与数据访问层的中间位置,主要功能是对具体问题进行逻辑判断并执行操作。当业务逻辑层接收到表现层的用户指令后,会连接数据访问层,实现3层之间的数据连接和指令传达。

3.数据访问层

数据访问层是数据库的主要操作系统,具有数据的增加、删除、修改、查询等操作功能,并将结果反馈到业务逻辑层。

学生、教师、教务管理人员可以通过标准浏览器软件对系统进行访问操作,所有的操作通过业务逻辑层的应用服务管理进行,只有当涉及到数据存储的时候才与数据库服务器发生联系。

本系统主要采用Java web的MVC框架实现的,MVC框架最大的优点是将模型(Model)、视图(View)和控制(Controller)层分离,模块化的软件开发形式使得系统的开发维护变得更为容易。本系统数据库使用开源的数据库管理系统MYSQL,通过Navicat图形界面管理工具进行数据库的搭建。B/S三层架构与MVC框架的关系见图3。

(二)系统功能的设计

笔者通过对信息学院大类分流工作的分析,对本系统应具备的功能进行了设计。基于协同过滤算法的大类专业分流实时动态系统功能结构见图4。

图3 大类专业分流实时动态系统的B/S 三层架构与MVC框架的关系

图4 基于协同过滤算法的大类专业分流实时动态系统的功能结构

学生模块包括学生登录、填写志愿、修改志愿、查看专业分流结果、下载志愿去向表、智能专业推荐等功能。其中智能专业推荐功能是指学生在填报志愿前,要先回答系统提供的40道有关专业分流的题目,系统根据学生的答题结果推荐相应的专业。填写志愿功能是指学生在特定的时间内,按照自己的意愿填报意向志愿。查看专业分流结果功能是指填报志愿结束后,学生在系统里可以查看自己当前的专业排名,也可以查看在全校的排名,从而了解自己的专业分流结果。

教师模块包括教师登录和上传资料功能,其中上传资料功能可帮助学生在填报志愿前更好地了解该专业,同时教师还可以将专业的宣传资料、视频等上传到系统。

教务管理人员模块包括设置专业分流时间、教务人员登录、发布有关专业分流的通知、下载专业分流结果等功能。其中,设置专业分流时间包括设置专业分流的起始时间和分流时长;发布有关专业分流的通知,包括发布专业分流时间通知和分流结果通知等;下载分流结果主要是指在专业分流工作结束后下载专业分流结果,作为备份资料。

(三)系统数据库结构的设计

数据库结构设计的好坏将会对系统的应用效率、功能的扩展与完善以及实现的效果产生直接影响,合理的数据库结构设计可以提高存储的效率,保证数据的完整和一致[6]。本系统的数据库主要由用户实体、学生实体、教师实体和专业实体组成。基于协同过滤算法的大类专业分流实时动态系统数据库结构设计见图5。

图5 基于协同过滤算法的大类专业分流实时动态系统数据库的结构

1.用户实体

存储登录需要的基本信息,包括用户名、密码、用户类型3个属性,其中用户类型决定了用户登录成功后进入各自所属的页面。

2.学生实体

记录学生的详细信息,包括姓名、学号、性别、成绩、联系方式等属性,其中学生的成绩决定了学生填报志愿的顺序。

3.教师实体

记录教师的详细信息,包括姓名、教工号、性别、联系方式等属性。

4.专业实体

记录专业的详细信息,包括专业号、专业名称、专业介绍等属性。

四、基于协同过滤算法的大类专业分流实时动态系统的实现

(一)学生模块

学生登录页面进入系统后转向学生主页,学生主页会显示学生的基本信息,学生可以在这里完善修改自己的基本信息。学生用户在进行志愿填报前应进行智能推荐专业测试,学生可以参考测试结果进行志愿填报;之后,学生要在规定的时段内填报志愿并提交,如果需要修改,应在填报志愿规定的时间内进行;最后专业分流结束后,学生可以下载最终志愿表,其具体实现过程如下。

1.学生登录

学生用户在前端页面输入用户名和密码,点击提交后会通过form表单传到服务连接器(servlet),之后根据获得的用户名和密码,借助面向对象的数据库接口(data access object)从数据库中查询用户名和密码是否合法,若合法则将学生的基本信息存入会话控制(session)中,会话控制(session)再将学生的基本信息传到学生的主页面。

2.智能专业推荐

学生在进行专业选择时存在自我定位不明确的现象,此功能采用基于用户相似度的协同过滤算法来实现学生用户的专业推荐[7],从专业的角度为学生提供参考意见。学生首先进入智能专业推荐的答题页面进行答题,之后将答题结果提交到后台。系统依据皮尔森相关系数公式进行相似度的计算,匹配得出相似度最高的专业,供学生参考。

3.填报志愿

学生在学校规定的时间段内进行志愿的填报,志愿填报采用滑动框排序的形式,这种填报形式可以避免学生漏填志愿。

专业排序的结果以列表的形式传到服务连接器(servlet),并通过面向对象的数据库接口(data access object)存入数据库。同时后端将最新的专业排名存入会话控制(session),并在专业排名页面显示。

(二)教师模块

1.上传资料

教师模块的一个主要功能为上传资料。教师前端页面提供文件框,教师可在本地文件夹选择需要上传的文件,通过form表单提交到服务连接器(servlet),在服务器中的file文件夹下新建文件,服务连接器(servlet)通过文件流的形式将本地的文件复制到服务器新建的文件中。

2.确定专业分流面试名单

教师管理模块的另一主要功能为确定专业分流的学生名单。由于学生在进行志愿填报时可能出现选择某个专业的人数多于预计的人数,此时就需要对学生进行面试,教师可以通过本系统勾选出需要面试的学生。

(三)教务管理人员模块

教务管理人员模块最主要的功能是设置专业分流的时间。教务管理人员点击设置专业分流时间框后,系统通过前端JS(Java Script)技术展示时间表供教务管理人员用户选择,设置专业分流时间间隔单位为分钟,默认是60分钟。专业分流结束后点击“提交”按钮,后台会将这两个时间存入数据库,此时通过Java计时器进行计时,保证学生用户在专业分流时间开始后才能进行志愿填报。

基于协同过滤算法的大类专业分流实时动态系统实现了学生、教师和教务管理人员3类用户所需要的志愿填报、下载专业分流结果、设置专业分流时间等基础功能,并在此基础上实现了基于协同过滤算法的智能专业推荐功能,同时还能为学生提供各种专业参考信息,帮助学生选择更适合的专业。

目前基于协同过滤算法的大类专业分流实时动态系统已在信息学院部分学生中进行了试用,系统功能的完整性和稳定性都经受住了考验,并得到了良好的反馈和评价。试用结果显示,使用本系统进行专业分流,可在一天之内结束专业分流工作,与利用人工进行专业分流的方式相比,大大提高了专业分流的质量和效率。据试用此系统的学生反映,本系统的界面简洁,交互性好,有良好的体验度,所以本系统也具有良好的推广性,可建议其他专业进行试用。

资助项目:北京林业大学2018年度大学生创新创业项目“基于协同过滤的大类专业分流实时动态系统的研建”,项目编号S201810022089。

猜你喜欢
分流志愿协同
基于4G和5G上下行分流策略研究
涉罪未成年人分流与观护制度比较及完善
以志愿,致青春
输入受限下多无人机三维协同路径跟踪控制
家校社协同育人 共赢美好未来
蜀道难:车与路的协同进化
拥有《鹿鸣》书与卡,填报志愿成行家
NSA架构分流模式
志愿中国
“四化”协同才有出路