← 返回题目列表

特征流水线如何保证可复现?

中等 第 23 / 25 题 更新于 2026/09/19
特征工程机器学习面试题模型训练

简化版

可复现特征流水线要固定原始数据快照、代码与配置版本、依赖、随机种子、特征 schema 和中间产物血缘,使同一 entity、event time、版本能重算出同一值。仅保存模型文件不够。

详细版

  • 每个特征记录定义、类型、窗口、数据源和 owner。

  • 数据快照或不可变分区决定历史输入。

  • 转换器参数必须随模型一起版本化。

  • 随机采样、并行归约和浮点环境影响位级结果。

  • 离线回填与在线计算需要可对账的样本键。

完整版教学

一、特征值是数据与代码在时间上的函数

同名特征会随 SQL、源表或窗口口径变化。

没有版本与血缘,旧模型重训得到的其实是新特征,无法判断差异来自数据还是算法。

可复现目标可分统计等价与位级一致;分布式浮点累加顺序不同可能产生微小差异,应按风险定义容差。

二、底层机制与公式

feature_value = F(entity_id,event_time,data_snapshot,code_version,config)
artifact_id=hash(all dependencies)

三、带数字的推演

用户 42 在 2026-01-10 12:00 的 7 日消费额,应由截止该时点的数据快照和 feature_v3 重算。

若 SQL 从自然日改成 168 小时却仍叫同名,回溯无法复现。

四、方案对比

方案/对象核心特点代价或边界
只存最终特征表读取快血缘缺失
快照+版本代码可重算审计存储与治理成本
容器/锁文件固定运行环境仍需固定数据输入

五、执行流程

注册定义/schema -> 固定源分区 -> 执行并记录 run manifest
-> 校验统计与样本 hash -> 发布版本 -> 训练记录 feature version -> 可回放

六、边界条件与工程代价

上游表回写历史分区会破坏快照语义,应采用不可变版本、time travel 或记录输入文件清单与校验和。

隐式默认时区、夏令时和窗口边界是常见不可复现源,时间字段必须统一时区与闭开区间。

记忆钩子:复现特征要回答五个问题:哪批数据、哪版代码、什么配置、何时计算、输出校验是什么。

七、常见误区与追问

  • 误区:设置随机种子就可完全复现。 数据、代码、依赖和硬件算法也要固定。

  • 追问:run manifest 应含什么? 输入快照、代码提交、配置、依赖和输出校验。

  • 误区:同名特征代表同一语义。 定义变化必须升版本。

  • 追问:为何保存 schema? 类型/单位变化会静默改变计算和模型输入。

  • 追问:怎样做样本对账? 按 entity+event time 在不同环境重算并比较容差。

八、加强记忆

复现特征要回答五个问题:哪批数据、哪版代码、什么配置、何时计算、输出校验是什么。

名字相同不等于语义相同。