Flink-Learning训练营:课时2:基于GBDT算法的CTR预估
课程地址:https://developer.aliyun.com/trainingcamp/0bcc1ab57cf841a2af632d6252fecbab
FlinML算法体验:基于GBDT算法的预估
内容简介
一、实验准备
二、重点内容
一、实验准备
1开通阿里云实时计算Flink版免费试用
2开通阿里云机器学习平台PAI-Designer的工作空间
3. 开通阿里云PAI-EAS模型服务免费试用
(1)首先介绍实验背景-FlinkML简介
试用代码: https://github.com/apache/flink-ml
用户文档:
https://nightlies.apache.org/flink/flink-ml-docs-stable/
Flink交流群:
FlinkML是基于Flink的流批一体的机器学习算法库,是Apache Flink的子项目。目前支持了40+个算法,包括分类、回归、聚类、特征工程、评估等。FlinkML已在阿里巴巴内部落地并在阿里云输出。
(2)CTR预估的基本概念
ctr是广告的实际点击次数除以广告的展现量,而ctr预估是给定一个用户和广告预测广告曝光之后获得点击的概率。这个概率值可以在排序任务中提升业务的指标。
(3)介绍STR预估的流程
ctr预估一般包含,读入数据智,能工程,还有ctr模型序列预测模型指标评估,还有部署预测服务。在此我们读取oss数据好使用特征标标准化,做一个特征工程,然后使用GBDT做一个主模型,计算AUC,PRC等作为指标,最后部署到PAI-EAS。Gpd t是一个经典的基于梯度提升的有监督学习模型,可以用来解决二次分类问题。
构建了一个由多棵树呃组成的组合模型,每一棵决策树对应一个弱学习器,将这些弱学习器组合在一起,可以达到比较好的分类和回归的效果。
(4)Criteo数据集
首先介绍一下数据集。我们这个实验的数据集是来自Criteo广告公司七天内的部分流量,这里给出了三条示例数据。
每条数据对应用户展示的广告。第一列是label值。其中一表示,就是被点击了,零表示负样本是未被点击,接下来的13个特征是数值性特征,最后26列是类型性特征。
这是我们的数据。有了数据之后,我们下面再介绍一下如何搭建这样一个学习流程
在这个阿里云底单上,我们可以通过读取CSS文件的方式读入数据,然后使用标准化训练对数据做特种工程,然后用GBDT二分类训练下主模型,并对数据做一个推理,最后使用二分类的评估组件对这个预测结果进行一个评估。后面我要介绍一下,我们这些组件是如何使用的。
其中这个CSC组件我们需要设置它的文件路径,设置它的Schema,并在执行调优中设置计算资源为Flink。像其他的标准化还有GBDT还有二分类评估这些组件的使用。这边我不一一赘述,后面在实验中会使用这些组件。当我们把这个所有的组件参数设置完成之后,我们可以点击执行,
将这个任务提交到flink VP集群,在机器上去运行。当运行结束之后,我们可以查看评估的一个结果。我们可以看到一些常用的像aocks,还有对应的一些曲线这样的评估。如果模型评估的比较好的时候,我们可以将这个模型部署成一个服务。
二、实验内容
(1)在PAI-Desighner中搭建CTR预估的实验流程
下面我们具体操作一下,搭建这样一个实验,并且把模型部署成一个服务。当我们记住这个可视化建模的designer,首先需要建立一个工作流。然后进入工作流,会出现一个画布,我们需要在画布上搭建我们的这个机器学习流程。
首先我们是拿取对应的组件,我们是先读CSO文件,需要拿取训练数据和预测数据。拿取标准化的训练和预测组件。再拿取GBDT的二分类训练,百分的预测总结,还有二分类的评估总结。这些数据拉取完之后,我们根据业务流程把这些组件串联起来。我们读的数据首先需要做一个标准化的训练,这个训练完成之后。对数据做标准化推理。然后需要把标准化的数据来做GBDT二分类的模型训练,训练完的模型需要去做二分类的推理,彻底完之后,需要把结果做一个评估。
在我们的整个业务链路就是这个样子。
下面我需要把这些参数填写,首先我们把这个运行资源设置成Flink运行资源,首先是读取实验文件,我们需要填写文件的路径,我们使用OSS文件,用个十万的数据来做训练。然后这个schema我们需要从文件中复制一下。同样,这个验证数据也是一样的。设置一下schema。最下面这个我们有一个一万的数据,因为下面买的这几个组件的设置需要用到输入数据,所以我们先把输入数据执行一下。这里大概需要执行一两分钟。CSV读取文件,组件执行完之后,下面我们设置其他组件的参数。首先是标准化,我们这边需要做标准化的列。这边我们将所有double列做一下标准化。然后标准化预测这边不需要设置参数。GBDT二分类这边需要设置特征列,这边能够把所有的列都选上。选择类别型特征,把所有SRING都选上。标签列这边选择label,对应的预测这一块我们需要预测结果的详细列。然后在二分类评估这边设置详细列,并且使用的是lable列。完结之后呢,我们就点击左上角这个绿色按钮运行实验,任务就会被踢到后台VP。
任务执行完之后呃,下面我们可以通过这个二分类评估组件查看一下结果。可以看到我们的AOC是0.671,kS是0.3。还可以看到它的评估曲线roc曲线,以及pre曲线。
(2)将CTR预估模型部署成一个EAS服务
如果我们的这个评估已经感觉非常不错了,想要把它部署一个服务的时候,首先要制作pai plan模型,这边我们可以选择想要部署的模型。可选择部署一个标准化预测的模型,也可以选择部署一个GBDT的模型。也可以选择部署标准化加二分类预测,两个大包成一个模型来部署,这边我们以两个部署说一下这个功能,这时候取完之后我们点击下一步,这时候会提示你,我们这边会打包标准化批的预测还有二分类预测,还有两个推移组件。点击下一步,会讲几个任务之间的两个部署,后台会加上两个模型打包成一个模型,然后点击部署es,跳转到这个es部署界面,调转完之后我们只需要设置一下服务的名称,还需要设置配置的资源,配置的资源我们选用活动的资源选择oss,点击部署,确定这样我们就会就向服务器提供了一个创建部署的请求,这个服务大概需要1到2分钟。
当左上方显示一个绿色对号的时候表示已经部署完成。然后我们可以点击在线测试,然后我们复制一下样本,发送请求,对应他又会返回我们这边的结果,这个结果包含了我们预测的结果还有对应的detail信息。到现在为止我们已经完成了cruc的dome搭建以及服务的创建及验证。