当前位置: 首页 > news >正文

Python Xgboost/Catboost随机森林/树模型/任意模型/线性模型/SVR/G...

Python Xgboost/Catboost随机森林/树模型/任意模型/线性模型/SVR/GPR/ANN 模型SHAP图绘制。 VIF (SHapley Additive exPlanations)是一种用于解释机器学习模型预测的方法。 SHAP 图是一种可视化工具,用于解释单个样本或整个数据集中每个特征对模型预测的贡献。 SHAP 图包含多种图形,以下是其中一些常见的图形及其解释: 1. **Force Plot(力导向图)**: - 这是一种用于解释单个样本预测的图形。 它展示了每个特征对模型预测的贡献,以及如何将基准值转换为最终的预测值。 2. **Summary Plot(总结图)**: - 这种图表显示了数据集中每个特征的全局重要性。 它通常以水平条形图的形式呈现,每个条形代表一个特征,其长度表示其对模型的整体影响程度。 3. **Waterfall Plot(瀑布图)**: - 类似于力导向图,瀑布图也用于解释单个样本的预测。 它以垂直条形图的形式展示了每个特征对预测的正负影响,使得贡献可以更清晰地理解。 4. **Dependence Plot(依赖图)**: - 依赖图显示了一个特征的值如何影响模型的输出。 它通常以散点图的形式呈现,横轴表示特征的取值,纵轴表示模型的输出。 5. **Interaction Value Plot(交互值图)**: - 这种图形显示了特征之间的相互作用对模型输出的影响程度。 它可以帮助理解特征之间的联合影响。 6. **Partial Dependence Plot(部分依赖图)**: - 部分依赖图显示了特定特征对模型输出的单独影响。 它通过固定其他特征的值,以图形方式展示了特征的单变量效果。 7. **Contribution Plot(贡献图)**: - 这种图表展示了每个特征对模型预测的贡献,类似于瀑布图。 然而,它以横向条形图的形式呈现,使得对比特征贡献更加容易。 以上是一些常见的 SHAP 图形及其解释。 根据具体的应用场景和需求,可能会有其他类型的 SHAP 图形。

最近在调教黑盒模型时重新捡起了SHAP这个神器,发现这玩意儿对业务解释性需求真是救命稻草。实测Xgboost/Catboost/随机森林等树模型配合SHAP可视化效果拔群,连产品经理都能看懂。直接上代码更实在,咱们拿糖尿病数据集开刀。

先搞个XGBoost基础模型:

from xgboost import XGBRegressor from sklearn.datasets import load_diabetes from sklearn.model_selection import train_test_split data = load_diabetes() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2) # 树模型不用特意做标准化,真香 model = XGBRegressor(n_estimators=150, max_depth=5) model.fit(X_train, y_train)

SHAP全家桶出场:

import shap # 树模型专用解释器,速度比KernelExplainer快20倍不是梦 explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_test) # 全局特征重要性,比feature_importances靠谱 shap.summary_plot(shap_values, X_test, feature_names=data.feature_names)

这个summary_plot直接打脸传统特征重要性排序。横坐标是SHAP值的绝对均值,颜色冷暖代表特征值与预测结果的关系。比如bmi越靠右(高SHAP值)对应血糖预测值越高,符合医学常识。

单样本解释更适合撕逼场景:

# 选个刺头样本 sample_idx = 42 # 力导图像不像分子结构式? shap.force_plot(explainer.expected_value, shap_values[sample_idx], X_test[sample_idx], feature_names=data.feature_names)

这个动态图里,红色箭头是正向贡献特征,蓝色是拖后腿的。底部base_value是模型预期基准值,输出值=基准值+特征贡献代数和。跟产品讲"因为这个用户年龄比平均大3岁,所以预测风险值提高0.5"时,这图比干说强多了。

Python Xgboost/Catboost随机森林/树模型/任意模型/线性模型/SVR/GPR/ANN 模型SHAP图绘制。 VIF (SHapley Additive exPlanations)是一种用于解释机器学习模型预测的方法。 SHAP 图是一种可视化工具,用于解释单个样本或整个数据集中每个特征对模型预测的贡献。 SHAP 图包含多种图形,以下是其中一些常见的图形及其解释: 1. **Force Plot(力导向图)**: - 这是一种用于解释单个样本预测的图形。 它展示了每个特征对模型预测的贡献,以及如何将基准值转换为最终的预测值。 2. **Summary Plot(总结图)**: - 这种图表显示了数据集中每个特征的全局重要性。 它通常以水平条形图的形式呈现,每个条形代表一个特征,其长度表示其对模型的整体影响程度。 3. **Waterfall Plot(瀑布图)**: - 类似于力导向图,瀑布图也用于解释单个样本的预测。 它以垂直条形图的形式展示了每个特征对预测的正负影响,使得贡献可以更清晰地理解。 4. **Dependence Plot(依赖图)**: - 依赖图显示了一个特征的值如何影响模型的输出。 它通常以散点图的形式呈现,横轴表示特征的取值,纵轴表示模型的输出。 5. **Interaction Value Plot(交互值图)**: - 这种图形显示了特征之间的相互作用对模型输出的影响程度。 它可以帮助理解特征之间的联合影响。 6. **Partial Dependence Plot(部分依赖图)**: - 部分依赖图显示了特定特征对模型输出的单独影响。 它通过固定其他特征的值,以图形方式展示了特征的单变量效果。 7. **Contribution Plot(贡献图)**: - 这种图表展示了每个特征对模型预测的贡献,类似于瀑布图。 然而,它以横向条形图的形式呈现,使得对比特征贡献更加容易。 以上是一些常见的 SHAP 图形及其解释。 根据具体的应用场景和需求,可能会有其他类型的 SHAP 图形。

想看特征间的相爱相杀:

# 找两个可能有交互作用的特征 shap.dependence_plot('bmi', shap_values, X_test, interaction_index='s5', # 血糖指标 feature_names=data.feature_names)

这个散点图暴露了bmi和s5的协同效应——当s5较高时,bmi的边际效应明显增强。这说明模型捕捉到了肥胖与血糖指标的联合作用,比单特征分析更有临床价值。

最后来个全家福可视化:

shap.initjs() shap.force_plot(explainer.expected_value, shap_values, X_test, feature_names=data.feature_names)

这个动态力导图可以鼠标拖动旋转观察整个测试集的预测分布。大面积红色区域集中在某几个特征时,说明模型对这些特征存在过依赖,这时候就该检查是否数据泄漏或者特征工程有问题了。

踩坑提醒:用KernelExplainer处理神经网络时记得子采样,不然等到天荒地老。实测用100个背景样本+100个样本子集,生成shap_values的时间能从2小时缩短到10分钟,精度损失在可接受范围。代码差异仅在于换解释器:

# 适合非树模型的万能解释器(但慢) explainer = shap.KernelExplainer(model.predict, X_train[:100]) shap_values = explainer.shap_values(X_test[:100])

SHAP虽好,可不要贪杯哦。当特征超过30个时瀑布图会糊成马赛克,这时候建议先用聚类做特征分组。另外SHAP值计算的是边际贡献,多重共线性严重的特征会平分贡献度,这时候需要配合VIF诊断——不过那又是另一个故事了。

http://www.jsqmd.com/news/523530/

相关文章:

  • 2026年全网热议北京小程序开发服务推荐榜单,解锁本凡科技的新优势
  • 不用写代码!用UE5蓝图10分钟搞定回合制游戏摄像机(缩放+旋转+移动三合一教程)
  • 从碎片到全貌:2026 案发现场快速处理刑侦现场精准还原系统公司推荐 - 品牌2026
  • 从珠海少年到Nature封面:DeepSeek天才郭达雅的AGI征途
  • Genus水平共现网络图实战:如何用R语言快速处理OTU数据(附完整代码)
  • 程序员为啥都要学C语言?带你了解C语言的重要性和优势
  • 手把手教你给CH32V307VCT6移植FatFS:SD卡读写与文件管理实战(附源码)
  • 群晖NAS音乐库外网访问终极指南:5分钟搞定内网穿透+手机端秒播(附免费工具推荐)
  • BJT三极管工作原理图解:从物理结构到电流放大(附NPN/PNP对比)
  • 从零到一:基于 Astro 与 Cloudflare Pages 的极速博客实战
  • Docker Desktop、Docker Toolbox 和 Docker Engine:如何选择最适合你的Docker工具
  • 2026直冷机市场全景:从工业工艺到数据中心液冷的选型指南 - 品牌推荐大师1
  • 取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?
  • OCPI:构建电动汽车充电网络互联互通的技术解决方案
  • 【第四周】论文精读:SmartChunk: Query-Aware Chunk Compression with Planning for Efficient Document RAG
  • Multisim DC Sweep双源嵌套扫描实战:5步搞定MOSFET输出特性曲线
  • WebSocket 握手失败,net::ERR_CONNECTION_RESET问题解决
  • 深入解析transceiver-QPLL:从基础概念到线速率调优实战
  • 你的适应度函数‘欺骗’了你吗?详解遗传算法中的尺度变换与早熟陷阱
  • DolphinScheduler 3.1.8 资源中心(HDFS)与数据质量任务配置全攻略:告别“存储未启用”
  • 2026年家用晾衣架厂家专业选型指南:手摇/电动/落地/户外/折叠/飘窗/壁挂/铝合金/小户型晾衣架优选供应商 - 品牌推荐官
  • Linux下如何用aMule下载ed2k资源?保姆级安装配置指南
  • H5流媒体播放器EasyPlayer.js实战:从零构建跨平台视频播放解决方案
  • 避坑指南:ImageNet-1k数据集解压后验证集图片‘乱放’?一个Python脚本帮你自动归类
  • 广州复读学校哪家强?3大核心维度+10校深度解析 - 妙妙水侠
  • Arduino BMP180/BMP280气压温度传感器驱动库详解
  • 纯电动汽车两档 ATM 变速箱 Simulink 模型探索
  • 还不知道2026年试验箱去哪选?买试验箱便宜靠谱、优质环境试验箱推广平台网站深度测评 - 品牌推荐大师1
  • HC-SR501人体红外传感器原理与嵌入式工程实践
  • 嵌入式开源软件工程化选型与风险管控指南