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)
- 判断此解释器是否能处理给定的模型。 - 这是一个抽象的静态方法,需要由每个子类实现。