ser*_*lty 1 python conv-neural-network keras tensorflow shap
我创建了一个以 Keras 和 Tensorflow 作为后端的 CNN,我的数据由表示 EEG(脑电图)的 2D 图像组成,这些图像来自预处理的DEAP 数据集。
我曾考虑过使用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]]]
Run Code Online (Sandbox Code Playgroud)
从我的数据集中绘制上述项目
希望有人能帮助我或指出正确的方向,谢谢!
使用 SHAP 进行模型解释没有任何限制,因为它们的字面意思是
解释任何机器学习模型的输出
(与文档比较)
确实有几个可用的核心解释器。但它们针对不同类型的模型进行了优化。由于您的案例由使用 TensorFlow 和 Keras 构建的 CNN 模型组成,因此您可能需要考虑以下两个作为主要选项:
DeepExplainer:旨在近似深度学习模型的 SHAP 值。
GradientExplainer:解释使用预期梯度的模型(积分梯度的扩展)。
这两个核心解释器都旨在与深度学习模型一起使用,特别是在 TensorFlow 和 Keras 中内置的模型。它们之间的区别在于它们如何在内部近似 SHAP 值(您可以通过各自的链接阅读有关底层方法的更多信息)。因此,它们很可能不会返回完全相同的结果。然而,可以公平地假设不会有任何显着差异(尽管不能保证)。
虽然前两个是主要选项,但您可能仍然想检查其他核心解释器。例如,它KernelExplainer可以用于任何模型,因此也可以是深度学习模型的一个选项。但如前所述,前两者特别适用于深度学习模型,因此(可能)应该是首选。
由于您使用图片作为输入,因此您可能会发现它image_plot很有用。可以在您已链接到的 GitHub 存储库中找到用法示例。您也无需担心颜色,因为它们并不重要(请参阅DeepExplainer MNIST 示例)。
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |