行为
CR-002: M3a 里程碑交付物语义变更(标准化与共线性归属修正)¶
| 字段 | 内容 |
|---|---|
| CR ID | CR-002 |
| 标题 | Step 3 产出特征由“标准化后”变更为“原始值”,标准化降级为可复用工具函数 |
| 发起人 | Henry Lin (PM) |
| 日期 | 2026-04-11 |
| 状态 | ✅ Approved |
| 影响范围 | M3a Done 标准、规约 4.3/4.4 执行时机、Step 5 训练流水线 |
1. 变更描述¶
原文(项目章程 M3a Done 标准):
② 首日(数据集第一天)所有标准化特征输出 NULL(T-1 Shift 验证)
变更为:
②
features.parquet内所有特征必须为原始值;test_feature_engineering.py必须包含针对标准化工具函数的单测,验证其输入首日数据时输出全 NULL(T-1 Shift 验证在函数级闭环,而非产物级)
2. 变更原因(根因追溯)¶
规约 5.2 规定“每一折的训练集内部独立执行:截面标准化 → 共线性筛选”。若 Step 3 直接产出标准化特征,将导致训练时使用全局统计量,严重违反时序隔离原则(触发风险 R-3 未来数据泄露)。因此,标准化与共线性剔除的执行权必须移交至 Step 5,Step 3 仅负责暴露底层纯函数。
3. 影响分析¶
| 受影响模块 | 影响说明 | 应对措施 |
|---|---|---|
feature_engineering.py |
不再直接产出标准化后的列 | 暴露 apply_cross_section_standardization(df: pl.DataFrame, stats_df: pl.DataFrame) -> pl.DataFrame 供 Step 5 调用 |
standardization_params.parquet |
语义变更为“全局基准预览” | 文件头部增加 is_production_ready: false 标识 |
trainer.py (Step 5) |
增加调用标准化函数的逻辑 | 逐折调用 Step 3 暴露的函数,产出真正用于训练的参数 |
由 Huarui Lin 更新于 5 天 之前 · 2 修订