模型线上线下一致性问题

线下可能很好,但是线上表现并不如意,对于这种线上线下一致性问题,是机器学习模型在上线之后经常遇到的问题。

围绕着这个问题,从多个角度来考虑该问题。

1 特征维度

数据作为模型的输入,决定着模型的上限。一般一致性问题在数据的表现为:

1.1 线上线下的处理方式不同

针对同样的特征输入,离线和在线的处理方式不同,如input_schema配置没对齐特征抽取不一致等,这是最容易出现的情况。

解决方法

一般是离线和在线共用同一套特征抽取框架,同时每次模型上线前先生成一批待校验的一致性样本,对比每条样本在离线打分和在线打分的gap,小于一定阈值(如1e-6)算一致性通过

1.2 特征更新延迟性

user侧和item侧的特征一般以正排方式储存在key-value载体中,根据特征类型的不同更新时效性也可以分为:

  • 长期更新:user的年龄、性别、婚否、是否有孩子等长期比较稳定的用户画像特征
  • 天级更新:user最近7天/14天在该appid上的pv个数、click个数、conv个数、ctr、cvr等按天统计的中长期兴趣特征
  • 小时级更新:user的精准兴趣、广泛兴趣、app安装列表等按小时统计的近实时特征
  • 实时更新:user最近互动过的adid、appid、industry_id,item实时反馈特征,session序列特征

对于天级更新、小时级更新和实时更新这些对时效性比较敏感的特征,如果出现了更新延迟,线上实验效果的衰减也是特别厉害的。

1.3 线上特征源获取缺失

线上特征的获取由于来源和计算方式不同会有多种通路,比如文件、redis、rpc服务、透传等,每种通路一旦某个环节出现问题,特征就取不到或者取错,对线上预估的影响也是很大的

解决方法: 搭建特征监控体系

对每一个线上服务使用到的特征建立空值率、top取值分布、时效性、ctr/cvr分布等多个维度的监控也是很有必要的,可以及时发现出问题的特征并加以修复。

2 训练维度

除了特征外另一个重要的排查方向就是离线训练结果是否存在问题,可以从三个方面进行排查。

  1. 训练集和测试集是否出现了数据重叠。
  2. 评估函数是否可靠。
  3. 是否出现特征穿越,特别是与label强相关的统计类和行为序列特征出现穿越,相当于开了个上帝视角;
  4. 训练集过拟合是否存在

3 线上结果不置信

上面根据离线情况提供了几种不置信的检测思路,那么线上也同样面对同样的置信问题。

  1. 线上指标统计时间窗口:不同指标达到可置信水平的统计窗口有较大区别,这跟业务和指标稳定性有很大关系,比如广告主价值指标的置信时间窗口往往要比收入/ecpm要长不少,因为天级波动比较大。而ctcvr指标则跟归因是否有延迟相关,一般要等好几个归因周期才能置信;

  2. 实验分桶是否随机:ABtest实验关键在于流量划分正交,流过每一层的流量必须重新的均匀划分。不正交结果必然不置信,可以通过划分AABB实验桶来判断流量划分是否出现问题。
    模型线上线下一致性问题_第1张图片

  3. 线上serving检查

4 训练样本分布变化

比如特征来源有的来自base模型,有的来自实验模型,导致数据分布,特征都不一致,对应的必然不行。

你可能感兴趣的:(深度学习,机器学习与数据挖掘,机器学习,人工智能,算法)