[ PROMPT_NODE_27404 ]
shap
[ SKILL_DOCUMENTATION ]
# SHAP (SHapley Additive exPlanations)
## 概述
SHAP 是一种利用合作博弈论中的 Shapley 值来解释机器学习模型输出的统一方法。本技能为以下方面提供全面指导:
- 为任何模型类型计算 SHAP 值
- 创建可视化图表以理解特征重要性
- 调试和验证模型行为
- 分析公平性和偏差
- 在生产环境中实现可解释 AI
SHAP 适用于所有模型类型:树模型(XGBoost, LightGBM, CatBoost, 随机森林)、深度学习模型(TensorFlow, PyTorch, Keras)、线性模型和黑盒模型。
## 何时使用此技能
**当用户询问以下内容时触发此技能**:
- “解释我的模型中哪些特征最重要”
- “生成 SHAP 图表”(瀑布图、蜂群图、柱状图、散点图、力导向图、热力图等)
- “为什么我的模型会做出这个预测?”
- “为我的模型计算 SHAP 值”
- “使用 SHAP 可视化特征重要性”
- “调试我的模型行为”或“验证我的模型”
- “检查我的模型是否存在偏差”或“分析公平性”
- “比较不同模型间的特征重要性”
- “实现可解释 AI”或“为我的模型添加解释”
- “理解特征交互”
- “创建模型解释仪表板”
## 快速入门指南
### 第 1 步:选择正确的解释器 (Explainer)
**决策树**:
1. **树模型?** (XGBoost, LightGBM, CatBoost, 随机森林, 梯度提升)
- 使用 `shap.TreeExplainer` (快速、精确)
2. **深度神经网络?** (TensorFlow, PyTorch, Keras, CNNs, RNNs, Transformers)
- 使用 `shap.DeepExplainer` 或 `shap.GradientExplainer`
3. **线性模型?** (线性/逻辑回归, GLMs)
- 使用 `shap.LinearExplainer` (极快)
4. **其他模型?** (SVMs, 自定义函数, 黑盒模型)
- 使用 `shap.KernelExplainer` (模型无关,但较慢)
5. **不确定?**
- 使用 `shap.Explainer` (自动选择最佳算法)
**有关所有解释器类型的详细信息,请参阅 `references/explainers.md`。**
### 第 2 步:计算 SHAP 值
python
import shap
# 基于树的模型示例 (XGBoost)
import xgboost as xgb
# 训练模型
model = xgb.XGBClassifier().fit(X_train, y_train)
# 创建解释器
explainer = shap.TreeExplainer(model)
# 计算 SHAP 值
shap_values = explainer(X_test)
# shap_values 对象包含:
# - values: SHAP 值 (特征归因)
# - base_values: 预期的模型输出 (基准)
# - data: 原始特征值
### 第 3 步:可视化