智慧中国杯百万大奖赛解读 | 精准资助机器学习(三)

经过前面两篇的数据探索,咱们对教育精准资助的数据已经有所了解了,接下来咱们就要创建模型来进行机器学习了。对于机器学习这个事还真是挺有意思,写的深了会让你们以为太难,打消你们学习的积极性;写的太浅又没办法深刻本质真正进入到机器学习的世界里,这也是本篇文章和前两篇间隔时间这么长的缘由之一。算法

思来想去仍是要照顾哪些真正想从事数据分析行业的人群,以通俗易懂的方式结合精准资助的数据来介绍机器学习,创建他们对机器学习的信心,让他们经过使用FEA,知道机器学习也就那么回事!机器学习

若是你已是老司机,能够绕道了。函数

1、机器学习之分类概况学习

大千世界中“人以类聚,物以群分”,就是指具备相同(或相近)特征的事物老是归于一类或者说能聚在一块儿的事物老是拥有相同(或相近)的特征。优化

机器学习最基本的研究就是解决分类问题,好比哪些邮件是垃圾邮件,哪些邮件是正常邮件,哪些访问(日志)是正常的,哪些访问是不正常的。对于咱们此次教育竞赛来说就是要分出哪些人须要资助1000,哪些人须要资助1500,哪些人须要资助2000,哪些人不须要资助的问题。日志

解决这些问题最常规的办法是编写规则条件,知足某个条件是什么类,知足另外的条件是什么类。当问题复杂到必定程度,即不能写出明确的规则或者规则很复杂时就能够考虑用机器学习的方法来解决。对象

那么机器又是如何学习的呢?看下图:索引

首先,机器学习是要数据的,并且是两类数据:一类能标识人(和物)的特征数据,如每一人的消费次数,消费总额,单笔最大等等;另外一类则是标记了人的分类的答案数据(或标记数据),就是须要人根据经验来告诉机器哪些人是一类的,哪些物是一类的。这样再选择合适的算法,让机器来学习。给的数据越多,机器就学习的越多,机器就会变得越”聪明“。咱们把这个机器学习的过程叫作训练,训练的结果就是模型。有了这个模型后,就能够进行预测,看下图:ip

首先是要预测的数据的格式和特征数据的格式同样,不能添加或减小特征,也不能变动特征的名称和顺序,而后使用模型来预测,最后就会获得预测结果。部署

整个机器学习的过程就是这样了,还简单吧,下面咱们就用教育资助的数据操练起来。

2、机器学习过程

(一)数据准备

精准资助主要集中反映在平常的消费数据中,咱们先使用消费数据来构造特征数据和标记数据(答案数据)。

特征数据的一个要求是使用一行来描述一个对象(人或物),对象是不重复的,特征数据均为数字类型,不能出现其余类型,若是是字典类型,如性别男女也应该用0,1表示。

标记数据的要求是和特征数据一一对应,一样一行表明一我的(或物),标记须要使用整数形,一个数表明了一个分类。这里的专业叫法是标称型(变量),取值是有限的整数,不能是小数(分类再多总有个最大值的,小数就不知道是哪一类的了,呵呵)。和标称型对应的是数值型,若是标记的答案是数值型的,那就不是分类问题了,与之相对应的是机器学习的另外一类应用回归。

以同窗ID为对象来计算消费特征数据。

#加载一卡通训练数据

card := load csv by match/fund/card_train.csv with (header=-1)

#修改列名

rename card as (0:"id",1:"pos",2:"address",3:"catalog",4:"time",5:"cost",6:"have")

#根据id进行分组

gt2 = group card by id

#计算每一个人的消费状况,消费总额,单次最大消费,单词最小消费,消费均值,消费中位数,消费次数

card_cost = agg gt2.cost by (cost_sum:sum,cost_max:max,cost_min:min,cost_mean:mean,cost_meidan:median,cost_count:count)

#而后卡内计算剩余金额的,最大,最小,平均

card_have = agg gt2.have by (have_max:max,have_min:min,have_mean:mean,have_median:median)

#两张合起来,一我的的消费情况就很是清晰了

card_money = join card_cost,card_have by index

#查查

dump card_money

计算资助金额标记数据

#加载助学金发放训练数据

stn = load csv by match/fund/subsidy_train.csv with (header=-1)

#修改列名

rename stn as (0:"id",1:"money")

#设置id列为索引

stn = @udf stn by udf0.df_set_index with id

#查看数据

dump stn

(二)选择算法

有了特征数据和标记数据,接下来咱们就要选择算法了,FEA支持的分类算法有如下几种:

也许你该问了,这么多算法我该使用哪一个呢?这就和你的数据息息相关了,这也是个经验的问题。

而在实际的工程中,咱们每每会使用多种分类器,来比较一下分类的效果再作选择。那你也许又该说了,这么多算法一个一个试下来,不是很麻烦吗。呵呵,FEA想你之所想,在新的版本中FEA将添加自动分类功能,自动进行多种分类器的训练并打分,有你来选择适合你的一款。

本次咱们使用gbdt分类器和svm来作下面的实验。

(三)训练模型

训练数据构建模型

#设置工做区

use edu

#使用gbdt算法构建模型和训练数据,一步完成

gbdt = @udf card_money,stn by ML.gbdt

#评估模型

score = @udf card_money,stn by ML.score with (gbdt@edu)

#查看结果

dump score

结果的取值在0到1之间,表明预测的准确度,最大为1,准确度100%,千万不要看到1就很开心哦,不少状况下1表明了预测结果和你的数据彻底拟合,或者说拟合,当真的有新数据来预测时,反而很不许。

能够换一个算法试试:

#设置工做区

use edu

#使用gbdt算法构建模型和训练数据,一步完成

model = @udf card_money,stn by ML.svm

#评估模型

score = @udf card_money,stn by ML.score with (model@edu)

#查看结果

dump score

上述的过程当中有可能会失败,必定要确保card_money的数据中没有空值,card_money和stn的行一一对应(数量一致,关连一致)。由于有资助的不必定有消费,有消费的不必定出如今名单中。

简单的处理办法能够采用以下方式:

#还原index为id列

card_money= @udf card_money by udf0.df_reset_index

stn = @udf stn by udf0.df_reset_index

#以资助名单为准关联消费记录

a = @udf stn,card_moneyby udf0.df_ljoin with (id,id) 

#填充空值为-1

a = @udf a by udf0.df_fillna with -1

#选出新的特征数据和标记数据

stn = loc a by id,money

card_money= @udf a by udf0.df_drop_col with money

#重设index

stn = @udf stn by udf0.df_set_index with id

card_money= @udf card_moneyby udf0.df_set_index with id

(四)机器预测

模型构建训练好后咱们就能够来进行预测了,预测数据和特征数据的计算方法同样,我就不在这里详细描述了。

预测数据的文件为match/fund/card_train.csv

预测的人员文件为match/fund/studentID_test.csv

假定预测数据的DF标为card_1,则预测过程以下:

#使用gbdt模型预测

stt = @udf card_1 by ML.predict with (gbdt@edu)

#使用svm模型预测

stt2 = @udf card_1 by ML.predict with (model@edu)

#查看结果

dump stt

dump stt2

是否是很简单?

没错,照上面的步骤玩下来,你就完成了机器学习的基本过程,就对机器学习就有了初步的了解。

(五)保存模型

机器学习是否是每次都得通过上述步骤(准备数据、训练模型、预测)才能应用呢?

不是的!

当咱们训练好一个模型后,能够将模型保存下来,能够分发和部署到新的环境(机器)中直接进行预测,而不用重复训练过程,具体的语句以下:

#保存gbdt模型预测

mfile = @udf df0@sys by ML.save_model with (gbdt@edu)

#保存svm模型预测

mfile2 = @udf df0@sys by ML.save_model with (model@edu)

#查看下载模型

dump mfile

而后就能够到数据目录里下载此模型文件。

发布模型和此相反,先上传模型文件到数据目录里,而后执行load_model函数,具体以下:

#装载模型

model = @udf df0@sys by ML.load_model with (8805e608-c841-11e6-9b72-780cb86c4f4e.zip)

3、小结

本文以通俗易懂的方式结合教育精准资助数据讲解了机器学习的典型过程,为还在机器学习大门口徘徊的人们点亮了一盏明灯,不要犹豫不要徘徊,机器学习,你能够的!

对于机器学习的一些高级话题,如特征选取,参数设置,过采样等将在后续的系列中进行探讨和交流,教你如何打造一个准确率和召回率等都知足实战的模型。

在此也和你们叮嘱一下,模型的优化是无止境的,要耗费大量的脑力和体力。

FEA准备好了,你准备好了吗?

相关文章
相关标签/搜索