用途:按业务分群条件训练多个 XGBoost 子模型,通过 OOF Stacking 融合成主模型,并与单模型/子模型基线对比,评估集成收益。适用于需要分群集成建模、分群+Stacking 融合、子模型训练+集成的场景。
主要能力分三阶段。阶段1 用 scripts/sub_trainer.py 训练分群子模型,支持 --segments 分群条件 JSON 或 --segment_col 按列自动分群,支持 --features_per_segment 分群差异化特征、--pos_weight_per_segment 各分群正样本权重,--auto 可对 OOT Gap > 0.05 的分群自动调参;输出每个分群的 {output_dir}/{segment_name}.json 及含 Train/Val/OOT AUC/KS/Gap 对比表与质量门控结果的 Markdown 报告。阶段2 用 scripts/stacker.py 做 OOF Stacking 融合,默认 cv_folds=5,输出 stack_meta.json 与 OOF 预测分分布图。阶段3 用 scripts/comparator.py 生成对比表,含单模型 XGB 基线(可选 LR/DNN 基线)、最优子模型、Stacking 集成的 AUC/KS/Gap 及最终推荐。
用法:三段必须按 sub_trainer → stacker → comparator 顺序执行,通过文件系统传递产物。复杂嵌套 JSON(segments、features_per_segment、pos_weight_per_segment、submodel_paths)需走 --config。示例:python scripts/sub_trainer.py --data_path ./data.parquet --target y_label --config ./config.json --auto --output_dir ./outputs/deepmodel;python scripts/stacker.py --data_path ./data.parquet --target y_label --config ./config.json --output_dir ./outputs/deepmodel;python scripts/comparator.py --data_path ./data.parquet --target y_label --stack_model_path ./outputs/deepmodel/stack_meta.json --config ./config.json --output_dir ./outputs/deepmodel。
限制与注意:分群条件应互斥,否则 Stacking 会信息泄漏;每分群训练样本建议 ≥500,过少建议合并;OOF 在各分群内独立做 k-fold;Meta-learner 固定 max_depth=2,不做超参搜索;--extra_baseline_algos 仅走默认超参,定位低成本初筛,严格多算法公平对比需切换 Agent 模式调用 xgb-tuning → lr-tuning → dnn-tuning → model-comparison --use_tuned;质量门控标准为各分群样本量 ≥500、OOT Gap <0.05、Stacking OOT AUC ≥ max(子模型 OOT AUC)-0.01、集成 vs 基线 OOT AUC 更高。