← 实验记录
进行中2026年6月25日
Exp021 · 分类模型 Plan_2 漏洞修复与三阶段消融实验
分类模型Blending消融实验数据泄露修复三阶段架构
实验目标
对原始 Plan_2 代码进行系统性漏洞审查与修复,完整复现「L1 NN 独立→串联 Cascade→并联 Blending」三阶段架构演进记录,同时修复原版 9 处已知缺陷。
原版漏洞清单
| 编号 | 漏洞 | 严重程度 | 修复方案 |
|---|---|---|---|
| 1 | Optuna 在 Test 集寻优(Cell 5/8) | 致命 | 改为 Val 集寻优 |
| 2 | 只有 Train/Test 两段,无 Val 集 | 致命 | 切出 Train 60% / Val 20% / Test 20% |
| 3 | NN 无 DataLoader、无早停 | 重要 | 加入 DataLoader(batch=64) + 早停(patience=25) |
| 4 | FocalLoss alpha 固定 0.45 | 重要 | 改为 alpha = n_neg/(n_pos+n_neg) 自动计算 |
| 5 | 树模型无类别不平衡处理 | 重要 | 全部加入 scale_pos_weight |
| 6 | 外部验证 fillna 用验证集 median | 次要 | 改用训练集 median(保存至 config) |
| 7 | 特征手动硬编码 13 个 | 次要 | 自动提取全部 19 个 |
| 8 | 图 C thresholds 长度不匹配 | 次要 | 改为独立全扫描 op_te_df |
| 9 | 无 Isotonic 概率校准 | 次要 | 加入 Isotonic(Val 集拟合) |
三阶段架构消融结果
阶段一:L1 NN 独立(Val 集)
- 阈值 t=0.0736,Recall=95.45%,FP=154,FN=2
阶段二:串联 Cascade(Val 集,默认阈值 0.5)
- Recall=61.36%,FP=15,FN=17
- 根因:L1 硬截断导致 L2 训练集分布形变,高危正样本大量被过滤,Recall 骤降
阶段三:并联 Blending(最终方案)
- Optuna 搜索结果:NN=0.243,CatBoost=0.757,t=0.109
- Isotonic 校准后操作点:t=0.055,Val FP=56,Val FN=7
最终 Test 集结果
| 指标 | 数值 |
|---|---|
| Sensitivity (Recall) | 88.89% |
| Specificity | 78.07% |
| FP / FN | 59 / 5 |
| AUC-ROC | 0.903 |
| Brier Score | 0.080 |
外部验证(Bayes 先验调整)
| 策略 | FP | FN | Recall | Spec |
|---|---|---|---|---|
| 原始融合 | 91 | 0 | 100% | 39.3% |
| Isotonic 校准后 | 32 | 0 | 100% | 78.7% |
| Bayes 调整(推荐) | 19 | 0 | 100% | 87.3% |
与 Plan_1 对比
Plan_2 与 Plan_1 最终版走相同的数据路线(NN + CatBoost Blending),差异仅在 Optuna 搜索到的权重分配(CatBoost 主导 0.757 vs NN 主导 0.883)。Test FP=59 高于 Plan_1 的 35,外部 FP=19 高于 Plan_1 的 10。
结论:Plan_2 消融实验价值在于记录 Cascade 为何失效,最终方案仍选 Plan_1。
代码文件
Week17/分类模型/Plan2探究和修改过程/plan_2/Plan_2_修复版.py