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 对象。
- 参数:
- 模型函数
一个可调用的Python对象,它在接受一组输入数据样本时执行模型。
- 掩码器函数 或 numpy.array 或 pandas.DataFrame
用于“掩盖”隐藏特征的可调用Python对象,形式为
masker(binary_mask, x)
。它接受一个输入样本和一个二进制掩码,并返回一个掩码样本矩阵。这些掩码样本通过模型函数进行评估,然后对输出进行平均。作为SHAP标准掩码使用的快捷方式,您可以传递一个背景数据矩阵而不是函数,该矩阵将用于掩码。要使用聚类游戏结构,您可以传递一个shap.maskers.Tabular(data, clustering="correlation")
对象。- 种子: None 或 int
可重复性的种子
- **调用参数
__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, ...])从给定的文件流中加载一个解释器。
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)
从给定的文件流中加载一个解释器。
- 参数:
- 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) 次。当 PermutationExplainer 可以避免评估模型时,这是一个例外,因为特征的值在 X 和背景数据集中是相同的(这在稀疏特征的情况下很常见)。
- 返回:
- 数组或列表
对于具有单一输出的模型,这将返回一个SHAP值矩阵(#样本 x #特征)。每一行的总和等于该样本的模型输出与模型输出的期望值(存储为解释器的expected_value属性)之间的差异。对于具有向量输出的模型,这将返回一个这样的矩阵列表,每个输出对应一个矩阵。
- static supports_model_with_masker(model, masker)
确定此解释器是否可以处理给定的模型。
这是一个抽象静态方法,旨在由每个子类实现。