全文链接:https://tecdat.cn/?p=34607
原文出处:拓端数据部落公众号
大数据时代的来临,为创新资助工作方式提供了新的理念和技术支持,也为高校利用大数据推进快速、便捷、高效精准资助工作带来了新的机遇。基于学生每天产生的一卡通实时数据,利用大数据挖掘与分析技术、数学建模理论帮助管理者掌握学生在校期间的真实消费情况、学生经济水平、发现“隐性贫困”与疑似“虚假认定”学生,从而实现精准资助,让每一笔资助经费得到最大价值的发挥与利用,帮助每一个贫困大学生顺利完成学业。因此,基于学生在校期间产生的消费数据运用大数据挖掘与分析技术实现贫困学生的精准挖掘具有重要的应用价值。
本文将两学年的学生在校行为数据作为原始数据,包括消费数据、图书借阅数据、寝室门禁数据、图书馆门禁数据、学生成绩排名数据,并以助学金获取金额作为结果数据进行模型优化和评价。
1)数据总体概述
数据分为两组,分别是训练集和测试集,每一组都包含大约1万名学生的信息记录:图书借阅数据borrow_train.txt和borrow_test.txt、
一卡通数据card_train.txt和card_test.txt、
寝室门禁数据dorm_train.txt和dorm_test.txt、图书馆门禁数据library_train.txt和library_test.txt、学生成绩数据score_train.txt和score_test.txt
助学金获奖数据subsidy_train.txt和subsidy_test.txt
训练集和测试集中的学生id无交集,详细信息如下。
2)数据详细描述
图书借阅数据borrow.txt
注:有些图书的编号缺失。字段描述和示例如下(第三条记录缺失图书编号):
一卡通数据card.txt
字段描述和示例如下:
寝室门禁数据dorm.txt
字段描述和示例如下:
图书馆门禁数据library.txt
图书馆的开放时间为早上7点到晚上22点,门禁编号数据在2014/02/23之前只有“编号”信息,之后引入了“进门、出门”信息。
字段描述和示例如下:
学生成绩数据score.txt。
注:成绩排名的计算方式是将所有成绩按学分加权求和,然后除以学分总和,再按照学生所在学院排序。
助学金数据(训练集中有金额,测试集中无金额)subsidy.txt
字段描述和示例如下:
大学生助学金精准资助预测中的分类模型
支持向量机方法能在训练样本数很小的情况下达到很好分类推广能力的学习算法,它能做到与数据的维数无关。算法所得到的决策面为:将两类分开最大缝隙的超平面。对决策面设计起作用的点(图中圈中的点)称为支持向量JMNK。分类线方程为可以对它进行归一化使得对线性可分的样本集。它被成功的应用于金额分类、信用等级分类等很多领域。
数据预处理
用SVM实现大学生助学金精准资助预测,先要从原始空间中抽取特征,将原始空间中的样本映射为高维特征空间中的一个向量,以解决原始空间中线性不可分的问题.
大学生助学金资助预测(schoolarship Classification)是在已给定的分类体系下,依据大学生助学金的内容或对大学生助学金的标识信息等,通过分类程序的学习和运算等处理方式,自动地确定大学生助学金所关联的类别。从数学角度来看,大学生助学金精准资助预测是一个映射的过程,即系统根据已经掌握的每类若干样本的数据信息,总结出分类的规律从而建立并关联判别公式和判别规则;当分类器遇到输入的未标明类属的新大学生助学金时,根据总结出的判别规则,确定该大学生助学金相关联的类别。
首先需要一个训练样本集作为输入,以便分类器能够学习模式并找到分类函数。训练集(Training set) 由一组数据库纪录或元组构成,每个记录是一个由有关字段值组成的特征向量,这些字段称做属性(Feature),用于分类的属性叫做标签(Label)。训练集中标签属性的类型必须是离散的。为降低分类器错误率,提高分类效率,标签属性的可能值越少越好。对于经典支持向量分类机来说,正负二类分类值{+1,-1}(binary classification)是最理想的分类值状态。
从训练集中自动地构造出分类器的算法叫做训练。得到的分类器常要进行分类测试以确定其分类准确性。测试集使用的数据和训练集通常具有相同的数据格式。在实际应用中常用一个数据集的2/3作为训练集,1/3作为测试集。
traindata=merge(data,borrow_train,by = "学生id")
traindata=merge(traindata,card_train,by = "学生id")
特征选取
将大学生助学金转换成为适合分类任务后,本文对各个变量进行统计。而分类变量的特征对许多任务影响相对较小。因此本文筛选出数值特征变量,并使用这些变量来建模,从而提高准确度。
ndata[,i]=as.numeric(as.character(traindata[
hist(traindata$助学金金额)
得到的助学金金额直方图。
建立分类指标
大学生助学金表示问题会对学习系统的泛化正确率产生较强影响。典型的大学生助学金多包含多个值,需要转换成为适合分类任务的表示。大学生助学金通过该方向将形成“属性-值”的表示方法。“助学金金额”为整数,2000、1500、1000、0中四选一,因此将其转化成分类因子变量的类型。
模型评估
在机器学习和统计分类中,混淆矩阵,也被称为误差矩阵,是一个特定表,其允许算法,通常是监督学习的性能的可视化(在无监督学习,通常被称为匹配矩阵)。矩阵的每列表示在预测的类的实例,而每行代表一个实际的类的实例(或反之亦然)。名称源于它可以很容易判别事实的两类。它是一种特殊的列联表,有两个维度(“实际的”和“预测”)。以一个二分类问题作为研究对象,图1的混淆矩阵显示了一个分类器可能会遭遇的所有情况,其中列(positive/negative)对应于实例实际所属的类别,行(true/false)表示分类的正确与否。
在预测分析中,混淆表(有时也称为混淆矩阵)报告假阳性,假阴性,真阳性和真阴性的数量。这比正确率具有更详细的分析。
我们常用的就是分类器的精确度(accuracy),在某些如推荐或信息获取领域还会组合使用precision-recall作为评价指标。因为你用于训练分类器的样本本身就是总体的一个抽样,所以这些指标的数值也仅仅是一种统计上的反映,如果你做多次抽样训练,跟别的随机变量一样,它一样会有期望、方差、置信区间这些概念。理论上说,训练样本量越大,你得到的这些指标的可信度就越高(即它们以某个概率落在的置信区间越窄)。
svm(as.factor(助学金金额)~学院编号+成绩排名+
table(preds,traindata$助学金金额)#分类混淆矩阵
从预测结果来看,可以得到如下的混淆矩阵:
通过混淆矩阵,我们可以得到准确度、找回度和正确率。
从结果来看,svm模型具有较好的预测结果。
对混淆矩阵进行可视化。
由于ROC曲线是在一定范围的真阳性(TP)和假阳性(FP)的错误率之间的权衡分类器性能的技术。 ROC曲线是判断模型的正确预测事件的能力。
ROC曲线是比分类表提供更多的信息,因为它概括了所有可能的π0的预测能力。
ROC图形上的位置反映了诊断试验的准确性。它涵盖了所有可能的阈值(截止点)。完美的ROC是在图中的左上角的点,该点的TP比例是1.0和FP比例为0。它描述的是分类混淆矩阵中FPR-TPR两个量之间的相对变化情况。如果二元分类器输出的是对正样本的一个分类概率值,当取不同阈值时会得到不同的混淆矩阵,对应于ROC曲线上的一个点。那么ROC曲线就反映了FPR与TPR之间权衡的情况,通俗地来说,即在TPR随着FPR递增的情况下,谁增长得更快,快多少的问题。TPR增长得越快,曲线越往上屈,AUC就越大,反映了模型的分类性能就越好。当正负样本不平衡时,这种模型评价方式比起一般的精确度评价方式的好处尤其显著。
erformance( prediction( as.numeric(
从roc曲线来看,由于曲线位置靠近图的左上方,因此,该模型具有较高的TPR和较低的FPR,同时可以看到模型的auc值达到了0.966,可以认为该模型的分类效果非常好。
最后可以对测试数据进行预测,可以得到不同学生id对应的预测助学金金额:
-predict(model.
最受欢迎的见解
1.PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯模型和KMEANS聚类用户画像
3.python中使用scikit-learn和pandas决策树
7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。