← 实验记录
进行中2026年6月25日

Exp019 · 巨大儿分类模型 Plan_1 — NN + CatBoost Blending 完整探究

分类模型Blending神经网络CatBoostFocal LossIsotonic校准Bayes先验调整

实验目标

在原始 Plan_1 代码的基础上,系统修复数据泄露等缺陷,探究串联(Cascade)与并联(Blending)两种架构的性能差异,并在确定最优架构后,通过概率校准和操作点选择进一步降低误诊率(FP),最终完成内部测试与外部验证的完整评估。

数据设置

  • 训练集:dataset_is_Macrosomia.csv,约 1570 例,巨大儿占比 14.2%
  • 外部验证集:Val_data_clear.csv,157 例,巨大儿 7 例(4.5%)⚠ 存在分布偏移
  • 特征:自动提取全部 19 个(排除 BW / is_Macrosomia),原版手动写死 13 个
  • 数据分割:Train 60% / Val 20% / Test 20%(三分割,Val 专用于阈值寻优,Test 全程封存)

原始代码缺陷修复

缺陷位置修复方案
Optuna 用 y_test 寻优阈值(数据泄露)Cell 5/8/12改为 Val 集寻优,Test 仅最终报告
Cell 9 增强特征死代码Cell 9L1 概率作为附加特征拼入 L2 输入
tpr/fpr 与 thresholds 长度不匹配Cell 13动态对齐 tpr[:n] / fpr[:n]
NN 无 DataLoader / 无早停Cell 4加入 DataLoader(batch=64) + 早停(patience=25)
树模型未处理类别不平衡全部树模型加入 scale_pos_weight / class_weights

架构对比实验

PATH A — 串联 Cascade(已淘汰)

L1 NN(Focal Loss)→ L2 三树(XGB + LGB + CatBoost)

  • L1 阈值 t=0.467,L2 阈值 t=0.068,均在 Val 集寻优
  • Recall=91.1% | Spec=77.7% | FP=60 | FN=4 | AUC=0.690
  • AUC 仅 0.690 根本原因:L1 阴性样本概率被截断在 0.467 以下,L2 输出概率量纲不同,两段拼接后全局排序能力严重受损

PATH B — 并联 Blending(选定)

NN + CatBoost 软概率融合,Optuna 在 Val 集搜索权重和阈值

  • NN=0.883 | CatBoost=0.117 | t=0.495
  • Recall=93.3% | Spec=78.1% | FP=59 | FN=3 | AUC=0.915
  • 单一连续概率尺度,AUC 正常,确定为基准架构

扩展实验:三模型 Blending(加入 RandomForest)

  • NN=0.338 | CatBoost=0.493 | RF=0.169 | t=0.396
  • AUC 提升至 0.924,Brier Score 0.189→0.142(RF 主要贡献在校准)
  • 但 FP 从 59 增至 76,淘汰

RF 的本质贡献是概率校准(Brier 改善),而非分类边界改善;且权重分布发生根本反转(NN 从 88% 降至 34%),说明在当前数据规模下三模型融合概率空间被 RF 稀释。

FP 优化:Isotonic 校准 + 操作点重选

改进 1:Isotonic Regression 概率校准

在 Val 集上拟合保序回归,消除 NN / CatBoost 的过度自信:

  • Brier Score:0.189 → 0.081(↓57%)
  • 校准后概率更接近真实频率,为操作点重选提供更可靠的概率基础

改进 2:操作点选择

扫描全阈值,绘制 Recall–FP 权衡曲线,关键发现:

校准后概率在 0.202~0.223 区间存在分布空白(无样本),导致 Recall≥90%/85%/Youden 三个准则均落在同一操作点(t=0.202,FP=59)。越过 0.223 才跳至 FP=35(FN=8)。

最终选定:Recall≥80% 最小FP 操作点(t=0.223)

接受漏诊从 3 增至 8(+5),换取误诊从 59 降至 35(↓40.7%)。

最终测试集结果(Plan_1_最终版)

指标数值
Sensitivity (Recall)82.22%
Specificity86.99%
PPV (Precision)50.72%
NPV96.72%
F1 Score0.6325
Youden Index0.6921
AUC-ROC0.902
Brier Score0.081
TP / FP / FN / TN37 / 35 / 8 / 234

外部验证(Bayes 先验调整)

外部验证集阳性率(4.5%)与训练集(14.2%)存在显著分布偏移,需进行 Bayes 先验调整:

p_adj = (LR × π_ext / (1 - π_ext)) / (1 + LR × π_ext / (1 - π_ext))

LR = p / (1 - p) × (1 - π_train) / π_train
策略FPFNRecallSpec
原始融合直接应用1490100%0.7%
Isotonic 校准后470100%68.7%
Bayes 先验调整(推荐)10185.7%93.3%

Bayes 调整将 FP 从 149 降至 10(↓93%),代价是 FN 从 0 增至 1。调整仅依赖先验概率,不接触外部标签,方法论合规。

特征重要性(CatBoost + RF 综合排名)

排名特征说明
1FH(宫高)CatBoost 重要性 36%,远超第二名,两模型一致
2FL(股骨长)
3AC_baby(胎儿腹围)
4AC_mom(母亲腹围)
5GWG(孕期增重)
末位GDM、CP信息已被连续超声指标充分代理

部署说明

  • App 单条输入场景:使用本地历史巨大儿发生率作为固定先验,内置 Bayes 调整,无需每次输入人群参数
  • 模型文件:运行 Plan_1_最终版.ipynb 重新生成(不纳入版本管理)
  • 代码仓库:Hospital-Project

结论

NN + CatBoost Blending + Isotonic 概率校准 + Recall≥80% 操作点为当前最优分类方案。后续与科室商议确认 Recall 目标后,修改 RECALL_FLOOR 一个参数重跑即可。