【小白笔记】基于外部SHAP排名的LightGBM特征消融与饱和分析工具

张开发
2026/4/3 17:18:58 15 分钟阅读
【小白笔记】基于外部SHAP排名的LightGBM特征消融与饱和分析工具
代码详细分析基于外部SHAP排名的LightGBM特征消融与饱和分析工具这是一段医疗/生物数据场景下的自动化特征筛选模型性能评估脚本核心是利用预先计算好的SHAP特征排名对LightGBM模型做「逐步删减特征」的消融实验找到性能最优的最小特征数量K同时监控敏感性、TW特征占比等业务关键指标最终输出可视化报告和结果文件。下面按整体定位→模块拆解→核心流程→关键业务逻辑四层详细分析一、整体定位与核心目标1. 核心用途专为带分组的医疗/生物特征数据如心电、患者数据设计解决「如何从大量特征中找到最少且性能最优的特征子集」问题。2. 注释中的5个业务目标代码完全对应实现读取用户预先算好的SHAP特征排名不重新计算保证排名固定按「每次删1个特征」循环评估模型GroupKFold分组交叉验证避免数据泄露输出性能曲线、TWt_wave特征占比、最优K建议为最优K绘制SHAP蜂群图单独监控敏感性医疗核心指标并绘制变化曲线。二、代码模块拆解按功能分5大模块模块1头部配置编码、依赖、全局参数1. 编码与文档说明# -*- coding: utf-8 -*- F-test LightGBM: 使用外部固定SHAP排名... 声明UTF-8编码文档字符串明确方法、目标、业务场景。2. 依赖库导入覆盖「数据处理、模型、机器学习、可视化、特征解释」全流程核心模型lightgbm梯度提升树适合表格数据机器学习sklearn缺失值填充、标准化、GroupKFold、评估指标特征解释shap模型可解释性绘制特征影响图数据/路径pandas、numpy、pathlib跨平台路径管理。3. 全局常量用户可直接修改的控制面板所有关键参数集中定义无需改核心代码参数含义业务意义EXTERNAL_RANKING_CSV外部SHAP排名文件路径必须替换为用户自己的SHAP排名文件META_COLS元数据列标签、ID、患者ID医疗数据分组依据避免数据泄露OUTER_SPLITS55折GroupKFold交叉验证评估模型泛化能力MISSING_THRESHOLD0.75缺失率75%的特征删除清洗无效特征AUC_SATURATION_TOL0.005AUC饱和阈值性能不再提升的临界值REUSE_INTERMEDIATE复用中间结果避免重复训练加速运行模块2基础工具函数数据处理模型管道评估这部分是「底层工具」被核心流程调用实现数据清洗、模型构建、指标计算_read_table/_choose_data_path自动读取CSV/Excel数据兼容两种格式load_and_preclean核心预处理分离特征X、标签y、分组groups患者ID删除零方差特征无信息、高缺失特征无效替换无穷值为缺失值保证数据合规。_build_lgbm_only_pipeline模型管道固定流程中位数填充缺失→标准化→LightGBM分类LightGBM参数is_unbalanceTrue适配医疗数据类别不平衡问题。_evaluate指标计算计算医疗场景核心指标AUC、敏感性sensitivity、特异性、MCC等其中敏感性是重点监控目标减少漏诊。_bootstrap_ci置信区间按患者分组做Bootstrap重采样计算95%置信区间评估结果稳定性。模块3核心实验函数Top-K消融饱和分析这是脚本的核心逻辑实现「逐步删特征→评估性能→找最优K」run_k_sweepTop-K循环消融实验从最大K100逐步减1直到K1从多到少删特征直观看性能变化每一步取外部SHAP排名的Top-K特征 → 5折GroupKFold验证 → 训练模型 → 计算指标记录K值、TW特征占比、各指标均值置信区间保存为CSV。✅关键GroupKFold分组——按患者ID拆分数据集避免同一患者数据同时出现在训练/测试集彻底防止医疗数据泄露。detect_saturation_k最优K检测自动找性能饱和点先找到最大AUC阈值最大AUC-0.005选满足AUC≥阈值的最小K特征最少、性能不下降最优解。模块4可视化函数结果输出将实验结果转化为业务可读的图表对应目标3/4/5plot_performance_curve绘制「AUC/准确率/敏感性」随K的变化曲线标记最优K、性能平台区、TW特征占比plot_sensitivity_curve单独绘制敏感性曲线业务要求的核心监控指标run_best_k_shap为最优K绘制SHAP蜂群图展示每个特征对模型的影响简化特征名方便查看。模块5主函数main流程总控串联所有步骤4大步执行优先复用缓存加速加载并清洗数据加载外部SHAP排名缓存优先执行Top-K消融实验缓存优先检测最优K→绘制所有图表→输出SHAP结果→保存所有文件。三、核心业务逻辑关键亮点1. 外部SHAP排名核心设计不重新计算SHAP而是用用户全量数据预先算好的固定排名保证消融实验可复现避免随机因素干扰。2. 消融实验从多到少删特征区别于「从少到多加特征」更直观体现冗余特征对性能的影响快速定位无效特征。3. 医疗场景专属优化GroupKFold分组杜绝患者级数据泄露敏感性单独监控医疗核心指标正确识别阳性样本减少漏诊TW特征占比分析针对心电t_wave特征的业务特定分析类别不平衡处理LightGBM开启is_unbalanceTrue。4. 性能饱和分析不是选「性能最高的K」而是选**「最少特征、性能几乎无损失」的K**简化模型、降低过拟合风险。四、输入输出说明1. 必需输入业务数据595_data.csv/xlsx必须包含Label、ID、PatientID列外部SHAP排名shap_feature_importance.csv必须包含feature列可选重要性列。2. 输出结果保存在model_results/nested_cv_595/核心表格performance_by_k.csv各K值性能、best_k_recommendation.csv最优K可视化图性能曲线、敏感性曲线、TW占比曲线、SHAP蜂群图中间缓存标准化后的SHAP排名、SHAP特征重要性表。总结这段代码是医疗表格数据特征筛选的工业化脚本完美结合了「机器学习模型评估特征可解释性SHAP业务指标监控数据安全分组验证」核心价值是自动化找到「少特征、高性能、可解释」的最优特征子集无需手动调参直接输出业务可用的结果。

更多文章