MimicWrapper 类

包装解释器,它减少了使用解释模型包所需的函数调用次数。

初始化 MimicWrapper。

接受<< 2d ndarray :p aram explainable_model:用于解释黑盒模型的未初始化代理模型。

也称为学生模型。

继承
azureml._logging.chained_identity.ChainedIdentity
MimicWrapper

构造函数

MimicWrapper(workspace, model, explainable_model, explainer_kwargs=None, init_dataset=None, run=None, features=None, classes=None, model_task=ModelTask.Unknown, explain_subset=None, transformations=None, feature_maps=None, allow_all_transformations=None)

参数

名称 说明
workspace
必需

在其中定义了模型和数据集的工作区对象。

model
必需
str 或 <xref:<xref:model that implements sklearn.predict>()> 或 <xref:sklearn.predict_proba>() 或 <xref:<xref:pipeline function that accepts a 2d ndarray>>

注册到 MMS 的模型的模型 ID,或者要解释的常规机器学习模型或管道。 如果指定了模型,则必须实现 sklearn.predict() 或 sklearn.predict_proba()。 如果指定了管道,则必须包含一个接受 2d ndarray 的函数。

explainable_model
必需

用于解释黑盒模型的未初始化代理模型。 也称为学生模型。

explainer_kwargs

此处不会另行介绍与所选解释器一起使用的任何关键字参数。 在初始化基础解释器时,这些参数将作为 kwargs 传入。

默认值: None
init_dataset

用于初始化解释器的数据集 ID 或常规数据集(例如 x_train)。

默认值: None
run
Run

应与此解释关联的运行。

默认值: None
features

特征名称列表。

默认值: None
classes

作为字符串列表的类名。 类名的顺序应与模型输出的顺序相匹配。 仅在解释分类器时才是必需的。

默认值: None
model_task
str

用于指定模型是分类模型还是回归模型的可选参数。 在大多数情况下,可以根据输出的形状推理模型的类型,其中的分类器具有 predict_proba 方法并输出二维数组,而回归器具有 predict 方法并输出一维数组。

默认值: ModelTask.Unknown
explain_subset

特征索引列表。 如果指定,则 Azure 仅选择评估数据集中的特征子集进行解释,当特征数量较大并且你已经知道关注的特征集时,这可以加速解释过程。 该子集可以是模型摘要中的 top-k 特征。 设置了转换时不支持此参数。

默认值: None
transformations

一个 sklearn.compose.ColumnTransformer,或描述列名和转换器的元组列表。 当提供了转换时,解释属于转换之前的特征。 转换列表的格式与以下网页中所述的格式相同:https://github.com/scikit-learn-contrib/sklearn-pandas

如果使用的转换不在 interpret-community 包支持的 sklearn.preprocessing 转换列表中,则此参数不能将包含多个列的列表用作转换的输入。 可将以下 sklearn.preprocessing 转换与列列表一起使用,因为它们已经存在一对多或一对一的映射:Binarizer、KBinsDiscretizer、KernelCenterer、LabelEncoder、MaxAbsScaler、MinMaxScaler、Normalizer、OneHotEncoder、OrdinalEncoder、PowerTransformer、QuantileTransformer、RobustScaler、StandardScaler。

有效转换的示例:


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

由于无法解释为一对多映射,因此会引发错误的转换的示例:


   [
       (["col1", "col2"], my_own_transformer)
   ]

最后一个示例无效,因为 interpret-community 包无法确定 my_own_transformer 在提取列序列时是否提供多对多或一对多的映射。

应仅指定“transformations”或“feature_maps”中的一个参数来生成原始解释。 同时指定这两者将导致配置异常。

默认值: None
feature_maps

特征的列表从原始特征映射到生成的特征。 此参数可以是 numpy 数组或稀疏矩阵的列表,其中每个数组条目 (raw_index, generated_index) 是每个原始生成的特征对的权重。 其他项设置为零。 对于转换序列 [t1,t2,...,tn] 从原始特征生成生成的特征,特征映射的列表对应于按 t1、t2 等相同顺序生成的映射的原始映射。如果提供了从 t1 到 tn 的整体原始到生成特征的映射,则可以传递单个元素列表中的该特征映射。

应仅指定“transformations”或“feature_maps”中的一个参数来生成原始解释。 同时指定这两者将导致配置异常。

默认值: None
allow_all_transformations

是否允许多对多和多对一转换。

默认值: None
workspace
必需

在其中定义了模型和数据集的工作区对象。

model
必需
str 或 <xref:<xref:model that implements sklearn.predict>()> 或 <xref:sklearn.predict_proba>() 或 <xref:<xref:pipeline function>>

注册到 MMS 的模型的模型 ID,或者要解释的常规机器学习模型或管道。 如果指定了模型,则必须实现 sklearn.predict() 或 sklearn.predict_proba()。 如果指定了管道,则必须包含一个接受 2d ndarray 的函数。

explainer_kwargs
必需

此处不会另行介绍与所选解释器一起使用的任何关键字参数。 在初始化基础解释器时,这些参数将作为 kwargs 传入。

init_dataset
必需

用于初始化解释器 (的数据集 ID 或常规数据集,例如x_train) 。

run
必需
Run

应与此解释关联的运行。

features
必需

特征名称列表。

classes
必需

作为字符串列表的类名。 类名的顺序应与模型输出的顺序相匹配。 仅在解释分类器时才是必需的。

model_task
必需
str

用于指定模型是分类模型还是回归模型的可选参数。 在大多数情况下,可以根据输出的形状推理模型的类型,其中的分类器具有 predict_proba 方法并输出二维数组,而回归器具有 predict 方法并输出一维数组。

explain_subset
必需

功能索引列表。 如果指定,则仅选择评估数据集中的一部分特征进行解释,这将在特征数量较大且用户已知道感兴趣的特征集时加快解释过程。 该子集可以是模型摘要中的 top-k 特征。 设置转换时不支持此参数。

transformations
必需

一个 sklearn.compose.ColumnTransformer,或描述列名和转换器的元组列表。 当提供了转换时,解释属于转换之前的特征。 转换列表的格式与以下网页中所述的格式相同:https://github.com/scikit-learn-contrib/sklearn-pandas

如果使用的转换不在 interpret-community 包支持的 sklearn.preprocessing 转换列表中,则此参数不能将包含多个列的列表用作转换的输入。 可将以下 sklearn.preprocessing 转换与列列表一起使用,因为它们已经存在一对多或一对一的映射:Binarizer、KBinsDiscretizer、KernelCenterer、LabelEncoder、MaxAbsScaler、MinMaxScaler、Normalizer、OneHotEncoder、OrdinalEncoder、PowerTransformer、QuantileTransformer、RobustScaler、StandardScaler。

有效转换的示例:


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

由于无法解释为一对多映射,因此会引发错误的转换的示例:


   [
       (["col1", "col2"], my_own_transformer)
   ]

最后一个示例无效,因为 interpret-community 包无法确定 my_own_transformer 在提取列序列时是否提供多对多或一对多的映射。

应仅指定“transformations”或“feature_maps”中的一个参数来生成原始解释。 同时指定这两者将导致配置异常。

feature_maps
必需
list[array] 或 list[csr_matrix] <xref::param allow_all_transformations: Whether to allow many to many and many to one transformations.>

特征的列表从原始特征映射到生成的特征。 此参数可以是 numpy 数组或稀疏矩阵的列表,其中每个数组条目 (raw_index, generated_index) 是每个原始生成的特征对的权重。 其他项设置为零。 对于转换序列 [t1,t2,...,tn] 从原始特征生成生成的特征,特征映射的列表对应于按 t1、t2 等相同顺序生成的映射的原始映射。如果提供了从 t1 到 tn 的整体原始到生成特征的映射,则可以传递单个元素列表中的该特征映射。

应仅指定“transformations”或“feature_maps”中的一个参数来生成原始解释。 同时指定这两者将导致配置异常。

注解

MimicWrapper 可用于解释机器学习模型,与 AutoML 结合使用时特别有作用。 例如,借助 <xref:azureml.train.automl.runtime.automl_explain_utilities> 模块中的 automl_setup_model_explanations 函数,可以使用 MimicWrapper 来计算和可视化特征重要性。 有关详细信息,请参阅可解释性:自动化机器学习中的模型说明

在以下示例中,MimicWrapper 用于分类问题。


   from azureml.interpret.mimic_wrapper import MimicWrapper
   explainer = MimicWrapper(ws, automl_explainer_setup_obj.automl_estimator,
                explainable_model=automl_explainer_setup_obj.surrogate_model,
                init_dataset=automl_explainer_setup_obj.X_transform, run=automl_run,
                features=automl_explainer_setup_obj.engineered_feature_names,
                feature_maps=[automl_explainer_setup_obj.feature_map],
                classes=automl_explainer_setup_obj.classes,
                explainer_kwargs=automl_explainer_setup_obj.surrogate_model_params)

有关此示例的详细信息,请参阅此笔记本

方法

explain

解释模型的行为,并选择性地上传该解释以进行存储和可视化。

explain

解释模型的行为,并选择性地上传该解释以进行存储和可视化。

explain(explanation_types, eval_dataset=None, top_k=None, upload=True, upload_datasets=False, tag='', get_raw=False, raw_feature_names=None, experiment_name='explain_model', raw_eval_dataset=None, true_ys=None)

参数

名称 说明
explanation_types
必需

表示所需解释类型的字符串列表。 目前支持“global”和“local”。 两者可以同时传入;只会返回一个解释。

eval_dataset

用于生成解释的数据集 ID 或常规数据集。

默认值: None
top_k
int

在可能的情况下,限制针对 top k 特征返回并存储在运行历史记录中的数据量。

默认值: None
upload

如果为 True,则自动将解释上传到运行历史记录以进行存储和可视化。 如果在初始化时未传入运行,则创建一个运行。

默认值: True
upload_datasets

如果设置为 True 且未传入任何数据集 ID,则将评估数据集上传到 Azure 存储。 这会改善 Web 视图中可用的可视化效果。

默认值: False
tag
必需
str

上传后附加到解释的字符串,以将该解释与其他解释区分开来。

get_raw

如果为 True 且在初始化期间传入了参数 feature_maps,则返回的解释将适用于原始特征。 如果为 False 或未指定,则解释将适用于与传入了该参数时完全相同的数据。

默认值: False
raw_feature_names

原始特征名称的列表,替换构造函数中的工程特征名称。

默认值: None
experiment_name
str

如果 upload 为 True 但在初始化期间未传入运行,则返回用于提供解释的所需名称

默认值: explain_model
raw_eval_dataset

要上传以进行原始解释的原始评估数据。

默认值: None
true_ys
list | <xref:pandas.Dataframe> | ndarray

评估示例的 true 标签。

默认值: None

返回

类型 说明

一个解释对象。

属性

explainer

获取包装器在内部使用的解释器。

返回

类型 说明

包装器在内部使用的解释器。