4. 特征回放概念

特征回放(Feature Replay)是离线评估推荐/排序模型效果的核心技术之一。它通过将当前模型应用于历史请求日志中记录的上下文与候选特征,重新生成排序结果,并与线上真实曝光/点击行为进行对比,从而在不重新上线的情况下评估模型变更的效果。

核心思想:用旧数据 + 新模型 → 模拟线上效果,避免每次模型迭代都经历完整的在线A/B测试周期。

4.1 什么是特征回放

特征回放的基本流程如下:

  1. 收集历史日志:从线上系统获取一段时间内的请求日志,每条日志包含请求ID、用户上下文、候选物品列表及其特征向量、最终曝光物品及用户行为(点击/转化)。
  2. 提取特征:对每条历史请求,重新计算或读取当时保存的候选特征(用户侧特征、物品侧特征、交叉特征、上下文特征)。
  3. 模型推理:将提取的特征输入待评估的新模型,得到每个候选物品的预测分数。
  4. 排序与截断:按预测分数对候选物品重新排序,取Top K作为模拟曝光列表。
  5. 效果对比:将模拟曝光列表与真实曝光列表对比,计算命中率、NDCG、AUC等离线指标;或直接对比模拟曝光下用户行为(点击率)的变化。
关键前提:特征回放要求历史日志中完整保存了模型推理所需的全部特征,否则无法准确回放。实践中常采用“特征快照”机制,在请求发生时将特征向量一并落盘。

4.2 离线回放 vs 在线回放

根据回放发生的时机与数据来源,特征回放分为离线回放和在线回放两种模式。两者对比如下:

对比维度 离线回放 在线回放
数据来源 历史日志(已落盘的离线数据) 实时请求流量(线上实时日志)
推理时机 离线批处理(Spark/Flink批作业) 在线实时推理(服务端同步调用)
延迟要求 无严格延迟要求,分钟~小时级 毫秒级延迟,需与线上服务同延迟约束
特征时效性 使用历史时刻的特征快照 使用当前时刻的最新特征
评估指标 离线指标(AUC、NDCG、HitRate) 在线指标(CTR、CVR、GMV)
风险等级 低(不影响线上用户) 高(可能影响线上用户体验)
典型场景 模型快速迭代验证、特征重要性分析 模型灰度放量前的线上小流量验证

两种模式并非互斥,实践中常采用先离线回放筛选 → 再在线回放验证的递进策略,以平衡评估效率与可靠性。

离线回放 vs 在线回放流程对比 离线回放 ① 读取历史日志(HDFS/OSS) ② 提取特征快照(离线批处理) ③ 新模型批量推理 → 排序 ④ 计算离线指标(AUC/NDCG) 在线回放 ① 实时请求流量(API网关) ② 实时特征计算(毫秒级) ③ 新模型在线推理 → 排序 ④ 观察在线指标(CTR/GMV)

4.3 回放的时间一致性要求

特征回放的核心挑战在于时间一致性——回放时使用的特征必须与线上真实推理时刻的特征保持一致,否则回放结果将失去参考价值。时间一致性包含以下三个层面:

4.3.1 特征时间戳对齐

每条历史请求都带有请求时间戳。回放时必须使用该时间戳对应的特征快照,而非当前时间的最新特征。例如:

  • 用户画像特征:使用请求时刻的用户画像版本,而非用户当前的最新画像。
  • 物品统计特征:使用请求时刻之前的统计值(如过去7天点击率),而非包含未来数据的统计值。
  • 上下文特征:使用请求时刻的时间、地点、设备等信息。
常见陷阱:如果回放时误用了“未来特征”(例如用请求发生之后才产生的物品标签),会导致回放指标虚高,模型实际上线后效果远低于回放预期。这种现象称为数据泄露(Data Leakage)。

4.3.2 特征版本一致性

模型训练时使用的特征工程逻辑(如分桶方式、归一化参数、交叉特征组合)必须与回放时完全一致。如果特征版本发生变更,回放结果将无法反映真实模型效果。

特征版本要素 一致性要求 常见问题
特征计算代码 回放代码与训练代码使用同一版本 回放时误用新版本特征计算逻辑
特征归一化参数 使用训练集统计的均值和方差 回放时重新计算全局统计值
类别特征映射 使用训练时的ID映射表 新ID在回放时被映射为默认值
特征组合规则 组合逻辑与训练时完全一致 回放时遗漏了某个交叉特征

4.3.3 回放窗口与模型训练窗口的隔离

回放使用的历史数据时间窗口必须严格晚于模型训练数据的截止时间,避免使用训练集内数据评估模型,导致过拟合假象。

最佳实践:将时间线划分为三个互不重叠的区间:
训练窗口(T0 ~ T1)→ 验证窗口(T1 ~ T2)→ 回放窗口(T2 ~ T3)
回放窗口至少与验证窗口间隔1天以上,确保特征统计完全独立。
时间窗口隔离示意图 T0 T1 T2 T3 训练窗口 验证窗口 回放窗口 间隔 ≥ 1天(特征统计独立)

4.4 特征回放的适用边界

特征回放并非万能,其有效性依赖于以下前提条件:

  • 特征可回溯:历史日志中完整保存了模型所需的全部特征,且特征计算逻辑可复现。
  • 模型无状态:模型推理不依赖用户历史行为序列之外的动态状态(如在线学习模型参数实时更新)。
  • 环境无变化:回放期间的系统环境(如候选池、召回策略、业务规则)与线上基本一致。
实践建议:在搭建特征回放系统时,优先保证特征快照的完整性和时间戳的准确性。建议在日志采集阶段就将特征向量序列化存储,避免回放时重新计算带来的版本不一致风险。