基于Android的高考志愿推荐App设计
来源:用户上传
作者:
摘 要: 在志愿填报的过程中,很多考生无法在众多专业或院校中做出自己的选择,甚至有的考生由于缺乏对报考相关的认识导致被调剂或滑档,无法学习自己喜欢的专业,因此设计一款能够帮助考生填报志愿的App显得十分必要。基于Android平台下的高考志愿推荐App将协同过滤技术应用到志愿填报领域,通过对考生进行特征分析,为适合的考生推荐录取率较高的院校及专业。经测试表明该App准确性高、稳定性强,可以帮助考生合理地进行志愿填报。
关键词: 个性化推荐技术; Android; 志愿填报; 协同过滤技术; App
中图分类号:TP311.5 文献标识码:A 文章编号:1006-8228(2020)02-39-04
Design of recommendation App for aspiration choice of college entrance
Sun Yanbang, He Yu, Wang Lin, Liu Xinyu
(School of Computer Science and Information Engineering, Harbin Normal University, Harbin, Heilongjiang 150025, China)
Abstract: In the process of aspiration choice of application for colleges, many candidates can’t make their own choices among various specialties and colleges and universities, and even some candidates can’t learn their favorite specialty because of the lack of relevant knowledge. Therefore, it is necessary to design an App that can help candidates to fill in their aspiration application forms. The recommendation App for aspiration choice of college entrance applies collaborative filtering technology to the field of aspiration application, and by analyzing the characteristics of candidates, the specialties and colleges and universities suitable for candidates and with higher admission rate are recommended. The test result of the App shows that the App has high accuracy and stability, and can help candidates to fill in aspiration application forms papers reasonably.
Key words: personalized recommendation technology; Android; filling the aspiration form; collaborative filtering technology; App
0 引言
在我國,高考依然是众多学子追逐梦想、奔向成功的重要途径。高考笔试之后的志愿填报常常决定了考生将来在哪个城市扎根、未来几十年的生活质量、将来的事业发展等。随着高考招生工作的不断深入,积累了大量有价值的信息,为了解决这种信息过载现象[1],个性化推荐技术应运而生。如何利用这些有效的信息进行志愿填报是每个考生都关心的问题,利用协同过滤推荐技术来分析考生相关数据,可以有效的帮助考生选择更适合自己的专业,这也是个性化推荐中研究和应用最为广泛的技术。
1 志愿推荐系统的研究现状
近年来,夏大飞、张自力等人参与的基于商务智能的高考志愿填报指导系统[2]通过商务智能挖掘高考志愿填报的规律,帮助考生填报志愿,该系统对填报志愿涉及的多方面因素来进行指导,但没有结合考生考试成绩及往年的分数趋势进行分析预测,也没有相应的App支持,不能解决实时查询的问题。
王灵峰基于协同过滤算法设计的高考信息推荐引擎[3],将用户对分类信息的关注度转换为了用户对分类信息的评分,并构建用户评分矩阵,虽然这种做法简便,但是在一定程度上带来了不准确性。
王亚婧基于数据挖掘和协同过滤的成人高考志愿推荐系统[4],提出采用信息增益率作为属性选择标准,对信息增益率较高的属性给予较高的权值,然而当推荐个数较少时,准确率较低。由此发现,在应用协同过滤推荐算法时,需正确处理推荐准确度与推荐个数之间的关系。
2 系统设计
2.1 系统体系结构设计
本文App采用平台化结构设计,通过分层设计使系统整体逻辑更加清晰,降低了层与层之间的依赖,利于各层逻辑的复用。系统总体框架设计如图1所示。
该系统分为客户层、算法层、业务层、表现层、数据层,图1最右侧为各个层次用到的主要技术,各层次详细介绍如下。
⑴ 客户层:考生注册成功后,通过App访问表现层来进行交互。 ⑵ 表现层:用户成功登陆后进入的是App的主界面,通过精心设计的UI布局能够与用户进行友好的交互。
⑶ 业务层:主要是具体的模块功能实现,包括用户管理、院校查询、志愿推荐等功能。在业务层中使用Spring框架简化了接口复杂度,便于代码的测试,通过struts框架引入的MVC设计模式提高了开发效率,有利于组件的重用。
⑷ 算法层:当用户需要志愿推荐时,系统读取数据层的用户信息,通过协同过滤推荐算法得到考生的志愿推荐集然后利用Spark进行数据处理,并将结果保存到推荐集数据库中,最终通过Http协议将结果传输给客户层。
⑸ 数据层:存放用户信息和推荐集数据,为算法层、业务层提供数据支持。
2.2 系统功能设计
通过对系统体系结构业务层进行需求分析,得到系统具体的功能模块,模块之间相互独立,降低了复杂度,有利于系统的维护。
2.2.1 用户管理模块
系统对不同的用户设置不同的功能权限,未经过注册的用户仅限于使用志愿查询功能,已注册的用户可以随时更新个人的高考信息。用户利用志愿查询功能来了解自己向往的大学或心仪的专业往年的录取分数线,并可以使用志愿推荐模块获取适合自己志愿。
2.2.2 志愿查询模块
志愿查询模块针对所有用户开放,用户可以根据院校位置查询距离自己家比较近的大学,或者自己向往地方的大学,能够通过专业排名查看排名靠前的专业录取分数线,在院校类别查询中可以根据分类获取985院校、211院校、双一流院校信息。
2.2.3 志愿推荐模块
志愿推荐模块是针对注册成功用户而言的,它是依靠体系结构中的算法层实现的。通过协同过滤推荐算法得到与考生特征相似且录取率较高的志愿集。
3 推荐功能实现
在个性化推荐系统中,协同过滤技术的运用效果和运用情况都十分可观,它对有效信息过滤和分析,得出用户的兴趣及爱好,提高了信息的利用价值,本文结合志愿填报的特点对协同过滤推荐算法加以完善使之适用于志愿填报这一新领域。
3.1 用户属性的选取
通过对系统中保存的考生个性化信息进行数据处理,由于影响考生填报的因素较多,因此选取影响填报的重要因素,其中包括考生成绩,性别,生源地,科目类别,志愿批次五个因素。以此构建一个用户特征矩阵如表1所示,其中性别x为男性,y为女性,科目类别0为文科,1为理科。
为了便于进行比较分析,我们采用极差变换法对用户特征矩陣做标准化处理。极差变换的计算如下:
[xij'=xij-minjxijmaxjxij-minjxij] ⑴
其中,[xij]为原始值,[maxjxij]为属性[j]值域中的最大值,[minjxij]为属性[j]值域中的最小值。
3.2 查找相似考生
在计算目标考生与其他考生的相似度时,为减少算法的计算量,我们采用欧氏距离作为相识度的计算方法。即距离越近,相识度越高。但考生特征属性的重要性仍存在差异,因此对每个属性进行加权处理,修改后的相似度计算公式⑵如下:其中[wk]表示第[k]个属性的重要程度。
[dij=k=1pxik-xjk?wk2,i,j=1,2,... ,n],[k=1pwk=1] ⑵
3.3 生成推荐集
完成相似度计算后,我们选取序列中相似度较高的前K个用户作为目标用户的相近用户,然后将其志愿作为目标用户的推荐集。
通过以上步骤得到的推荐集是针对目标考生的特征进行推荐的志愿,但这不意味着报考这些学校的成功率会很高,我们需要对推荐集做进一步优化。运用线差法和位次法,对历年数据进行分析,得到推荐集中志愿的最低录取分数线,并以此为基础来进行志愿评估。
3.4 推荐集优化
设:[D]为用户所在省份的位次,[Batchi]为该省份批次[i]的顺序最低位次,[Proj]为报考专业第[j]年录取学生的排名位次。则报考专业在该省的最低位次(即最高成绩)[ProLow],与最高位次(即最低成绩)[ProHigh]可由公式⑶和公式(4)得到,其中[Batchpro]为该学校[Pro]在该省份的录取批次[5],[θ]为波动区间:
[ProLow=minminProjj-θ] ⑶
[ProHigh=maxmaxjProj+θ,Batchpro] ⑷
考生报考的成功率可以由公式⑸计算:
[P=1D<ProLow 1-(D-ProLow)ProHigh-ProLowProLow?D?ProHigh0D>ProHigh ] ⑸
此时,我们利用公式对推荐集中的推荐结果进行计算,对计算后的结果进行排序并选取前K个志愿作为最终推荐集。
3.5 算法实现
算法的执行步骤分为用户相似度计算和生成及优化推荐集两个过程,因此,我们需要对数据做两次处理,首先进行相似度计算,生成初始推荐集,然后再对初始推荐集处理,分别计算每个志愿的录取概率,最后通过排序得到K个推荐志愿。下面给出算法的核心代码。
用户相似度计算代码:
One Function:
Key = record.StudentId;Value = record.StudentProperties;return <Key, Value>; Two Function:
Student = <Key, Value>;Key = Student.Key;Similarity = 0;
For 1:Student.Value.Length
Similarity += Math.Pow((aimStudent.Value[i]- Student.Value[i])*w[i],2);
End
Similarity = Math.Sqrt(Similarity);return <Key, Similarity>;
录取概率计算代码:
One Function:
Key = record.WishId;Value = record. WishProperties;return <Key, Value>;
Two Function:
Wish = <Key, Value>;Key = Wish.Key;Probability = 0;
If aimUser.rank < Wish.Value.MinRank
Probability = 1;
Else If aimUser.rank > Wish.Value.MaxRank
Probability = 0;
Else Probability = (1 – (aimUser.rank - Wish.Value.MinRank)/
(Wish.Value.MaxRank - Wish.Value.MinRank))*L;
return <Key, Probability >;
3.6 算法驗证
在数据库中选取1600条考生数据,将考生的推荐结果与实际录取院校进行对比,若推荐集院校中包含录取院校则认为推荐成功[6]。实验结果如图2所示。
分析图2,得出以下结论:
高分段推荐效果好,这说明高分段考生对院校的选择更为明确,不存在“信息过载”问题;
高分段与低分段准确率差异大,这说明在算法设计过程中需要重点考虑低分段考生,要结合院校招生政策和其他因素进行分析,以提高推荐准确率。
4 结论
本文设计与实现了基于Android平台下结合协同过滤推荐算法的高考志愿推荐App,运行效果如图3所示,可以推荐适合考生且录取率较高的院校及专业。针对目前存在的院校信息更新频繁带来的数据利用率低、实时性差等问题,本文主要依托Spark数据处理技术,详细设计实现了基于协同过滤推荐算法的推荐模块。相比于其他推荐系统,提高了推荐实时准确性,增强了系统的稳定性。系统也存在许多不足,比如在不同分数段的推荐效果存在差异,针对此现象,应考虑在不同分数段采取不同的推荐方法。另外院校招生计划也会对推荐效果产生影响,我们需要结合招生政策和用户其他的属性数据来构建用户特征矩阵,这也将是后期的研究内容。
参考文献(References):
[1] 刘春霞,武玲梅,谢小红.推荐系统评估研究综述[J].现代计算机(专业版),2018.24:11-15,20
[2] 肖灿,张自力,何小明,夏大飞.基于商务智能的高考志愿填报指导系统设计与实现[J].西南师范大学学报(自然科学版),2012.37(5):89-97
[3] 王灵峰.高考信息推荐引擎的设计与实现[D].暨南大学,2011.
[4] 王亚婧.基于数据挖掘和协同过滤的成人高考志愿推荐系统研究[D].北京林业大学,2011.
[5] 顾健. 基于大数据的高考志愿数据分析关键技术研究[D].长春理工大学,2017.
[6] 徐兰静,李珊,严钊.基于协同过滤的高考志愿推荐系统[J].计算机系统应用,2015.24(7):185-189
转载注明来源:https://www.xzbu.com/8/view-15148098.htm