如何在Tensorflow DNNClassifier中使用SHAP KernelExplainer

时间:2018-09-27 06:32:10

标签: python tensorflow

在使用SHAP处理TF固定模型时,遇到即时DNNClassifier的问题。 由于罐装DNNClassifier不支持预报,我可以在模型中使用什么参数?

explainer = shap.KernelExplainer(模型,数据,链接)

model:函数或iml.Model 用户提供的函数,它采用样本矩阵(#个样本x#个特征)并计算这些样本的模型输出。输出可以是向量(#个样本)或矩阵(#个样本x#个模型输出)。

classifier = tf.estimator.DNNClassifier(hidden_units=[1024, 512, 256],
                                        feature_columns=feature_columns,
                                        model_dir='/tmp/stack/All',
                                        n_classes=2,
                                        optimizer='Adagrad',
                                        config=tf.estimator.RunConfig().replace(save_summary_steps=2)
                                        )

predictions = classifier.predict(input_fn=lambda: eval_input_fn(test_x,
                                                                labels=None,
                                                                batch_size=400),
                                 predict_keys="probability")

explainer = shap.KernelExplainer(predictions, test_x)

简而言之,对shap.KernelExplainer模型参数的期望是什么?替换上面的“预测”是正确的事情。

1 个答案:

答案 0 :(得分:0)

我没有确切的答案,但是您是否看过作者提供的this notebook?最后一部分可能会帮助您:

```
# Here we take the Keras model trained above and explain why it makes different predictions 
# for different individuals. SHAP expects model functions to take a 2D numpy array 
# as input, so we define a wrapper function around the original Keras predict function.


def f(X):
    return regression.predict([X[:,i] for i in range(X.shape[1])]).flatten()

explainer = shap.KernelExplainer(f, X.iloc[:50,:])
```