0005-Sprint5 » 历史记录 » 版本 5
Huarui Lin, 2026-04-25 18:54
| 1 | 4 | Huarui Lin | # Sprint 5 |
|---|---|---|---|
| 2 | 5 | Huarui Lin | |
| 3 | ## 第 4 阶段:S5 - 标准化与 Spearman 降维 |
||
| 4 | |||
| 5 | 融合“截面数学推导”与“内存防爆累加”。 |
||
| 6 | |||
| 7 | ### Step 4.1: 截面聚合与双形态参数物理时序隔离 |
||
| 8 | |||
| 9 | 1. **纯横截面聚合**:按 `net_value_date` 分组计算 38 维的 `mean, std, median, mad`,推导 MAD 上下界,生成 `is_production_ready` 哨兵。 |
||
| 10 | 2. **路径 A (训练宽表)**:宽表上 `.shift(1)` 实现 T-1 对齐,按日期排序落盘。 |
||
| 11 | 3. **路径 B (推理长表)**:Unpivot 为长表,动态生成自然日历 `forward_fill` 至每日,按 `["feature_name", "date"]` 绝对物理排序落盘。 |
||
| 12 | |||
| 13 | ### Step 4.2: 标准化 Apply 与 IEEE 754 拦截 |
||
| 14 | |||
| 15 | 1. 实体表 `.collect()` 后与几百行宽表参数 Join(零内存膨胀广播)。 |
||
| 16 | 2. 遍历 38 列构建 `when(std==0).then(None).otherwise(...)` 表达式,封杀除零产生 `Inf`。 |
||
| 17 | |||
| 18 | ### Step 4.3: 训练 Join 三键死锁与毒样本截断 |
||
| 19 | |||
| 20 | 1. 三键强锁 Join:`["fund_id", "net_value_date", "segment_id"]`。 |
||
| 21 | 2. 哨兵覆写:`is_feature_complete == False` 的行,标签强制覆写为 `0`。 |
||
| 22 | |||
| 23 | ### Step 4.4: Spearman 秩相关内存防爆防线 |
||
| 24 | |||
| 25 | 1. 按年流式加载标准化特征。 |
||
| 26 | 2. 截面内 `rankdata(method="average")` 锁定平均秩,算秩后立即减均值。 |
||
| 27 | 3. Pearson 展开项 `np.dot` 联合累加 `sum_xy`,利用对称性减半算力。 |
||
| 28 | 4. 跨年累加后执行 `(matrix + matrix.T) / 2.0` 强制对称化截断。 |
||
| 29 | 5. 剔除 `>= 0.90` 的冗余特征,输出 `final_feature_list`。 |
||
| 30 | |||
| 31 | --- |