我有一个 Keras 神经网络,它有 26 个特征和 100 个目标,我想用SHAP python 库来解释。例如,为了绘制力图,我这样做:
shap.force_plot(exp.expected_value[i], shap_values[j][k], x_val.columns)
在哪里:
exp.expected_values
是一个大小为 100 的列表,其中包含我的每个目标的基本值(这至少是我所理解的)。我假设该索引i
指的是第 i 个目标。shap_values
指每个验证案例中每个目标的所有特征的 Shapley 值。因此,j
从 0 运行到 99(即我的目标的大小)并k
从 0 运行到验证用例的总数。
我感到困惑的是,i
实际上j
可能有所不同,而且我确实得到了一个看起来不错的情节。但是,它们不应该总是相同的索引吗?不应该总是将第 i 个基线目标与第 i 个目标的形状值进行比较吗?我对索引的理解有误吗?