我一直在使用 DeepExplainer (DE) 来获取我的 MLP 模型的近似 SHAP 值。我正在关注SHAP Python 库。
现在我想更多地了解 DE 背后的逻辑。从相关论文中,我不清楚如何获得 SHAP 值。我看到给出了一个背景样本集,并根据该数据计算了预期的模型输出,并使用当前模型的输出计算了差异。该差值是 SHAP 值的总和。但是,我不明白每个贡献是如何获得的?你能用简单的术语解释一下吗?
我一直在使用 DeepExplainer (DE) 来获取我的 MLP 模型的近似 SHAP 值。我正在关注SHAP Python 库。
现在我想更多地了解 DE 背后的逻辑。从相关论文中,我不清楚如何获得 SHAP 值。我看到给出了一个背景样本集,并根据该数据计算了预期的模型输出,并使用当前模型的输出计算了差异。该差值是 SHAP 值的总和。但是,我不明白每个贡献是如何获得的?你能用简单的术语解释一下吗?
从https://en.wikipedia.org/wiki/Shapley_value可以理解,使用通用公式很难直接计算 Shapley 值:
基本上是因为不包括 i 的联盟的数量随着复杂性的增加而增加,其中 n 是变量的数量。在使用 Monte-Carlo 技术(如https://christophm.github.io/interpretable-ml-book/中提到的)评估这个总和的方向上已经取得了一些进展,但这些计算仍然很密集。
在他们的文章(http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions)中,Lundberg 和 Lee 提出了两种新方法,依赖于 SHAP——(这些是 Shapley 值原始模型的条件期望函数):
至于究竟哪种方法用于 MLP,我不确切知道,但第二种方法似乎更合适(特定于模型,精确方法)。