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)。
- 回放的本质: 将时间轴“倒带”,模拟线上特征生成器在历史每个时刻的行为,从而得到与线上完全对齐的特征样本。
实践要点: 特征回放不是简单的数据复制,而是对特征计算逻辑的“时间旅行”重演。回放后的特征应与线上实时特征在相同时间点、相同样本上保持数值一致,这是验证回放质量的核心标准。
1.3 本课程的学习目标
通过本课程,学员将系统掌握离线特征与实时特征回放的核心原理、工程架构与落地实践。具体目标如下:
- 理解特征回放的业务价值: 明确回放如何消除训练-推理不一致,提升模型线上效果。
- 掌握回放架构设计: 学会设计支持时间旅行、状态还原、数据对齐的回放系统。
- 熟悉回放实现技术栈: 基于 Flink、Spark、Kafka、Redis 等组件搭建回放链路。
- 具备回放质量评估能力: 掌握特征一致性校验、延迟模拟、数据漂移检测等方法。
- 能够落地生产级回放系统: 从单特征回放到全量特征回放,逐步构建可复用的回放平台。
1.4 适用人群
| 角色 | 学习收益 |
|---|---|
| 大数据架构师 | 掌握离线与实时特征回放的系统架构设计方法,提升数据管道可靠性 |
| 特征工程专家 | 深入理解特征一致性的技术原理,优化特征生产与回放流程 |
| 机器学习工程师 | 解决训练数据与线上特征不一致导致的模型效果衰减问题 |
| 数据平台开发工程师 | 学习基于 Flink/Spark 的回放实现细节,提升实时计算工程能力 |
前置要求: 建议学员具备至少 1 年以上大数据开发经验,熟悉 Flink/Spark 基本概念,了解特征工程基础流程。本课程不涉及基础编程语法教学。