项目

一般

简介

CR-002-M3a里程碑交付物语义变更 » 历史记录 » 版本 2

Huarui Lin, 2026-04-12 19:20

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