开发者学堂课程【机器学习实战:使用 PAI 进行分类分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/530/detail/7141
使用 PAI 进行分类分析
内容介绍
一、机器学习 PAI 对数据集iris进行分类分析
二、使用模型预测新的数据
三、部署
一、 机器学习 PAI 对数据集 iris 进行分类分析
1.具体操作流程
接下使用机器学习 PAI 对数据集 iris 进行分类分析,点击点击实验,然后点击新建实验,在点击新建空白实验
输入它的名字 iris_class_new,项目名字选择 PAI_DEMO_NEW, 然后点击新建,新建好空白文件之后点击实验,看到 iris_class_new 已经创建成功了,点击左侧的组件,首先还是读数据表,之前也介绍过分类的流程,要把数据集分成两部分,一部分用来做训练,训练一个模型,另外一部分用来做测试,用它来验证新建模型的泛化能力好不好,通常先把相同的组件拖进面板里,连接起来,形成一个完整的工作流之后,再挨个配置组件的属性,就像一个思维导图一样。
2.工作流
先把数据集拆分成两部分,把拆分的组件连上线,其中一部分用来做训练,比如去找多分类,选用随机森林,把随机森林拖进来,拆分有两个输出,把输出一作为模型训练的训练数据集,将它连接到随机森林上,随机森林结束后,会输出一个随机森林的模型,要做一个预测,
将预测拖进来,预测也有两个输入,一个是模型结果输入,右侧的是预测数据输入,把随机森林模型连到左侧的预测上,拆分右侧的输出是为了验证的,将它连接到预测等我右侧上,预测完之后需要对这个预测进行评估,最常见的评估就是混淆矩阵,将其拖进,再用一个多分类评估,把预测的结果分别连上这两个评估的矩阵,这就是一个完整的工作流。
3.配置组件
①数据表
接下来就要去配置每个组件了,点读数据表,右侧就会出现它的属性,输入表iris,选中 iris,可以看到它后边还在读这个表,读取完成之后这个小图标就会消失,然后看一下字段信息已经读取成功了。
②拆分
现在看一下拆分,拆分按照比例来看的话左侧输入的占的比例是 0.8,通常说过一般都会用超过 50% 的数据用来进行模型训练,通常是 80% 或者 70% 的来训练,剩余的 20% 或者 30% 的来检验或者测试模型,这里就保持 0.8。
③随机森林
现在点一下随机森林,这是一个比较关键的主角,首先要选择特征列就是用来分类的特征列有哪些,实际上这个数据集之前就看过了。
前面这四个列就是花了一些性状特征,最后 string 这个列就是它的分类结果,希望用前边的性状特征,来判断花的分类属于哪一类,所以特征就是上面的四个性状特征,然后排除列比如说这里有 id,有一些不参与建模的可以把它排除掉,强制转换力可以选择一些,比如你要做一些强制选择,原来是数值型的你想把它变成非连续值的可以用这个来做,也没有权重量。标签列就是它的结果 species,看一下参数设置,有一些参数例如森林中树的个数、单棵树的算法在森林中的位置,可以看一下它的说明、叶节点数据的最小个数等等暂时都保持现在水平。
④预测
现在看预测,预测就是特征列默认全选,把它选中,就是用来做测试的预测数据哪些字段参与预测,原样输出列,我们把它选择就是用来做测试的,其实这些记录本身实际结果也有了,希望它的结果原样输出,点击确定。输出结果列名字、输出分数列名(因为最终会输出一个概论有百分之多少的可能会属于哪一个类)
⑤混淆矩阵
至于混淆矩阵,就是你最终的结果,生成一个混淆矩阵就是原数据的标签列名species,阈值就是选择一个比例,一个值一个数值是 0-1之间的,返回结果一旦大于这个值,就归属到对应的分类里边去。
②多分类评估
原分类结果列 species
4.运行
配置完成之后点击下边的运行,它会把所有的节点都运行一遍,这个运行会花一点时间,经过一段时间的执行,所有的节点都已经执行成功了。
①随机森林
这时检验一下建立的随机森林的模型,它的针对预测机的预测结果好不好,点一下这个混淆矩阵,查看评估报告。
②混淆矩阵
混淆矩阵在之前内容已经介绍过,它会返回真实值和预测值,做了一个交叉的表,可以看到在实际值 setosa 这一类花朵有八条全部都预测正确了,第二类的花朵十二条记录也都预测正确了,只有第三类 virginica 花总共有十条记录有一条预测错了,本来是第三类这种花朵的结果它给预测成了第二类,比例矩阵只有最后一个是90%,其他都是百分之百的正确,这是一个详细的统计信息,实际上从混淆矩阵的角度看,这个模型它最终在测试集上的这个预测结果还是非常理想的。
③多分类评估
查看一下评估报告,可以看到 accuracy 精确度、Kappa、Macroaveraged,混淆矩阵刚才已经看过,比例矩阵也看到了,统计信息,讲过不同的统计信息或者不同的评价指标有不同的含义,像 sensitive 敏感度透明度精确率准确率等等,建议通常情况下看 F1 得分,分值越高越接近于 1 效果就越好。
截止到目前可以简单的判断一下使用随机森林创建的模型,基本上第一有比较好的解释能力,第二就是比较好的泛化能力,一般认为这个模型可以应用到新数据的预测中去。刚才讲过这个模型一旦生成之后,是可以从左侧的模型里看到的,我们这个模型叫做 iris_class_new 里面的随机森林 -1-model
二、 使用模型预测新的数据
例如又有一些人测试了一些花瓣、花萼的长度和宽度,他想用模型来识别花应该属于哪一类,这时应该新建一个实验,叫做 iris_class_predict,模型还是选择 PAI_DEMO_NEW ,点击新建,然后返回到实验当中去,找到 iris_class_predict,点击组件,首先还是要读数据,待预测数据写到表中,然后找到模型,模型就是随机森林 -1-model,点击组件,组件中有一个预测组件拖进来,这是可以看到随机森林 -1-model 是一个模型,预测节点可以将两个资源连接起来,读取数据表对数据进行预测,把输出模型连接到左侧的输入中,实际上预测的结果也有可能写回到 must compulsory 中,又一个组件叫做写数据表将它拖入连接,这就是完整的预测流程。因为我们还没有准备这个实际的新数据,还是使用 iris 就比如说你有一些数据会放到 iris 的表去,新建一个表 CREATE TABLE IRIS _ NEW LIKE IRIS ; 输入iris_new,iris_new 这个表就读取成功了,现在还没有数据。写数据表写到iris_new_class_predict 中去,这样就生成了一个完整的预测的流程,刚才训练了一个模型,模型也通过了自己数据的测试,效果还不错,然后决定用这个模型来对新数据进行预测,这时就可以建立一个流程,这就是刚才创建的模型就是刚刚创建的模型,这个表 iris_new 放的就是待预测的数据,一旦有了新的数据需要预测,就把数据放到这个表中去,然后通过这个预测节点,对他进行预测就好了。
预测的组件可以不用选,最终的预测结果希望写到iris_new_class_predict 中去,指定一个表名,它会自动创建这个表,把结果写进去,这样就可以了,如果 iris_new 里边已经有数据了,点一下运行就会把 iris_new 数据进行一个预测写到iris_new_class_predict 表里去。
三、 部署
1.简介
部署包括两类部署方式,第一个叫做在线预测部署,第二个叫做实验离线调度。这个是离线调度,可以先返回刚才建的模型当中去,要将模型部署,其中一个叫在线预测部署,就会会将模型随机森林 -1-model 这个模型部署一下,点一下下一步,选择部署到哪个项目空间中去,还是部署到 PAI_DEMO_NEW,部署的 quota 要设置下当前占用 instance 数,最多可以占用 30 个,还有一个在线文档说明,可以点开文档查看一下,点击部署,在线模型部署部署完成之后就相当于提供了一个API,然后你可以通过这个 API 来调用一个模型,在线模型部署通常应用于数据对于响应时间较短,要快速响应,另一种是每一次预测数据量都不大这两种情况。
2.服务详情
这是当前的版本,接口模式,接口的样例是使用 post,将你的请求通过调用 API 然后上传到服务器,服务器对这个数据处理完之后会把这个结果返回回去,有一个 API 的调试,创建一个窗口,接口名字叫做 prediction,输入要请求的数据的内容,然后就可以调试这个结果。特别详细的细节本节课不进行介绍。
3.离线部署
新建一个任务,任务类型选择工作流任务,名称叫做 iris_prediction,创建,然后新建节点名称为 data_preparation,第一个节点需要先准备出来,当然也可以没有,通常是先把数据准备好,接下来通过机器学习的节点给连上,机器节点名称为iris_class_prediction,连接,这个实际上在 data works 创建了一个工作流,这个工作流将它保存,第一步是准备一个数据,例如新生成等我数据将它加载进来等等,假设第一个节点已经将数据准备好了,接下来会调用 iris_class_prediction 这个机器学习的节点,双击选择 iris_class_prediction,弹出来这个
这个机器学习就完成了准备好 iris_new-1 这个数据集,然后使用随机森林 -1-model 模型进行预测把结果写到 iris_new_class_prediction 结果中去,保存。
第一个 data_preparation 去准备 iris_new 数据集,准备好了以后可以调用机器学习这个节点对它进行预测,后面也可以进行其他的操作,例如再写个 C 口,叫做prediction_check,叫什么随意,连接,第一部准备数据,第二步对它进行预测,第三部可以去检查一下预测结果或者将预测结果运用到其他的业务流中去,还可以做调度,可以设定具体的时间来调度流程,还可以依赖于其他的任务。
例如这个任务必须在其他任务完成之后才能进行,如果有就填上,还可以设置跨周期依赖等等,实际上就进入了阿里云大数据提供的完整的解决方案,机器学习作为完成集方案中的一环出现了,保存一下,也可以提交。
实际上这就是 data works 基本的应用,可以去了解 data works 相关的东西,机器学习可以作文其中的一环通过 data works 嵌入进去。