我最近了解了一个名为 Shapley Values 的神经网络可解释工具。 对于想知道的人,我训练了一个密集的神经网络(尽管也可以用 CNN 和 LSTM 来完成),然后使用以下几行:
background = X[np.random.choice(X.shape[0], 10000, replace=False)]
e = shap.DeepExplainer(model_trained, background)
shap_values = e.shap_values(background)
shap.summary_plot(shap_values[0], background, feature_names=cols_of_X, plot_type='dot',show=False)
问题是这仅适用于不包括批量归一化和leaky relus的模型。
我知道我可以使用
tf.keras.Model(inputs = model_trained.layers[0].input,outputs=model_trained.layers[1].output)
而不是 model_trained 但我只会看到第一层如何受输入特征的影响,而不是输出如何受输入特征的影响。
有没有办法克服这个问题,或者只是使用 Shapley 以外的其他东西?
谢谢!