如何使用 SHAP 解释多类深度学习分类器?

Posted

技术标签:

【中文标题】如何使用 SHAP 解释多类深度学习分类器?【英文标题】:How to interpret multi-class deep learning classifier by using SHAP? 【发布时间】:2020-07-02 03:31:47 【问题描述】:

我在 IRIS 数据集上使用 Keras 训练了一个多类分类器。我想使用SHAP 来解释我的深度学习模型。我使用以下代码行,其中 model 是我经过训练的神经网络分类器,X1[train] 是我的训练输入,X1[test] 是我的测试输入:

import shap
explainer = shap.DeepExplainer(model, X1[train])
shap_values = explainer.shap_values(X1[test])

但是,我得到了这个错误(当我的 softmax 在二进制分类中有一个输出时我很好。当 softmax 有 超过 1 个输出时会出现问题):

ValueError: Unexpectedly found an instance of type `<class 'numpy.ndarray'>`. Expected a symbolic tensor instance.

During handling of the above exception, another exception occurred:
Layer sequential_96 was called with an input that isn't a symbolic tensor. Received type: <class 'numpy.ndarray'>. Full input:

如何解决这个问题并在多类深度学习分类器中获取单个类的 SHAP 值?

【问题讨论】:

【参考方案1】:

你是如何导入 keras 的?在执行from keras import... 时,我遇到了同样的问题,但更改为from tensorflow.keras import ... DeepExplainer 工作了

【讨论】:

以上是关于如何使用 SHAP 解释多类深度学习分类器?的主要内容,如果未能解决你的问题,请参考以下文章

用于分类/多类分类的梯度提升树的弱学习器

如何告诉 shap 树解释器和 shap 值计算器哪些变量是分类的?

计算机视觉与深度学习线性分类器

如何使多类分类的运行时间更快?

如何使用keras评估多类分类的结果?

使用深度学习防止在多类分类中过度拟合特定类