SHAP (SHapley Additive exPlanations)

1) What it is

  • SHAP is a unified framework for explaining predictions of any machine learning model.
  • Based on Shapley values from cooperative game theory (Lloyd Shapley, 1953).
  • Idea: Treat each feature as a “player” in a game; the prediction is the “payout.”
  • SHAP assigns each feature a fair share of contribution to the prediction.

Each feature gets a number: how much it pushed the prediction up or down relative to the baseline.


2) Formula (conceptual)

For a prediction $\hat{y}$​:

$\hat{y} = \phi_0 + \sum_{i=1}^M \phi_i$

  • $\phi_0$​ = baseline value (average prediction if no features are known).
  • $\phi_i$​ = SHAP value for feature $i$ (contribution).

So the prediction is exactly decomposed into contributions from each feature.


3) Example

Model: Loan approval probability = 0.8

  • Baseline (population average) = 0.5
  • SHAP explanation:
    • Income = +0.2
    • Employment history = +0.1
    • Debt ratio = 0
    • Age = 0

$0.8 = 0.5 + 0.2 + 0.1$

Interpretation: Income and employment history raised approval probability.


4) Strengths of SHAP

Consistent: Fair allocation of feature contributions.
Local + Global: Explains individual predictions and overall feature importance.
Model-agnostic or model-specific: Works with tree models, deep nets, linear, etc.
Visualizations: Force plots, summary plots, dependence plots.


5) Visualization Examples

  • Force Plot: shows how each feature pushed a single prediction up/down.
  • Summary Plot: global view of feature impacts across dataset.
  • Dependence Plot: feature interaction effects.

6) Limitations

Computational cost: Exact Shapley values are exponential in features; SHAP uses approximations.
Interpretation risk: Explanations can be misused if not carefully contextualized.
Correlated features: Hard to disentangle their contributions fairly.


7) Python Example

import shap
import xgboost as xgb
from sklearn.datasets import load_boston

X, y = load_boston(return_X_y=True)
model = xgb.XGBRegressor().fit(X, y)

explainer = shap.Explainer(model, X)
shap_values = explainer(X)

# Summary plot (global feature importance)
shap.summary_plot(shap_values, X)

# Force plot (local explanation for 1 instance)
shap.force_plot(explainer.expected_value, shap_values[0], X[0])

Summary

  • SHAP = explanation method based on Shapley values.
  • Fairly attributes contributions of features to predictions.
  • Useful for both local (instance-level) and global (dataset-level) interpretability.
  • Strong theoretical foundation, widely adopted in ML pipelines.

Discover more from Insightful Data Lab

Subscribe to get the latest posts sent to your email.

Similar Posts

Questions, corrections, or additional insights?

This site uses Akismet to reduce spam. Learn how your comment data is processed.