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)

使用给定的掩码器对象为给定模型构建 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, ...])

使用给定的掩码器对象为给定模型构建 explainers.Permutation 对象。

explain_row(*row_args, max_evals, ...])

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

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

从给定的文件流加载 Explainer。

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=<bound method Model.load of <class 'shap.models._model.Model'>>, masker_loader=<bound method Serializable.load of <class 'shap.maskers._masker.Masker'>>, instantiate=True)

从给定的文件流加载 Explainer。

参数:
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 # 特征),用于解释模型的输出。

npermutationsint

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

返回:
array 或 list

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

static supports_model_with_masker(model, masker)

确定此解释器是否可以处理给定的模型。

这是一个抽象静态方法,旨在由每个子类实现。