哪个 Shap-Explainer 符合我的要求

Which Shap-Explainer fits my requirements

我创建了一个以 Keras 和 Tensorflow 作为后端的 CNN,我的数据由代表 EEG(脑电图)的 2D 图像组成-数据来自预处理 DEAP-Dataset

我考虑过使用 SHAP 作为模型解释器,但由于有几个形状解释器(内核、深度、线性、渐变...),我不确定哪一个最适合我的需要或者即使 SHAP 对我的情况也有帮助。 由于我的图像(尺寸:40x100x1,三维来自np.expand_dims,因为keras需要3D图像)没有颜色,SHAP甚至是一个相当大的方法吗?

我的数据集中一项的片段

[[[ 3.10000000e+01]
[ 3.00000000e+01]
[-1.14638321e-01]

[ 1.24121500e+02]
[ 3.11109855e+00]
[-1.93024874e-01]]
...
[[ 3.10000000e+01]
[ 3.00000000e+01]
[-6.61770462e-02]]]

从我的数据集中绘制上述项目

希望有人能帮助我或指出正确的方向,谢谢!

使用 SHAP 进行模型解释没有任何限制,因为它们的字面意思是

explain the output of any machine learning model

(与docs比较)

确实有几个核心解释器可用。但是它们针对不同类型的模型进行了优化。由于您的案例包含使用 TensorFlow 和 Keras 构建的 CNN 模型,您可能需要考虑将以下两个作为主要选项:

这两个核心解释器都旨在与深度学习模型一起使用,尤其是在 TensorFlow 和 Keras 中构建的模型。它们之间的区别在于它们如何在内部近似 SHAP 值(您可以通过遵循各自的 link 阅读有关底层方法的更多信息)。因此,他们很可能不会 return 完全相同的结果。但是,可以公平地假设不会有任何显着差异(尽管不能保证)。

虽然前两个是主要选项,但您可能仍想检查另一个 core explainers as well. For example, the KernelExplainer 是否可以用于任何模型,因此也可以作为深度学习模型的一个选项。但如前所述,前两者特别适用于深度学习模型,因此(可能)应该是首选。

由于您使用图片作为输入,您可能会发现 image_plot useful. Usage examples can be found on the GitHub repository you already linked to. You also do not need to worry about colors as they do not matter (see the DeepExplainer MNIST example)。