推荐算法定制

概述

推荐算法是一个典型的复杂算法负责工程的场景,常常需要复杂特征工程、多路召回、粗排、精排算法,并跟线上的各种工程系统对接,如特征存储、模型服务、推荐引擎等。从0-1搭建整套算法流程的方案,需要大量大数据ETL、算法调优、工程对接的工作,是一个非常费时费力的事情。 推荐算法定制模块大大简化了这一点,其中内置了大量云上经过丰富场景打磨的推荐算法流程,算法流程整体跟云上的推荐工程体系无缝打通。可以通过简单配置具体场景的业务数据的情况,简单配置下算法的要求,就可以一键定制出整套特征工程、多路召回、粗排、精排等的推荐算法流程,到DataWorks上进行例行训练和调度。 下面以示例数据为例对使用流程进行介绍

使用流程

生成流程

  1. 创建算法配置:在运维与实验操作台的推荐算法定制 > 定制算法页面中点击新增算法,进行场景、数据源、工作流名称等的基础信息的配置和选择,点击确定
    image.png

  2. 数据表配置:点击更新算法进入算法配置详情页,首先进行数据表配置,我们逐一配置示例数据中的行为表,用户表和物品表的业务属性,如行为表中哪个是用户id字段,哪个是行为事件字段,哪个是类目类字段等等。
    image.pngimage.pngimage.png

召回配置:点击下一步,进入召回配置Tab,我们以EtrecU2I (协同过滤)为例配置一路召回
image.png
其中在U2I Trigger,也就是用户偏好的Item的计算部分,示例数据中,行为表的event字段有expr(曝光)、click(点击)和praise(点赞)三种值,我们认为点赞比点击更能体现用户的偏好一点,因此我们这边设置click的权重为1,praise的权重为2
image.png
I2I的模型设置我们可以新增一个默认的Etrec算法参数配置,一般默认参数就能拿到比较好的效果。
image.png

  1. 特征工程配置:点击下一步,进入特征配置Tab,特征工程会结合数据表配置的信息来进一步自动加工衍生的统计特征。衍生特征有数值分布类的,KV偏好类的,序列类的等等。比如KV偏好类的,我们现在在物品表中配置一个的category(类目)特征,我们在特征配置中设置了“统计周期”为1天/7天,“统计行为事件”有曝光/点击/点赞,那么就会在用户的特征里加工出一组特征,包含用户在各个类目上的1天曝光数,7天曝光数,1天点击数,7天点击数,1天点赞数,7天点赞数等。
    image.png

  2. 排序配置:点击下一步,进入排序配置Tab,我们以精排DBMTL为例配置一路多目标排序算法
    image.png
    其中我们设置了三个目标,点击、时长、点赞,具体如下

image.pngimage.pngimage.png

  1. 流程生成:点击下一步,进入配置预览Tab,点击生成部署脚本,可以在右侧日志查看里看到我们生成的详细日志,比如生成的特征数,生成的DAG流程文档的路径,生成的整个算法流程的迁移助手zip包路径等,DAG流程文档 迁移助手zip包,均在下载地址显示的oss目录下可以找到
    image.png

导入 & 执行

  1. 在上述配置预览Tab拿到算法流程的迁移助手zip包的oss路径,在oss控制台上获取package.zip包的相应http地址

image.png

  1. 在DataWorks的迁移助手页面导入这个迁移助手包,详见迁移助手使用手册,主要步骤如下

    1. 登录DataWorks控制台,单击工作空间列表后**,进入相应工作空间的数据开发**,单击左上方的 image.png 图标,选择全部产品 > 其他 > 迁移助手,进入迁移助手首页

    2. 在迁移助手的左侧导航栏,单击DataWorks迁移 > DataWorks导入,进入导入页面,单击右上方的新建导入任务进行导入 [注:资源和函数在一个项目是唯一的,多次导入可能会提示资源或函数已存在,导入失败,可以忽略这个错误],导入时

    3. 如果导入有问题,可以参考下推荐系统工程kickoff,看是否操作完整

  2. 回到DataWorks的数据开发页面可以看到导入的特征工程/Etrec召回/精排的了流程,具体可以参照下载地址oss目录下的DAG流程文档(feature.svg和rank.svg)进行补数据和例行调度

    1. 第一步:回补数据

      • 打开生成流程中生成的oss目录下的feature.svg和rank.svg,搜索”补数顺序”,以feature.svg图中**rec_sln_demo_item_table_preprocess_v1 **节点为例

起始日期: -xxd, 结束日期: 0d, 补数顺序: ##1

  - 这个节点依赖数据表"rec_sln_demo_item_table",需要补数xx天表示,补数顺序##1表示需要最优先补这份数据,具体操作从**Dataworks 运维中心页面**进入,**周期任务运维->周期任务** 中搜索“**rec_sln_demo_item_table_preprocess_v1**”,DAG图中选中后**右键->补数据->当前节点**,数据选择xx天之前到昨天即可
  - 根据补数顺序把feature.svg和rank.svg图中的数据先都补齐
  1. 第二步:例行调度示例

    • 打开生成流程中生成的oss目录下的feature.svg和rank.svg,未注明”无需提交节点”部分,都需要手动点击提交

image.png

  - 打开运维中心,**周期任务运维->周期任务 **可以查看任务DAG
  - 注意部署节点,**home_page_dbmtl_v1_deploy**,初次运行需要手动在DataWorks里面修改,倒数第二行eascmd为create后单独执行,执行完成后再修改回最初状态  

image.png