SHAP (SHapley Additive exPlanations)
Overview
SHAP is a unified approach to explain machine learning model outputs using Shapley values from cooperative game theory. This skill provides comprehensive guidance for:
- •Computing SHAP values for any model type
- •Creating visualizations to understand feature importance
- •Debugging and validating model behavior
- •Analyzing fairness and bias
- •Implementing explainable AI in production
SHAP works with all model types: tree-based models (XGBoost, LightGBM, CatBoost, Random Forest), deep learning models (TensorFlow, PyTorch, Keras), linear models, and black-box models.
When to Use This Skill
Trigger this skill when users ask about:
- •"Explain which features are most important in my model"
- •"Generate SHAP plots" (waterfall, beeswarm, bar, scatter, force, heatmap, etc.)
- •"Why did my model make this prediction?"
- •"Calculate SHAP values for my model"
- •"Visualize feature importance using SHAP"
- •"Debug my model's behavior" or "validate my model"
- •"Check my model for bias" or "analyze fairness"
- •"Compare feature importance across models"
- •"Implement explainable AI" or "add explanations to my model"
- •"Understand feature interactions"
- •"Create model interpretation dashboard"
Quick Start Guide
Step 1: Select the Right Explainer
Decision Tree:
- •
Tree-based model? (XGBoost, LightGBM, CatBoost, Random Forest, Gradient Boosting)
- •Use
shap.TreeExplainer(fast, exact)
- •Use
- •
Deep neural network? (TensorFlow, PyTorch, Keras, CNNs, RNNs, Transformers)
- •Use
shap.DeepExplainerorshap.GradientExplainer
- •Use
- •
Linear model? (Linear/Logistic Regression, GLMs)
- •Use
shap.LinearExplainer(extremely fast)
- •Use
- •
Any other model? (SVMs, custom functions, black-box models)
- •Use
shap.KernelExplainer(model-agnostic but slower)
- •Use
- •
Unsure?
- •Use
shap.Explainer(automatically selects best algorithm)
- •Use
See references/explainers.md for detailed information on all explainer types.
Step 2: Compute SHAP Values
import shap # Example with tree-based model (XGBoost) import xgboost as xgb # Train model model = xgb.XGBClassifier().fit(X_train, y_train) # Create explainer explainer = shap.TreeExplainer(model) # Compute SHAP values shap_values = explainer(X_test) # The shap_values object contains: # - values: SHAP values (feature attributions) # - base_values: Expected model output (baseline) # - data: Original feature values
Step 3: Visualize Results
For Global Understanding (entire dataset):
# Beeswarm plot - shows feature importance with value distributions shap.plots.beeswarm(shap_values, max_display=15) # Bar plot - clean summary of feature importance shap.plots.bar(shap_values)
For Individual Predictions:
# Waterfall plot - detailed breakdown of single prediction shap.plots.waterfall(shap_values[0]) # Force plot - additive force visualization shap.plots.force(shap_values[0])
For Feature Relationships:
# Scatter plot - feature-prediction relationship shap.plots.scatter(shap_values[:, "Feature_Name"]) # Colored by another feature to show interactions shap.plots.scatter(shap_values[:, "Age"], color=shap_values[:, "Education"])
See references/plots.md for comprehensive guide on all plot types.
Core Workflows
This skill supports several common workflows. Choose the workflow that matches the current task.
Workflow 1: Basic Model Explanation
Goal: Understand what drives model predictions
Steps:
- •Train model and create appropriate explainer
- •Compute SHAP values for test set
- •Generate global importance plots (beeswarm or bar)
- •Examine top feature relationships (scatter plots)
- •Explain specific predictions (waterfall plots)
Example:
# Step 1-2: Setup explainer = shap.TreeExplainer(model) shap_values = explainer(X_test) # Step 3: Global importance shap.plots.beeswarm(shap_values) # Step 4: Feature relationships shap.plots.scatter(shap_values[:, "Most_Important_Feature"]) # Step 5: Individual explanation shap.plots.waterfall(shap_values[0])
Workflow 2: Model Debugging
Goal: Identify and fix model issues
Steps:
- •Compute SHAP values
- •Identify prediction errors
- •Explain misclassified samples
- •Check for unexpected feature importance (data leakage)
- •Validate feature relationships make sense
- •Check feature interactions
See references/workflows.md for detailed debugging workflow.
Workflow 3: Feature Engineering
Goal: Use SHAP insights to improve features
Steps:
- •Compute SHAP values for baseline model
- •Identify nonlinear relationships (candidates for transformation)
- •Identify feature interactions (candidates for interaction terms)
- •Engineer new features
- •Retrain and compare SHAP values
- •Validate improvements
See references/workflows.md for detailed feature engineering workflow.
Workflow 4: Model Comparison
Goal: Compare multiple models to select best interpretable option
Steps:
- •Train multiple models
- •Compute SHAP values for each
- •Compare global feature importance
- •Check consistency of feature rankings
- •Analyze specific predictions across models
- •Select based on accuracy, interpretability, and consistency
See references/workflows.md for detailed model comparison workflow.
Workflow 5: Fairness and Bias Analysis
Goal: Detect and analyze model bias across demographic groups
Steps:
- •Identify protected attributes (gender, race, age, etc.)
- •Compute SHAP values
- •Compare feature importance across groups
- •Check protected attribute SHAP importance
- •Identify proxy features
- •Implement mitigation strategies if bias found
See references/workflows.md for detailed fairness analysis workflow.
Workflow 6: Production Deployment
Goal: Integrate SHAP explanations into production systems
Steps:
- •Train and save model
- •Create and save explainer
- •Build explanation service
- •Create API endpoints for predictions with explanations
- •Implement caching and optimization
- •Monitor explanation quality
See references/workflows.md for detailed production deployment workflow.
Key Concepts
SHAP Values
Definition: SHAP values quantify each feature's contribution to a prediction, measured as the deviation from the expected model output (baseline).
Properties:
- •Additivity: SHAP values sum to difference between prediction and baseline
- •Fairness: Based on Shapley values from game theory
- •Consistency: If a feature becomes more important, its SHAP value increases
Interpretation:
- •Positive SHAP value → Feature pushes prediction higher
- •Negative SHAP value → Feature pushes prediction lower
- •Magnitude → Strength of feature's impact
- •Sum of SHAP values → Total prediction change from baseline
Example:
Baseline (expected value): 0.30 Feature contributions (SHAP values): Age: +0.15 Income: +0.10 Education: -0.05 Final prediction: 0.30 + 0.15 + 0.10 - 0.05 = 0.50
Background Data / Baseline
Purpose: Represents "typical" input to establish baseline expectations
Selection:
- •Random sample from training data (50-1000 samples)
- •Or use kmeans to select representative samples
- •For DeepExplainer/KernelExplainer: 100-1000 samples balances accuracy and speed
Impact: Baseline affects SHAP value magnitudes but not relative importance
Model Output Types
Critical Consideration: Understand what your model outputs
- •Raw output: For regression or tree margins
- •Probability: For classification probability
- •Log-odds: For logistic regression (before sigmoid)
Example: XGBoost classifiers explain margin output (log-odds) by default. To explain probabilities, use model_output="probability" in TreeExplainer.
Reference Documentation
This skill includes comprehensive reference documentation organized by topic:
references/explainers.md
Complete guide to all explainer classes:
- •
TreeExplainer- Fast, exact explanations for tree-based models - •
DeepExplainer- Deep learning models (TensorFlow, PyTorch) - •
KernelExplainer- Model-agnostic (works with any model) - •
LinearExplainer- Fast explanations for linear models - •
GradientExplainer- Gradient-based for neural networks - •
PermutationExplainer- Exact but slow for any model
Includes: Constructor parameters, methods, supported models, when to use, examples, performance considerations.
references/plots.md
Comprehensive visualization guide:
- •Waterfall plots - Individual prediction breakdowns
- •Beeswarm plots - Global importance with value distributions
- •Bar plots - Clean feature importance summaries
- •Scatter plots - Feature-prediction relationships and interactions
- •Force plots - Interactive additive force visualizations
- •Heatmap plots - Multi-sample comparison grids
- •Violin plots - Distribution-focused alternatives
- •Decision plots - Multiclass prediction paths
Includes: Parameters, use cases, examples, best practices, plot selection guide.
references/workflows.md
Detailed workflows and best practices:
- •Basic model explanation workflow
- •Model debugging and validation
- •Feature engineering guidance
- •Model comparison and selection
- •Fairness and bias analysis
- •Deep learning model explanation
- •Production deployment
- •Time series model explanation
- •Common pitfalls and solutions
- •Advanced techniques
- •MLOps integration
Includes: Step-by-step instructions, code examples, decision criteria, troubleshooting.
references/theory.md
Theoretical foundations:
- •Shapley values from game theory
- •Mathematical formulas and properties
- •Connection to other explanation methods (LIME, DeepLIFT, etc.)
- •SHAP computation algorithms (Tree SHAP, Kernel SHAP, etc.)
- •Conditional expectations and baseline selection
- •Interpreting SHAP values
- •Interaction values
- •Theoretical limitations and considerations
Includes: Mathematical foundations, proofs, comparisons, advanced topics.
Usage Guidelines
When to load reference files:
- •Load
explainers.mdwhen user needs detailed information about specific explainer types or parameters - •Load
plots.mdwhen user needs detailed visualization guidance or exploring plot options - •Load
workflows.mdwhen user has complex multi-step tasks (debugging, fairness analysis, production deployment) - •Load
theory.mdwhen user asks about theoretical foundations, Shapley values, or mathematical details
Default approach (without loading references):
- •Use this SKILL.md for basic explanations and quick start
- •Provide standard workflows and common patterns
- •Reference files are available if more detail is needed
Loading references:
# To load reference files, use the Read tool with appropriate file path: # /path/to/shap/references/explainers.md # /path/to/shap/references/plots.md # /path/to/shap/references/workflows.md # /path/to/shap/references/theory.md
Best Practices Summary
- •
Choose the right explainer: Use specialized explainers (TreeExplainer, DeepExplainer, LinearExplainer) when possible; avoid KernelExplainer unless necessary
- •
Start global, then go local: Begin with beeswarm/bar plots for overall understanding, then dive into waterfall/scatter plots for details
- •
Use multiple visualizations: Different plots reveal different insights; combine global (beeswarm) + local (waterfall) + relationship (scatter) views
- •
Select appropriate background data: Use 50-1000 representative samples from training data
- •
Understand model output units: Know whether explaining probabilities, log-odds, or raw outputs
- •
Validate with domain knowledge: SHAP shows model behavior; use domain expertise to interpret and validate
- •
Optimize for performance: Sample subsets for visualization, batch for large datasets, cache explainers in production
- •
Check for data leakage: Unexpectedly high feature importance may indicate data quality issues
- •
Consider feature correlations: Use TreeExplainer's correlation-aware options or feature clustering for redundant features
- •
Remember SHAP shows association, not causation: Use domain knowledge for causal interpretation
Installation
# Basic installation uv pip install shap # With visualization dependencies uv pip install shap matplotlib # Latest version uv pip install -U shap
Dependencies: numpy, pandas, scikit-learn, matplotlib, scipy
Optional: xgboost, lightgbm, tensorflow, torch (depending on model types)
Additional Resources
- •Official Documentation: https://shap.readthedocs.io/
- •GitHub Repository: https://github.com/slundberg/shap
- •Original Paper: Lundberg & Lee (2017) - "A Unified Approach to Interpreting Model Predictions"
- •Nature MI Paper: Lundberg et al. (2020) - "From local explanations to global understanding with explainable AI for trees"
This skill provides comprehensive coverage of SHAP for model interpretability across all use cases and model types.