APP下载

基于学生消费行为与成绩的分析研究

2018-09-05

许昌学院学报 2018年8期
关键词:线性消费预测

(许昌学院 信息化管理中心,河南 许昌 461000)

近年来,随着高校信息化程度的不断提升,校园一卡通系统发展迅速.一卡通系统可以为师生提供了很大的便利,可以方便他们进行购物,签到等等,这些行为都会产生大量的相关数据.用机器学习算法在数据中发现隐藏的关联性,可以对学校的管理工作提供一定的参考和帮助.在国内已经有很多高校开始了对相关数据的研究分析.王德才[1]等人利用SVM和Apriori关联规则算法分析学生校园一卡通消费行为数据;罗拥军[2]等人采用基于FP-Growth算法寻找学生的贫困程度与一卡通数据之间关联关系的依据;徐剑[3]等人利用决策树算法对一卡通的消费数据进行了聚类分析,并用关联规则算法分析了学生的消费数据与学生成绩之间的关联关系;黎旭[4]等人使用决策树为依据对消费行为的因素进行了建模和实现.

本文研究的是学生消费数据与学生成绩之间是否具有隐藏的关联性.首先对学生的消费成绩进行规范化的处理,之后采用机器学习的算法对数据进行处理建模,根据模型和历史数据对学生的成绩进行预测,并和真实数据进行对比.

1 实验数据预处理

一般而言,在数据中心存的数据都是没有处理过的原始数据,可能会有各种各样的问题,例如数据缺失,数据冗余等等造成对数据质量的影响.而数据质量又是会直接影响到模型训练结果的关键因素.所以需要对原始数据进行处理.另一方面,随着支付宝等移动支付的兴起,越来越多的学生开始使用手机进行支付,这也导致了数据的缺失,这一问题可以从其他的维度想办法考虑解决.

机器学习需要一个训练集和一个测试集,训练集用来训练模型,测试集用来测试模型预测结果.把消费数据和成绩化分为训练集和测试集,以此来构建模型.首先来看原始数据.消费数据如表1所示,这一条数据包含某个卡号(ECARDNO)在某一天(OPDATE)消费了什么(CONPTYPE),吃饭的话吃的是哪一餐(DINTYPE)和消费数额(TOTALACCOUNT).成绩数据如表2所示,每条数据包含学号(XH),科目名称(KCMC),课程类别(KCXZ)和考试成绩(QMCJ).

由于原始数据提供的信息有限,所以这里的想法是先对消费数据进行处理.按照机器学习的一般思路是将数据整理成一个学生一条数据,后面的字段则是某一时间段的消费信息,按照早中午饭分开计算平均消费和总消费,此外还要区分周末和平时的情况.这些年由于外卖的发展,所以肯定会造成有很多人出现没有消费的情况,如果贸然使用这些数据可能会对预测的结果产生影响,所以这里会把没有消费也当做一种类型来计算,如此生成训练集数据.如表3所示.这里篇幅有限只列出了早上时段的所有数据.

表1 消费数据表单

表2 成绩数据表单

表3 处理后样本数据

处理完数据之后,如图1所示.首先看norm平时的数据,无论是总值count还是均值mean都有很多的数值为0.这有两种可能,一是学生没有去吃早饭,二是叫了外卖或者之前买的其他东西.这部分由于无法做交叉对比,所以不能确定是哪一种.但是可以将数值为0也当做一种类型,可以认为这个学生比较懒/没时间,使用支付宝等等.Miss表示的是没有吃早饭的次数,原因和上面一样.Weekend周末的数据则有更多为0的数据,这也是符合学生周末出去吃饭的习惯的.这部分处理后的数据当做训练集数据.

图1 部分样本数据分布图

然后处理测试集数据,如表2,不同的学生可能有不同的课程和课程数量,所以需要一个统一的度量指标来衡量不同学生的差异.选用平均成绩和挂科率这两项可以比较好的对不同的学生进行比较.图2中标有(origin)表示的是原始平均分和挂科率,如图2可以看出平均分是一个长尾分布,一般来说长尾分布的数据是没有意义的异常数据,结合挂科率的图表来看,可以将这些数据去掉.图2标有(processed)是处理过之后的数据,如图可以看出平均分基本符合正太分布,挂科率则呈现了一个下降的趋势.需要注意的是这里挂科率的横轴是科目的数量.

图2 成绩数据分布表

2 数据建模

本文是要研究学生消费数据与成绩之间的潜在关联性.所以以学生的挂科率和平均分这两项作为研究对象.使用回归和分类的算法,对数据处理建模来分析不同特征的重要性.回归可以直接预测数值目标,而分类只能预测不同的类别,所以使用分类算法时候需要将数据处理一下,改成类别数据[5].将0~10%作为1类,10%~20%作为2类,以此类推最后90%~100%作为10类,这样将预测问题转换成一个多分类的问题.这里会出现精度的损失,如果需求更高的精度可以用 5个百分点作为一个类别来分类.

本文主要使用线性回归(LinearRegression)来预测和随机森林(RandomForest)来进行分类.下面简单介绍一下这两种算法.

实验使用python的sklearn工具进行模型的训练和测试.使用前面说过使用平均成绩和挂科率来对作为预测的结果.然后将数据分为训练集和测试集.

首先使用线性回归来训练模型.将样本数据和成绩数据合在一起,按照75%来划分训练集,剩下的是测试集.之后调用sklearn的线性回归模型来进行训练,之后进行预测.线性回归模型一般使用RMSE来评价预测结果的好坏.

它的值越小表示预策的精度越高,所以一般用它来衡量线性回归预测结果.表4是线性回归的RMSE得分.图3是真实值和预测值的图,实线是预测值,虚线是真实值.

表4 预测结果评估结果

图3 线性回归预测结果图

然后使用随机森林训练模型.由于随机森林是一个分类的算法,所以需要把预测结果改成类别型数据.上面说过这里不再阐述.同样将样本数据和改成类别型数据的成绩数据合在一起,按照75%来划分训练集和测试集.然后使用随机森林模型训练,之后进行预测.分类模型一般会使用召回率(Recall)和精准率(Precision)来检验预测效果的好坏[5].

综合来看对于挂科率的预测使用线性回归的效果较好,RMSE有0.771 5左右,而平均分效果略差一些.如果改为类别型数据,则只有平均分的效果较好,召回率和精准度均在70%左右,而挂科率的效果则不好.

3 结语

本文研究了学生消费行为和成绩之间的关系,并尝试使用了线性回归和随机森林算法对学生的成绩进行预测.效果不错,预测的评估结果均在可以接受的范围之内.研究只限于消费行为,如果有其他合适的数据例如学生出入,或者是上课签到数据等,那么相信效果会进一步提升.

猜你喜欢

线性消费预测
无可预测
渐近线性Klein-Gordon-Maxwell系统正解的存在性
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
线性回归方程的求解与应用
国内消费
新的一年,准备消费!
40年消费流变
二阶线性微分方程的解法
不必预测未来,只需把握现在