赵秀梅 赵宗昌 袁卫华 刘云娇
1(山东建筑大学计算机科学与技术学院 山东 济南 250101) 2(山东大学附属中学 山东 济南 250199) 3(山大地纬软件股份有限公司 山东 济南 250101)
现今,为培养适应社会发展和地方经济需求的多元化的应用型创新人才,众多本科院校逐步实施“以学生为本”的学分制,允许学生根据自己的兴趣安排个人修学计划。然而,很多低年级学生不了解当前企业的具体需求及其发展趋势,学习缺乏方向性;没有充分了解各种关键技能与课程的关系、课程对基础能力的需求,学习计划缺乏完备性和条理性。此外,多数地方院校所实施的“专业教师指导机制”因专业教师时间和精力有限,存在着“对人才需求分析不足、信息获取时间长、指导力度受限”的问题。目前大量研究者利用各种推荐算法,根据选课历史记录挖掘学生兴趣点,进行课程推荐,提高学生选课效率。然而,这些研究通常不能有效反映人才需求/专业技能与课程之间、课程与课程之间的关系,不能使学生很好地了解专业学习整体框架、各种技能修学途径、就业及发展前景等。对于兴趣不明确、选课记录少的低年级学生推荐效率低、指导力度小。因此,本文研究并确立了“基于协同过滤的专业学习指导平台”,通过“专业技能需求分析、课程与技能关联关系分析、学习指导与推荐”三个不同层次的校企协同分析,构建企业人才需求、技能、课程之间的加权关联关系,并能根据学生修课情况估计学生专业技能水平,同时结合学生兴趣,提供多种基于协同过滤的双向查询与修学计划推荐服务,并以图形化输出提升系统的友好性。
为了提高选课效率、满足学生个性化学习的需求,众多研究者将各种个性化推荐技术应用到选课系统。个性化推荐技术根据用户的兴趣特点和需求,向用户推荐可能感兴趣的信息、产品等。传统的推荐方法主要包括协同过滤、基于内容的推荐方法和混合推荐方法[1]。其中协同过滤应用最为广泛,其基本思想是:根据用户对项目的评分数据,计算目标用户(项目)与其他用户(项目)的相似度,从而根据相邻用户(项目)为目标用户完成推荐[2]。文献[2-11]以协同过滤技术为基础为用户提供课程/学习资源推荐。同时,为提高推荐效果,文献[2]使用标签技术和关联规则算法发掘用户可能感兴趣的知识内容,文献[3]对课程和学生进行加权处理,文献[7]综合应用学生属性和课程特征,文献[8]在Hadoop平台上使用MapReduce算法来加快系统整体运行速度,文献[9]增加了标签和评分预测机制;为解决数据稀疏和冷启动问题,文献[5]在充分利用用户注册信息的基础上增加了预测填充机制,文献[6]融合了基于内容的推荐,文献[10]对用户兴趣和课程建模并完善用户-课程评分矩阵;文献[4]通过课程进阶关系确保用户课程知识结构的健壮性。此外还有研究者应用关联规则数据发掘[12-13]、潜在因子关系矩阵[14]、课程知识图谱[15]等技术来提高个性化课程推荐的效率。
但是,这些已有研究成果不能清晰地展示知识点、课程、专业能力与企业人才需求之间的关联关系,不能使学生全面了解专业技能及其就业前景,也就不能使学生很好地理解系统推荐结果对能力培养的作用,不利于更好地激发学生的学习兴趣;同时,在学生不能明确把握自己的学习兴趣、没有开始学习专业课或已修专业课数量少而所在专业又存在多个学习方向时,推荐效率明显降低。为此,本文研究并确立了具有图形化接口,全面考虑“课程、专业技能与人才需求”关联关系,并提供多种双向查询推荐服务的“基于协同过滤的专业学习指导平台”。
基于协同过滤的专业学习指导平台充分利用企业的专家分析、技能培训、员工评价记录和人才需求信息等资源,通过“线上线下”校企双向协同,实现具有专业技能需求分析、课程与技能关联关系分析、学习指导与推荐三个层次的专业学习指导。该平台的层次模型如图1所示。
图1 基于协同过滤的专业学习指导平台层次模型
专业技能需求分析层是基于协同过滤的专业学习指导平台的基础层,学校需要安排专门的指导教师与企业专家协同完成“线上线下”专业技能需求分析,并实现定期更新,具体如图2所示。学校线下指导教师需要带领团队,对相关行业企业进行广泛调研,并与企业专家进行线下沟通,了解企业对专业技能的需求,了解企业专家对人才需求趋势的预测,细致了解相关技能对重要知识点的基本要求,汇总并整理相关信息,形成基础数据。之后,由线上指导教师针对本专业特色,对基础数据做进一步的筛选和细化。录入平台系统后,由企业线上专家进行协同确认,形成最终的专业技能需求报告。
图2 专业技能需求分析
在课程与技能关联关系分析层中,学校专业指导教师细化专业培养方案的目标技能,梳理校内专业课程(含集中实践教学环节)开设情况以及所包含的知识点,确立校内培养的技能常规集合(即TS)和关键知识点集合(即KS)。同时,分析专业技能需求报告,获取技能需求集合(即TI)和关键知识点需求集合(即KI),比较二者与TS和KS集合的差异,确立技能差异集合(即TD=TI-TS)和知识点差异集合(即KD=KI-KS)。学校专业指导教师在企业专家的协同下,充分利用企业的师资和培训资源,确立弥补技能、知识点差异的具体方法,如:新开选修课、慕课、企业讲座/培训、第二课堂、学生自学等,并将其中可控方式(如前三种)纳入专业培养体系,作为独立课程,或者作为特殊辅助课程。在学校政策允许的情况下,建立特殊辅助课程与专业课程之间的学分置换关系,以激发学生学习特殊辅助课程的积极性。对于不可控方式,也应尽可能多地为学生集中提供可用学习资源。
根据专业技能需求完善专业教学环节的同时,分析知识点间、课程(含特殊辅助课程)间、知识点与课程间的关联(如前驱后继、包含等关系),分析知识点、课程与专业技能之间的关联,建立相应的关联关系库,并确立该关联关系库的查询规则,以实现根据目前技能查找需要选修的课程/知识点、根据当前课程或知识点查找其前驱或后继对象的基本功能。具体如图3所示。
图3 知识点、课程与技能关联关系分析
学习指导与推荐层是基于协同过滤的专业学习指导平台的用户接口层,主要完成对下层关联关系库和查询规则的升级,并在协同过滤技术的基础上,利用近邻查找与分析完成双向查询,从而为用户提供多种修学计划推荐服务,并实现推荐、分析结果的图形化输出。具体如图4所示。
图4 学习指导与推荐
该层在对用户提供服务之前,需要依据学校所积累的学生在校学习信息、就业信息,连同关联联系库,确定各课程对所关联技能的加权值。而该加权值的确定通常有两类方法。
1) 由专业指导教师仔细研究知识点、课程与专业技能之间的关联关系,梳理专业培养方案,研究课程对所关联专业技能的学时分配,研究学生培养的实际效果,并结合专业指导教师自身的学生培养经验,设定各课程对所关联专业技能的加权值。
2) 借助各种统计分析算法,如因子分析等,根据相关历史记录,确立课程与算法中关键因素之间的关系,确立算法中关键因素与专业技能之间的关系,进而确立课程对专业技能的加权值。
两类方法中,前者对专业指导教师经验的依赖性较强,而后者则需要大量学生在校学习信息和就业信息的支持。在完成课程对专业技能的加权值的设定后,升级关联关系库,形成本层所需要的加权关联关系库,同时对查询规则进行升级,以便于提供基于协同过滤的双向查询推荐服务。
除基本的知识点、课程与专业技能关联关系查询外,双向查询推荐服务在协同过滤技术的基础上,查询加权关联关系库,实现各种修学计划的推荐服务,其中比较典型的有:
1) 根据学生感兴趣的企业岗位或目标专业技能进行修学计划推荐。若由学生直接选择所感兴趣的目标技能,则查找并列举对目标技能要求强度超过阈值的就业岗位,作为目标岗位。否则,将学生感兴趣的企业岗位作为目标岗位,将目标岗位所需要的要求强度超过阈值的专业技能作为目标技能。查找在目标岗位上工作的毕业生,计算此类毕业生在校学习期间目标技能值的平均值,以此作为用户目标技能的期望值,查找K近邻(毕业生)信息。以专业培养方案中必修课设定和选课基本要求为约束条件,以K近邻的修学计划为筛选补充依据,以目标技能为终点,双向检索加权关联关系库,完成修学计划推荐。
2) 查询显示常见的完整的修学计划。读取毕业生就业岗位信息,按照其所需要的专业技能及其要求强度进行聚类,选取每一类的中心岗位。以中心岗位为目标岗位,以中心岗位所需要的要求强度超过阈值的专业技能为目标技能,按照与第1)类服务类似的方法,完成每一类就业岗位修学计划的推荐。
3) 根据学生当前已修课程集合(记为SA)和目标技能进行修学计划推荐。计算该学生的当前能力值TSA,查找对目标技能(其确立与第1)类服务相同)要求强度超过阈值的就业岗位作为目标岗位。查找在目标岗位上工作的毕业生,计算此类毕业生通过SA课程所获得的能力值,以TSA为目标,查找K近邻信息。以专业培养方案中必修课设定和选课基本要求为约束条件,以K近邻的修学计划为筛选补充依据,以SA课程为起点,以目标技能为终点,双向检索加权关联关系库,完成后继修学计划的推荐。
4) 根据学生SA课程推荐后继修学计划。计算该学生当前的单项/综合能力值,将值最大的单项能力/综合能力记为T_M,其值记为Tmax。计算毕业生通过SA课程所获得的T_M能力的值,以Tmax为目标,查找K近邻信息。以专业培养方案中必修课设定和选课基本要求为约束条件,以K近邻的修学计划为筛选补充依据,以学生SA课程为起点,完成后继修学计划的推荐。
其中,1)、2)两种服务主要适用于刚入学的新生,使其能初步了解在校学习的整体情况以及各种目标技能的修学途径。以上各种服务还可以向学生提供K近邻的后继学习统计分析、就业去向分析、发展状况分析等,使学生全面了解学习内容、修学线索、就业及发展前景等信息,从而提供更细致地学习指导与推荐。
为了提高系统的友好度,学习指导与推荐层还提供图形化输出接口,以简洁图形或图表的形式输出所查询的各种关联关系、所荐的修学计划和各种分析结果。
本文以本校网络工程专业为核心进行了基于协同过滤的专业学习指导平台的建设。
期间,对该专业学生就业单位典型代表的专业技能需求进行了调研、汇总分析;对该专业近40门常开专业课(含选修课)和8门集中实践教学环节(以下统称为课程)进行了知识点、课程与技能关联关系分析;整理了2011级-2015级5届学生的在校学习信息和就业信息。同时,利用因子分析技术对这些数据进行了分析:KMO统计量为0.922,大于最低标准0.5,Bartlett球形检验的结果中Sig.项的值为0.000,小于0.05,说明这些数据适合做因子分析;主要成分列表中特征值大于1的前14个主成分的累积贡献率超过70%,故选前14个公共因子;公因子方差结果中每个指标变量(即课程)的提取值均在0.5以上,且多数接近或超过0.7(如图5所示),因此所选公因子能较好地反映原始指标变量的大部分信息。根据所得的旋转成分矩阵对各个公共因子的专业能力含义进行了解释,进而确立了各课程对各专业能力的加权值,其中,部分公共因子上具有较大载荷的课程及对因子能力的解释如表1所示。
图5 主成分列表、公因子方差、旋转成分矩阵部分内容
表1 部分公共因子对应能力解释
同时,本文开发了相应的平台系统实现了基于协同过滤的双向查询推荐、邻近分析和图形化输出。在K近邻查找时,所采用的部分定义及公式如下。
系统中所实现的查询推荐算法比较典型的如下所示。这些算法的正确执行要求专业培养方案的知识结构是健壮的、无冗余的,即任何课程的先修课程(中学阶段的课程除外)仍在同一培养方案中;同一培养方案中,任意两门专业课程的关键知识点的重复率趋于0。
1) 根据学生感兴趣的企业岗位或目标专业技能进行修学计划推荐的算法(伪代码)。
//IE_Jobs:感兴趣的企业岗位/目标岗位列表;WA_Db:加权关联
//关系库;
//TP_Skills:目标专业技能列表;TP_SValues:目标专业技能值
//列表;
//TP_Knowledge:目标知识点集合;TP_Courses:目标课程集合
//CA:推荐课程列表;EA:选修课程列表;K_neighbors:K近
//邻信息列表;
//SR:选课比例/优先值列表,初始值为空;
function search_add_p_courses(CA,ea_max)
//完成选修课ea_max先修课程的查询确认或添加
{EA_Pc=search_p_courses(WA_Db,ea_max);
//获取EA_max的先修课程(前驱课)
for (spcinEA_Pc)
if (spcnot inCA)
{将spc添加到CA中;
search_add_p_courses(CA,spc);
}
}
function service1(IE_Jobs,TP_Skills)
//根据学生感兴趣的企业岗位或目标专业技能进行修学计划
//推荐
{if (IE_Jobsis not empty)
TP_Skills=IE_Jobs所需的要求强度超过阈值的专业技能;
else
IE_Jobs=TP_Skills技能要求强度超过阈值的就业岗位;
TP_Knowledge=search(WA_Db,TP_Skills,null);
//查找企业岗位对目标技能所要求的关键知识点——目标知
//识点
TP_Courses=search(WA_Db,null,TP_Knowledge);
//查找包含目标知识点的课程——目标课程
TP_SValues=在IE_Jobs岗位上工作的毕业生的TP_Skills的
每一元素平均值列表;
K_neighbors=search_K_N(IE_Jobs,TP_Skills,TP_SValues);
//对于IE_Jobs岗位上的毕业生的TP_Skills技能,以TP_SValues
//为期望,查找K近邻
CA=专业培养方案中的必修课程列表(初始值);
TP_EA=TP_Courses中属于选修的课程列表;
EA=K_neighbors信息中所涉及到的选修课程列表+TP_EA;
for (ssainEA)
if (ssainTP_EA)
SR.add(1+|ssa对目标技能加权值|*
目标岗位对目标技能要求强度的最大值);
else
SR.add(K_neighbors中选修ssa人数/K);
flag=false;
while (flagis false andEAis not empty)
{ea_max=EA中选课比例/优先值最大的课程;
if (CA中选修课学分尚未满足基本要求)
{if (ea_maxnot inCA)
{将ea_max添加到CA中;
search_add_p_courses(CA,ea_max);
}
删除EA中的ea_max以及SR中的对应元素;
}
if (CA中选修课学分已满足基本要求)
flag=true;
}
Grapic_output(WA_Db,CA);
//完成推荐课程及其图形化输出
}
2) 根据学生SA课程推荐后继修学计划的算法(伪代码)。
function service4(Student_id,SA,Tflag)
//根据学生SA课程推荐后继修学计划
{根据学生已修课程集合SA的成绩计算Student_id对应学生当前的各项能力值;
if (Tflag==1)
T_M=Student_id对应学生当前值最大的单项能力;
else
T_M=Student_id对应学生当前的综合能力标识;
Tmax=Student_id对应学生T_M能力的具体数值;
//对于毕业生通过SA课程所获取的T_M能力,以Tmax为期望,
//查找K近邻
K_neighbors=search_K_N_4(SA,T_M,Tmax);
EA=K_neighbors信息中所涉及到的SA之外的选修课程列表;
CA=专业培养方案中的必修课程列表(初始值);
for (ssainEA)SR.add(K_neighbors中选修ssa人数/K);
flag=false;
while (flagis false andEAis not empty)
{ea_max=EA中选课比例最大的课程;
if (CA中选修课学分尚未满足基本要求)
{ if (ea_maxnot inCA)
{ 将ea_max添加到CA中;
search_add_p_courses(CA,ea_max);
}
删除EA中的ea_max以及SR中的对应元素;
}
if (CA中选修课学分已满足基本要求)
flag=true;
}
Grapic_output(WA_Db,CA,SA);
}
本文平台系统部分运行实例界面如图6所示。
(a) 企业岗位需求维护页面
(b) 课程关系及修学推荐页面图6 系统运行实例页面
基于协同过滤的专业学习指导平台通过“专业技能需求分析、课程与技能关联关系分析、学习指导与推荐”三个不同层次的模块,充分利用校企合作,使学生及时了解知识点、课程与专业技能之间的关系和企业岗位需求,可根据学生已修课程情况,结合学生兴趣,进行协同过滤、近邻分析,为学生推荐修学计划。