shap.PartitionExplainer

class shap.PartitionExplainer(model, masker, *, output_names=None, link=CPUDispatcher(<function identity>), linearize_link=True, feature_names=None, **call_args)[源代码]

使用分区SHAP方法来解释任何函数的输出。

Partition SHAP 通过特征的层次结构递归计算Shapley值,这个层次结构定义了特征联盟,并产生了博弈论中的Owen值。

PartitionExplainer 有两个特别好的特性:

  1. PartitionExplainer 是与模型无关的,但当使用平衡分区树时,其精确运行时间仅为二次方(就输入特征的数量而言)。这与 KernelExplainer 或 SamplingExplainer 的指数精确运行时间形成对比。

  2. PartitionExplainer 总是将信用分配给相关特征的组,这些信用是如果将这些特征作为一个组处理时所应得的。这意味着,如果提供给 PartitionExplainer 的层次聚类将相关特征分组在一起,那么在解释的扰动过程中,特征的相关性在“考虑”的意义上得到了处理,即一组紧密依赖的特征所分配的总信用不依赖于它们在相关结构被破坏时的行为。

需要注意的是,对于线性模型,PartitionExplainer 返回的 Owen 值与标准的非层次 Shapley 值相同。

__init__(model, masker, *, output_names=None, link=CPUDispatcher(<function identity>), linearize_link=True, feature_names=None, **call_args)[源代码]

使用给定的掩码器为给定的模型构建一个 PartitionExplainer。

参数:
模型函数

用户提供的函数,该函数接受一个样本矩阵(# 样本 x # 特征)并计算这些样本的模型输出。

掩码器函数 或 numpy.array 或 pandas.DataFrame 或 分词器

用于“遮蔽”表单中隐藏特征的函数 masker(mask, x)。它接受一个输入样本和一个二进制掩码,并返回一个掩码样本矩阵。这些掩码样本将使用模型函数进行评估,并平均输出。作为SHAP标准遮蔽的快捷方式,您可以传递一个背景数据矩阵而不是函数,该矩阵将用于遮蔽。特定领域的遮蔽函数在shap中可用,例如用于图像的shap.maskers.Image和用于文本的shap.maskers.Text。

分区树None 或 函数 或 numpy.array

一个由矩阵表示的输入特征的层次聚类,遵循 scipy.cluster.hierarchy 使用的格式(参见 notebooks_html/partition_explainer 目录中的示例)。如果这是一个函数,那么当给定单个输入示例时,该函数会生成一个聚类矩阵。如果你使用的是标准的 SHAP 掩码器对象,那么你可以传递 masker.clustering 来使用该掩码器的内置特征聚类,或者如果 partition_tree 为 None,则默认使用 masker.clustering。

示例

参见 Partition explainer 示例

方法

__init__(model, masker, *[, output_names, ...])

使用给定的掩码器为给定的模型构建一个 PartitionExplainer。

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

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

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

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

owen(fm, f00, f11, max_evals, ...)

基于排序递归计算嵌套的递归Owen值集。

owen3(fm, f00, f11, max_evals, ...)

基于排序递归计算嵌套的递归Owen值集。

save(out_file[, model_saver, masker_saver])

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

supports_model_with_masker(model, masker)

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

explain_row(*row_args, max_evals, main_effects, error_bounds, batch_size, outputs, silent, fixed_context='auto')[源代码]

解释单行并返回元组 (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用于加载对象的文件流。
owen(fm, f00, f11, max_evals, output_indexes, fixed_context, batch_size, silent)[源代码]

基于排序递归计算嵌套的递归Owen值集。

owen3(fm, f00, f11, max_evals, output_indexes, fixed_context, batch_size, silent)[源代码]

基于排序递归计算嵌套的递归Owen值集。

save(out_file, model_saver='.save', masker_saver='.save')

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

static supports_model_with_masker(model, masker)

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

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