01 踩过的雷
在过往风险特征的加工和使用过程中,主要遇到以下问题:
- 上线慢:分析与线上调用使用两套代码,改写时间长且易偏差;
- 难复用:Java表达式理解门槛高,人员迭代后特征逻辑理解困难;
- 无下线:特征应用缺少可视化血缘视图,无法精准下线;
- 缺监控:特征数值缺少定期监控复盘,异常情况与偏移无法及时发现;
- 代码差异性大:不同人对不同需求评审会模型/策略人员离线数仓SQL或Python进行特征挖掘,挖掘成果行程需求文档理解特征含义,模型/策略人员不了解接口JSON报文,变量开发人员对业务理解存在难度,Java开发JSON基于报文开发特征代码打包部署,Jar包对于策略和模型人员基本是黑盒,变量逻辑变更的迭代周期较长;
- 特征图谱缺失:无标准下线流程,特征的被调用链路缺少清晰的可视化视图,特征到数据服务的对应关系无法直接读取。
02 解决方案1.0
为了快速解决业务的痛点问题,简单搭建了一套管理方案:
- 统一数据解析:确保离线与实时同源同构,一套DDL,两种用法,统一数据源,模型/策略人员与特征开发/部署人员所用数据结构一致,元信息一次变更,两个环境同时同步,减少信息同步误差;
- 避免代码语言转化:减少定义理解偏差;
- 全量解析转化:定期监测数据质量,监控指标包括特征调用情况、查询平均时间、缺失数量、缺失率、类别数量、占比最高值、单值集中度、最大值、最小值、平均值、四分位数Q1、Q2、Q3、PSI等。
03 解决方案2.0
系统化、体系化管理风险特征全生命周期:
- 建设特征工厂:完成特征的全流程管理,特征需求统一收口,落地特征管理规范;
- 同步调用改为异步调用:有效应对营销活动的流量激增,通过特征工厂的引入,将特征调用的方式从同步改为异步,在系统硬件有限的前提下,提升了整体交易的吞吐能力;
- 精细化特征加工与调用流程:通过实时任务/离线任务的预配置,屏蔽业务人员对于后端不同特征类型的实现原理,“一套代码,两种用法”确保离线与实时环境的特征数据同步。
04 展望3.0
回顾1.0、进行2.0、展望3.0:
- 自动化:自动化生成特征SQL,业务人员通过圈选维度和指标后自动生成规范化SQL;
- 智能化:创建特征与用户表现挂钩的评分体系,协助业务快速迭代特征;
- 自助式特征开发:进一步降低特征使用门槛,SQL配置UDF注册SQL解析器RedisTiDBHive元数据管理前端应用层后端功能层底层数据存储任务管理,通过实时任务/离线任务的预配置,屏蔽业务人员对于后端不同特征类型的实现原理;
- 特征自动化筛选+ 推荐:加快特征迭代效率,根据业务需求创建需要挖掘的样本规则,通过配置+定时的方式生成Y样本集,通过特征的基本信息限定进行初筛,通过训练模型选定利用特征表现筛选特征,将模型参数与特征表现结果进行输出,并以图表的形式在特征管理平台中展示。