特征工程是把原始数据变成可训练、可复用、可监控的特征资产的过程。它决定了模型效果的上限,也是机器学习工程化中最容易被低估的一环。
特征生命周期与在线离线双路
上排是特征从定义到退役的一生;下排是它被消费的两种方式——训练走离线、推理走在线,但两侧必须读同一份特征逻辑。
读图要点:最大的坑不在上排,在下排两条通道之间。训练用离线批算、推理用实时流算,只要两边的算子或时间窗口有一点差异,离线指标再漂亮上线也会崩——这就是「训练好、上线崩」的根因。图中中间那块 Feature Store 承担的正是把两侧锁到同一份逻辑上。
五个关键环节
- 特征定义与元数据:统一特征命名、口径、类型与责任人,形成特征字典。
- 计算与回填:离线批处理(Spark / Hive)与实时流(Flink)双通道,支持历史回填与增量更新。
- 特征存储(Feature Store):统一注册、版本管理、在线 / 离线双存储与服务化读取。
- 线上线下一致性:训练与推理使用同一套特征逻辑,避免「训练好、上线崩」。
- 监控与漂移:特征分布漂移、缺失率与时效性监控,异常及时告警。
环节、问题与实践
| 环节 | 典型问题 | 实践建议 |
|---|---|---|
| 特征定义 | 同名不同义、口径分歧 | 特征字典 + 评审门禁 |
| 计算回填 | 回填慢、口径不一致 | 统一算子库 + 幂等任务 |
| Feature Store | 重复开发、复用率低 | 注册中心 + 服务化读取 |
| 一致性 | 训练 / 推理特征错位 | 同一份特征逻辑双跑校验 |
| 监控 | 漂移导致效果衰减 | 分布监控 + 自动重训触发 |
度量指标
- 特征复用率:被两个以上模型使用的特征占比。
- 一致性偏差:线上 / 离线同一特征值的不一致比例。
- 漂移发现时延:从分布变化到告警的时长。
自建工具链示范
特征工程的底座是「数据可观测 + 知识可沉淀」:perfs 负责指标与运行时数据的持续采集,kshare 承载特征字典、口径说明与实验结论的检索与推理,两者组合可在内网闭环「采集 → 定义 → 复用」。
边界与风险
- 特征泄漏:训练时引入了预测时不可得的信息,离线指标虚高。
- 口径漂移:上游逻辑变更未同步,特征静默失真。
- 过度工程:特征未稳定前就上平台,维护成本高于收益。