#使用SHAP进行神经网络模型的解释与其他回归模型(例如SVR,RF)调用有些不同,在此记录。详细学习SHAP可以访问SHAP官网#
SHAP安装
本人是在pycharm下使用SHAP,直接在终端进行pip安装就可以。pip install shap
使用SHAP进行神经网络模型解释
本人使用pytorch搭建的神经网络,假设训练好的模型为net,训练数据输入值为X,标签为target。
使用SHAP最终目的就是为了计算shap_values与基准值,首先要定义一解释器,神经网络要使用DeepExplainer解释器。定义好解释器后通过explainer.shap_values就可以得到每个变量的shap_values值。对于基准值可以使用explainer.expected_value获得。
解释神经网络预测模型就是这点与其他预测的不同,别的回归可以直接explainer(X)得到一个包含shap_values与expected_value的对象。而神经网络只能通过explainer.shap_values(X)获得一个narrary值。
通过下面代码可以输出整体shap图
import shap
explainer = shap.DeepExplainer(net, X)
shap_values = explainer.shap_values(X)
feature_names=['T','l','a','aT']
shap.summary_plot(shap_values, X,feature_names=feature_names)
shap_values与expected_value的意义
其中为explainer.expected_value,shap_values为
所以sum(shap_values[0])+explainer.expected_value与net(X[0])的数值相同
解释神经网络可以绘制哪些图
shap.bar_plot(shap_values=shap_values[1])