1. 课程导论:离线特征与实时特征的定义、特征回放的概念、本课程的学习目标与适用人群

1.1 离线特征与实时特征的定义

在机器学习工程中,特征根据其计算与供给的时间窗口,可划分为离线特征与实时特征两大类。两者的核心差异在于数据的时间敏感度与计算延迟要求。

维度 离线特征 (Batch Feature) 实时特征 (Real-time Feature)
计算窗口 T+1 或小时级批量计算 秒级/毫秒级滑动窗口
数据源 离线数仓、Hive、HDFS 消息队列(Kafka)、实时流(Flink)
典型特征 用户近7天累计消费金额、历史点击率 当前会话浏览序列、最近5分钟点击次数
存储介质 离线特征表(Hive/MySQL) 在线 KV 存储(Redis/HBase)
更新频率 每日/每小时全量或增量更新 事件驱动,持续更新
关键认知:离线特征提供“历史全貌”,实时特征提供“当前状态”。在推荐、广告、风控等场景中,两者通常需要联合使用,才能同时保证模型的记忆性与时效性。

1.2 特征回放的概念

特征回放(Feature Replay / Feature Backfill)是指将历史时间窗口内的原始数据,按照与线上生产环境完全一致的特征计算逻辑,重新生成对应时间点的特征值,并存储为离线数据集的过程。其核心目的是解决“训练-推理一致性”问题。

  • 为什么需要回放? 线上实时特征依赖当前时刻的流式状态(如滑动窗口计数),而离线训练时无法直接获取历史时刻的实时状态快照。如果直接用离线批量特征替代,会导致训练与推理时的特征分布不一致(Training-Serving Skew)。
  • 回放的本质: 将时间轴“倒带”,模拟线上特征生成器在历史每个时刻的行为,从而得到与线上完全对齐的特征样本。
实践要点: 特征回放不是简单的数据复制,而是对特征计算逻辑的“时间旅行”重演。回放后的特征应与线上实时特征在相同时间点、相同样本上保持数值一致,这是验证回放质量的核心标准。
离线特征与实时特征对比架构图 离线特征 vs 实时特征:数据流与存储对比 离线特征 批量计算(T+1 / 小时级) Hive / HDFS Spark 批量ETL 离线特征表 MySQL / HBase 适用:历史统计、长期画像 实时特征 流式计算(秒级 / 毫秒级) Kafka 事件流 Flink 滑动窗口 Redis 状态存储 在线特征服务 适用:会话行为、实时计数 时间敏感度 逐渐升高

1.3 本课程的学习目标

通过本课程,学员将系统掌握离线特征与实时特征回放的核心原理、工程架构与落地实践。具体目标如下:

  1. 理解特征回放的业务价值: 明确回放如何消除训练-推理不一致,提升模型线上效果。
  2. 掌握回放架构设计: 学会设计支持时间旅行、状态还原、数据对齐的回放系统。
  3. 熟悉回放实现技术栈: 基于 Flink、Spark、Kafka、Redis 等组件搭建回放链路。
  4. 具备回放质量评估能力: 掌握特征一致性校验、延迟模拟、数据漂移检测等方法。
  5. 能够落地生产级回放系统: 从单特征回放到全量特征回放,逐步构建可复用的回放平台。

1.4 适用人群

角色 学习收益
大数据架构师 掌握离线与实时特征回放的系统架构设计方法,提升数据管道可靠性
特征工程专家 深入理解特征一致性的技术原理,优化特征生产与回放流程
机器学习工程师 解决训练数据与线上特征不一致导致的模型效果衰减问题
数据平台开发工程师 学习基于 Flink/Spark 的回放实现细节,提升实时计算工程能力
前置要求: 建议学员具备至少 1 年以上大数据开发经验,熟悉 Flink/Spark 基本概念,了解特征工程基础流程。本课程不涉及基础编程语法教学。
特征回放核心概念流程 特征回放:时间旅行重演特征计算 原始事件日志 Kafka / HDFS 时间窗口重演 Flink / Spark 回放特征输出 离线特征表 训练样本 特征对齐 核心目标 回放后的离线特征与线上实时特征在相同时间点 保持数值一致,消除训练-推理偏差