shap 库深度解释器的背景数据集的用途?

问题描述 投票:0回答:2

当我遇到以下代码块时,我正在学习使用 SHAP 进行深度学习模型解释的教程:

# select backgroud for shap
background = x_train[np.random.choice(x_train.shape[0], 1000, replace=False)]

# DeepExplainer to explain predictions of the model
explainer = shap.DeepExplainer(model, background)

# compute shap values
shap_values = explainer.shap_values(x_test_each_class)

这个背景数据集的用途是什么?

python deep-learning shap
2个回答
0
投票

为了获得 SHAP 值,我们需要计算两个期望之间的差异(参考。https://arxiv.org/pdf/1705.07874.pdf - 方程(8)和(9))。

我们无法通过分析方式计算这些期望,因此使用蒙特卡罗估计。背景数据集用于生成用于计算这些估计值的样本。

当然,如果背景数据集发生变化,估计也会发生变化,因此 SHAP 值也会发生变化。


0
投票

考虑一个涉及四个特征的场景:A、B、C 和 D。

对于个体i,其特征值分别为4、6、7、-1。

在计算 C 特征的“平均边际贡献”时,将其引入个体 i 的特征 A 和 B 的组合(计算 Shapley 值的关键步骤)时,采用以下过程:

  1. 维持个体“i”的固定特征A、B和C的值(A = 4,B = 6,C = 7)。

  2. 创建一个人工个体j,其A和B的值与个体i相等。

  3. 随机选择一个

    donor

  4. 利用特征 D 的

    donor
    的值作为个体 i 和 j 的特征 D 的值(例如
    donor
    的 D 值为 3)。

  5. 使用特征 C 的

    donor
    值作为个体 j 的特征 C 值(例如,
    donor
    的 C 值为 9)。

最终,计算以下之间的差异:

a.对于个体“i”:f(A = 4, B = 5, C = 7, D = 3)

b.对于个体“j”:f(A = 4, B = 5, C = 9, D = 3)

迭代重复步骤 2 到 5。这个迭代过程有效地减轻了特征 D 的影响,允许在假设 A = 4 和 B = 5 的情况下确定特征 C 的孤立影响。

这些

donors
是从背景分布中随机抽取的。

© www.soinside.com 2019 - 2024. All rights reserved.