LinearExplainer 背后的数学原理(基于相关性特征扰动)
当我们使用 LinearExplainer(model, prior, feature_perturbation="correlation_dependent")
时,我们不使用 \(E[f(x) \mid do(X_S = x_S)]\) 来衡量特征集 \(S\) 的影响,而是使用 \(E[f(x) \mid X_S = x_s]\),并假设随机变量 \(X\)(代表输入特征)服从多元高斯分布。为了以这种方式计算 SHAP 值,我们需要计算多元高斯分布下所有特征子集的条件期望。对于具有指数数量项的矩阵匹配来说,这将是巨大的计算量,因此对于具有少量特征以上的模型来说是难以处理的。
本文档简要概述了我们使用的数学方法,该方法使用抽样程序预先计算所有必需的线性代数,该抽样程序只需执行一次,然后可以应用于任意数量的样本。与暴力方法相比,这大大加快了计算速度。请注意,所有这些计算都依赖于我们正在解释线性模型 \(f(x) = \beta x\) 这一事实。
大多数解释器使用的介入形式的 SHAP 值的置换定义是
但在这里我们将使用非介入的条件期望形式(其中我们简化了符号,省略了对随机变量 \(X\) 的显式引用)。
其中 \(f(x) = \beta x + b\),\(\beta\) 是行向量,\(b\) 是标量。
如果我们用线性函数定义替换 f(x),我们得到
:nbsphinx-math:`begin{align} phi_i = frac{1}{M!} sum_R E[beta x + b mid x_{S_i^R cup i}] - E[beta x + b mid x_{S_i^R}] \
= beta frac{1}{M!} sum_R E[x mid x_{S_i^R cup i}] - E[x mid x_{S_i^R}]
end{align}`
假设输入 \(x\) 服从多元正态分布,均值为 \(\mu\),协方差为 \(\Sigma\)。将选择集合 \(S\) 的投影矩阵表示为 \(P_S\),那么我们得到
\begin{align} E[x \mid x_S] = [P_{\bar S} \mu + P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} ( P_S x - P_S \mu)] P_{\bar S} + x P_S^T P_S \\ = [P_{\bar S} \mu + P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S (x - \mu)] P_{\bar S} + x P_S^T P_S \\ = [\mu + \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S (x - \mu)] P_{\bar S}^T P_{\bar S} + x P_S^T P_S \\ = P_{\bar S}^T P_{\bar S} [\mu + \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S (x - \mu)] + P_S^T P_S x \\ = P_{\bar S}^T P_{\bar S} \mu + P_{\bar S}^T P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S x - P_{\bar S}^T P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S \mu + P_S^T P_S x \\ = [P_{\bar S}^T P_{\bar S} - P_{\bar S}^T P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S] \mu + [P_S^T P_S + P_{\bar S}^T P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S] x \end{align}
如果我们令 \(R_S = P_{\bar S}^T P_{\bar S} \Sigma P_S^T (P_S \Sigma P_S^T)^{-1} P_S\) 且 \(Q_S = P_S^T P_S\),那么我们可以写成
\begin{align} E[x \mid x_S] = [Q_{\bar S} - R_S] \mu + [Q_S + R_S] x \end{align}
或
\begin{align} E[x \mid x_{S_i^R \cup i}] = [Q_{\bar{S_i^R \cup i}} - R_{S_i^R \cup i}] \mu + [Q_{S_i^R \cup i} + R_{S_i^R \cup i}] x \end{align}
得出 Shapley 方程:
\begin{align} \phi_i = \beta \frac{1}{M!} \sum_R [Q_{\bar{S_i^R \cup i}} - R_{S_i^R \cup i}] \mu + [Q_{S_i^R \cup i} + R_{S_i^R \cup i}] x - [Q_{\bar{S_i^R}} - R_{S_i^R}] \mu - [Q_{S_i^R} + R_{S_i^R}] x \\ = \beta \frac{1}{M!} \sum_R ([Q_{\bar{S_i^R \cup i}} - R_{S_i^R \cup i}] - [Q_{\bar{S_i^R}} - R_{S_i^R}]) \mu + ([Q_{S_i^R \cup i} + R_{S_i^R \cup i}] - [Q_{S_i^R} + R_{S_i^R}]) x \\ = \beta \left [ \frac{1}{M!} \sum_R ([Q_{\bar{S_i^R \cup i}} - R_{S_i^R \cup i}] - [Q_{\bar{S_i^R}} - R_{S_i^R}]) \right ] \mu + \beta \left [ \frac{1}{M!} \sum_R ([Q_{S_i^R \cup i} + R_{S_i^R \cup i}] - [Q_{S_i^R} + R_{S_i^R}]) \right ] x \end{align}
这意味着我们可以通过多次抽取随机置换 \(R\) 并对结果求平均值来预先计算变换矩阵 \(T\)。一旦我们计算出 \(T\),我们就可以通过仅使用矩阵乘法来解释任意数量的样本(或模型)。