shap.PermutationExplainer

class shap.PermutationExplainer(model, masker, link=CPUDispatcher(<function identity>), feature_names=None, linearize_link=True, seed=None, **call_args)

该方法通过迭代输入特征的排列来近似计算 Shapley 值。

这是一个与模型无关的解释器,通过在正向和反向两个方向上(对偶采样)完整地迭代特征的整个排列,来保证局部准确性(可加性)。如果我们这样做一次,那么对于最多具有二阶交互效应的模型,我们将得到精确的 SHAP 值。我们可以通过多次随机排列来重复这个过程多次,从而为具有更高阶交互作用的模型获得更好的 SHAP 值估计。这种顺序排序的公式也使得模型评估结果可以轻松重用,并且当特征的背景值与当前输入值相同时,能够有效地避免评估模型。我们还可以考虑带有分区树的层次化数据结构,这一点目前在 KernalExplainer 或 SamplingExplainer 中尚未实现。

__init__(model, masker, link=CPUDispatcher(<function identity>), feature_names=None, linearize_link=True, seed=None, **call_args)

为给定的模型使用给定的掩码器(masker)对象构建一个 explainers.Permutation 对象。

参数:
model函数

一个可调用的 Python 对象,它接收一组输入数据样本并执行模型。

masker函数、numpy.array 或 pandas.DataFrame

一个可调用的 Python 对象,用于“掩盖”隐藏的特征,其形式为 masker(binary_mask, x)。它接受一个输入样本和一个二进制掩码,并返回一个被掩盖样本的矩阵。这些被掩盖的样本会使用模型函数进行评估,然后对输出进行平均。作为 SHAP 使用的标准掩码方法的快捷方式,您可以传递一个背景数据矩阵而不是一个函数,该矩阵将用于掩码。要使用聚类博弈结构,您可以传递一个 shap.maskers.Tabular(data, clustering="correlation") 对象。

seed: None 或 int

用于可复现性的种子

**call_args__call__ 方法的有效参数

这些参数被保存并传递给 __call__ 方法,作为这些参数的新默认值。

方法

__init__(model, masker[, link, ...])

为给定的模型使用给定的掩码器(masker)对象构建一个 explainers.Permutation 对象。

explain_row(*row_args, max_evals, ...)

解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes)。

load(in_file[, model_loader, masker_loader, ...])

从给定的文件流加载一个解释器。

save(out_file[, model_saver, masker_saver])

将解释器写入给定的文件流。

shap_values(X[, npermutations, ...])

用于估计一组样本的 SHAP 值的旧版接口。

supports_model_with_masker(model, masker)

判断此解释器是否能处理给定的模型。

explain_row(*row_args, max_evals, main_effects, error_bounds, batch_size, outputs, silent)

解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes)。

classmethod load(in_file, model_loader=None, masker_loader=None, instantiate=True)

从给定的文件流加载一个解释器。

参数:
in_file用于加载对象的文件流。
save(out_file, model_saver='.save', masker_saver='.save')

将解释器写入给定的文件流。

shap_values(X, npermutations=10, main_effects=False, error_bounds=False, batch_evals=True, silent=False)

用于估计一组样本的 SHAP 值的旧版接口。

参数:
Xnumpy.array 或 pandas.DataFrame 或任何 scipy.sparse 矩阵

一个样本矩阵(# 样本数 x # 特征数),用于解释模型的输出。

npermutations整数

遍历所有特征的循环次数,在每一步重新评估模型。每个循环会在一个包含(# 背景数据样本数)行的矩阵上,对模型函数进行 2 * (# 特征数 + 1) 次评估。一个例外情况是,当一个特征在 X 和背景数据集中的值相同时(例如对于稀疏特征来说很常见),PermutationExplainer 可以避免评估模型。

返回:
数组或列表

对于单输出模型,此函数返回一个 SHAP 值矩阵(# 样本数 x # 特征数)。每一行的总和等于该样本的模型输出与模型输出的期望值(存储在解释器的 expected_value 属性中)之间的差值。对于向量输出模型,此函数返回一个由这类矩阵组成的列表,每个输出对应一个矩阵。

static supports_model_with_masker(model, masker)

判断此解释器是否能处理给定的模型。

这是一个抽象的静态方法,需要由每个子类实现。