一、优点
线性回归的系数越大并不意味着影响越强,shap是同一维度的;
XGBoost的对比是没有正负向;
ps:不会受到缺失值的影响
二、理论基础
博弈论:
ABC三人有每个人完成的效率 ,每两个人完成的效率(有交互作用),三个人一起完成something,应该怎么分配——加性的一种边际分配。
三、shap的应用
1、基础版——shap_values
explainer = shap.Explainer(model)
shap_values = explainer(X)
#也可以shap_values = explainer.shap_values(X) ,X训练集
在SHAP中进行模型解释需要先创建一个explainer,SHAP支持很多类型的explainer
deep:用于计算深度学习模型,基于DeepLIFT算法,支持TensorFlow / Keras。
gradient:用于深度学习模型,综合了SHAP、集成梯度、和SmoothGrad等思想,形成单一期望值方程,但速度比DeepExplainer慢,并且做出了不同的假设。 此方法基于Integrated Gradient归因方法,并支持TensorFlow / Keras / PyTorch。
kernel:模型无关,适用于任何模型
linear:适用于特征独立不相关的线性模型
tree:适用于树模型和基于树模型的集成算法,如XGBoost,LightGBM或CatBoost
shap.SamplingExplainer — SHAP latest documentation
print("shap维度:",shap_values.shape)
print("测试集维度:",X_train.shape)
#the same
训练集or测试集的X都可以。