shap.explainers.other.Maple
- class shap.explainers.other.Maple(model, data)[源代码]
简单地将 MAPLE 封装到常见的 SHAP 接口中。
- 参数:
- 模型函数
用户提供的函数,该函数接受一个样本矩阵(# 样本数 x # 特征数)并计算这些样本的模型输出。输出可以是一个向量(# 样本数)或一个矩阵(# 样本数 x # 模型输出数)。
- 数据numpy.array
背景数据集。
- __init__(model, data)[源代码]
为传递的模型构建一个新的解释器。
- 参数:
- 模型对象或函数
用户提供的函数或模型对象,该对象接受样本数据集并计算模型对这些样本的输出。
- 掩码器函数, numpy.array, pandas.DataFrame, 分词器, None, 或每个模型输入的这些列表
用于“掩码”表单中隐藏特征的函数 masked_args = masker(*model_args, mask=mask)。它以与模型相同的格式接收输入,但对于仅包含二进制掩码的单个样本,然后返回掩码样本的可迭代对象。这些掩码样本随后将使用模型函数进行评估,并平均输出。作为SHAP标准掩码使用的快捷方式,您可以传递一个背景数据矩阵而不是函数,该矩阵将用于掩码。特定领域的掩码函数在shap中可用,例如用于图像的shap.ImageMasker和用于文本的shap.TokenMasker。除了确定如何替换隐藏特征外,掩码器还可以约束用于解释模型的合作游戏的规则。例如,shap.TabularMasker(data, hclustering=”correlation”) 将强制游戏的联盟进行层次聚类(在这种情况下,归因被称为Owen值)。
- 链接函数
链接函数用于在模型的输出单元和SHAP值单元之间进行映射。默认情况下,它是shap.links.identity,但shap.links.logit可能很有用,这样期望值以概率单位计算,而解释则保持在(更自然地可加的)对数几率单位。有关链接函数如何工作的更多详细信息,请参阅广义线性模型的链接函数概述。
- 算法“auto”, “permutation”, “partition”, “tree”, 或 “linear”
用于估计Shapley值的算法。有许多不同的算法可以用来估计Shapley值(以及受限游戏的相应值),每种算法都有不同的权衡,并且在不同情况下更可取。默认情况下,“auto”选项会根据传入的模型和掩码器尝试做出最佳选择,但这个选择总是可以通过传递特定算法的名称来覆盖。所使用的算法类型将决定此构造函数返回的子类对象类型,如果您更喜欢或需要对其选项进行更精细的控制,您也可以直接构建这些子类。
- 输出名称无或字符串列表
模型输出的名称。例如,如果模型是一个图像分类器,那么 output_names 将是所有输出类的名称。此参数是可选的。当 output_names 为 None 时,此解释器生成的 Explanation 对象将没有任何 output_names,这可能会影响下游图表。
- 种子: None 或 int
用于可重复性的种子
方法
__init__
(model, data)为传递的模型构建一个新的解释器。
attributions
(X[, multiply_by_input])计算 MAPLE 系数的归因。
explain_row
(*row_args, max_evals, ...)解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes, main_effects)。
load
(in_file[, model_loader, masker_loader, ...])从给定的文件流中加载一个解释器。
save
(out_file[, model_saver, masker_saver])将解释器写入给定的文件流。
supports_model_with_masker
(model, masker)确定此解释器是否可以处理给定的模型。
- attributions(X, multiply_by_input=False)[源代码]
计算 MAPLE 系数的归因。
- 参数:
- multiply_by_input布尔
如果为真,这将把学习到的系数乘以均值中心化的输入。这使得这些值大致可与SHAP值相比较。
- explain_row(*row_args, max_evals, main_effects, error_bounds, outputs, silent, **kwargs)
解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes, main_effects)。
这是一个抽象方法,旨在由每个子类实现。
- 返回:
- 元组
一个元组 (row_values, row_expected_values, row_mask_shapes),其中 row_values 是每个样本的归因值数组,row_expected_values 是表示模型对每个样本的预期值的数组(或单个值)(除非存在固定输入,如解释损失时的标签,否则所有样本的预期值相同),row_mask_shapes 是所有输入形状的列表(因为 row_values 总是被展平)。
- 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')
将解释器写入给定的文件流。
- static supports_model_with_masker(model, masker)
确定此解释器是否可以处理给定的模型。
这是一个抽象静态方法,旨在由每个子类实现。