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

发布时间:2026/7/18 22:45:13

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_size0.2) # 树模型不用特意做标准化真香 model XGBRegressor(n_estimators150, max_depth5) 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_namesdata.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_namesdata.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_indexs5, # 血糖指标 feature_namesdata.feature_names)这个散点图暴露了bmi和s5的协同效应——当s5较高时bmi的边际效应明显增强。这说明模型捕捉到了肥胖与血糖指标的联合作用比单特征分析更有临床价值。最后来个全家福可视化shap.initjs() shap.force_plot(explainer.expected_value, shap_values, X_test, feature_namesdata.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诊断——不过那又是另一个故事了。

相关新闻