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)
确定此解释器是否可以处理给定的模型。
这是一个抽象静态方法,旨在由每个子类实现。