一、概念
SHAP(Shapley Additive Explanations)是一种基于博弈论的模型可解释性方法,旨在量化每个特征对模型预测的贡献。核心思想源自Shapley值(Shapley Value),由诺贝尔经济学奖得主Lloyd Shapley在合作博弈论中提出,用于公平分配多参与者合作产生的收益。SHAP可以为模型预测提供直观、一致的解释,说明每个特征如何影响最终输出(例如分类概率或回归值)。
二、原理
SHAP基于Shapley值,通过量化每个特征对模型预测的边际贡献,提供模型解释。所有特征的Shapley值之和等于模型预测值与基线值(通常是数据集的平均值)的差异。
1、Shapley值
在合作博弈中,多个参与者(特征)共同产生收益(模型预测值)。Shapley值通过以下公式公平分配每个参与者的贡献:
其中,F是特征集合,S是子集,f是模型预测函数。
三、python实现
import shap
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 加载数据并训练模型
X, y = load_iris(return_X_y=True)
model = RandomForestClassifier().fit(X, y)
explainer = shap.TreeExplainer(model) # 适用于树模型
shap_values = explainer.shap_values(X)
# 全局特征重要性
shap.summary_plot(shap_values, X, plot_type="bar")