保障离线在线一致性的CTR预估方案

本案例使用经典的CTR点击率预估数据集Avazu进行一体化模型训练,并将离线调试完成的归一化预测->独热编码预测->向量聚合->FM预测流程完整部署到EAS。您在线上环境进行模型预测时,也可以使用离线训练时的数据预处理和特征工程逻辑,以保障线上线下处理流程的一致性。

前提条件

数据集

Avazu是经典的CTR点击率预估数据集,PAI使用了Avazu的一个子集(包括20万条样本数据:训练集16万条;预测集4万条)构建点击率预估流程。数据详情请查看Avazu,具体的字段如下。

列名

类型

描述

id

STRING

广告ID

click

DOUBLE

是否点击

dt_year

INT

点击的年份

dt_month

INT

点击的月份

dt_day

INT

点击的时间(天)

dt_hour

INT

点击的时间(小时)

c1

STRING

匿名的离散变量

banner_pos

INT

标题的位置

site_id

STRING

地点ID

site_domain

STRING

地点Domain

site_category

STRING

地点类别

app_id

STRING

应用ID

app_domain

STRING

应用Domain

app_category

STRING

应用类别

device_id

STRING

设备ID

device_ip

STRING

设备IP

device_model

STRING

设备模型

device_type

STRING

设备类型

device_conn_type

STRING

设备连接类型

c14 - c21

DOUBLE

匿名离散变量(共8列)

操作步骤

  1. 进入Designer页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 可视化建模(Designer),进入Designer页面。

  2. 构建工作流。

    1. Designer页面,单击预置模板页签。

    2. 在模板列表的保障离在线一致性的CTR预估方案区域,单击创建

    3. 新建工作流对话框配置以下关键参数,其他参数可以使用默认配置。

      其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。

    4. 单击确定

      您需要等待大约十秒钟,工作流可以创建成功。

    5. 在工作流列表,双击保障离在线一致性的CTR预估方案工作流,进入工作流。

  3. 通过模板创建的工作流,如下图所示。 image

    在该工作流中,PAI将特征分为以下两类:

    • 数值型特征:PAI使用归一化算法,将特征做归一化处理。

    • 离散型特征:PAI使用独热编码组件处理。最后将两类特征融合成一个向量,并使用FM算法训练模型并推理。

  4. 运行工作流并查看输出结果。

    1. 单击画布上方的image

    2. 工作流运行结束后,右键单击画布中的二分类评估-1,在快捷菜单,单击可视化分析,或直接单击画布上方的image.png

    3. 二分类评估-1对话框指标数据页签,查看预估准确率。 image

  5. 如果指标满足要求,您可以将数据预处理、特征工程、模型预测的完整流程打包,并部署至EAS。

    1. 在画布上方,单击制作Pipeline模型

    2. 手动选中归一化批预测-2节点后(会自动选中右侧的完整链路),单击下一步。会把选中需要部署的数据处理链路和用到的模型打包成一个Pipeline模型。image.png

    3. 制作Pipeline模型对话框,确认模型打包信息,并单击下一步,启动Pipeline模型打包任务。image.png打包任务大概需要3~5分钟即可完成。

    4. 部署模型服务。

      • 方式一:在制作Pipeline模型对话框,当运行状态成功时,单击部署至EAS,会跳转到EAS控制台。配置服务名称资源部署信息后,单击部署,即可完成模型部署,更多详细内容,请参见Pipeline部署在线服务

      • 方式二:如果制作Pipeline模型对话框已关闭,您可以在画布右上方单击全部任务查看,在历史任务对话框,查看制作任务运行状态。当状态成功时:

        • 您可以单击操作列下的模型>部署,并按照控制台操作指引部署模型服务。

        • 您也可以单击画布上方的模型列表,在模型列表中选中打包的模型,单击部署至EAS并按照控制台操作指引部署模型服务。

  6. EAS控制台,单击已部署好的服务操作列下的在线调试,对服务进行在线调试,更多详细内容,请参见服务在线调试

    其中:Body区域的请求数据可以输入和数据集相同结构的测试数据,例如:

    [{"id":"10000169349117863715","click":0.0,"dt_year":14,"dt_month":10,"dt_day":21,"dt_hour":0,"C1":"1005","banner_pos":0,"site_id":"1fbe01fe","site_domain":"f3845767","site_category":"28905ebd","app_id":"ecad2386","app_domain":"7801e8d9","app_category":"07d7df22","device_id":"a99f214a","device_ip":"96809ac8","device_model":"711ee120","device_type":"1","device_conn_type":"0","c14":15704.0,"c15":320.0,"c16":50.0,"c17":1722.0,"c18":0,"c19":35.0,"c20":100084.0,"c21":79.0}]

    该数据在服务中会顺序进行归一化预测->独热编码预测->向量聚合->FM预测,最终得到如下预测结果。image.png