MimicWrapper 类
包装解释器,它减少了使用解释模型包所需的函数调用次数。
初始化 MimicWrapper。
接受<< 2d ndarray :p aram explainable_model:用于解释黑盒模型的未初始化代理模型。
也称为学生模型。
- 继承
-
azureml._logging.chained_identity.ChainedIdentityMimicWrapper
构造函数
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
|
应与此解释关联的运行。 默认值: None
|
features
|
特征名称列表。 默认值: None
|
classes
|
作为字符串列表的类名。 类名的顺序应与模型输出的顺序相匹配。 仅在解释分类器时才是必需的。 默认值: None
|
model_task
|
用于指定模型是分类模型还是回归模型的可选参数。 在大多数情况下,可以根据输出的形状推理模型的类型,其中的分类器具有 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。 有效转换的示例:
由于无法解释为一对多映射,因此会引发错误的转换的示例:
最后一个示例无效,因为 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
必需
|
应与此解释关联的运行。 |
features
必需
|
特征名称列表。 |
classes
必需
|
作为字符串列表的类名。 类名的顺序应与模型输出的顺序相匹配。 仅在解释分类器时才是必需的。 |
model_task
必需
|
用于指定模型是分类模型还是回归模型的可选参数。 在大多数情况下,可以根据输出的形状推理模型的类型,其中的分类器具有 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。 有效转换的示例:
由于无法解释为一对多映射,因此会引发错误的转换的示例:
最后一个示例无效,因为 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
|
在可能的情况下,限制针对 top k 特征返回并存储在运行历史记录中的数据量。 默认值: None
|
upload
|
如果为 True,则自动将解释上传到运行历史记录以进行存储和可视化。 如果在初始化时未传入运行,则创建一个运行。 默认值: True
|
upload_datasets
|
如果设置为 True 且未传入任何数据集 ID,则将评估数据集上传到 Azure 存储。 这会改善 Web 视图中可用的可视化效果。 默认值: False
|
tag
必需
|
上传后附加到解释的字符串,以将该解释与其他解释区分开来。 |
get_raw
|
如果为 True 且在初始化期间传入了参数 默认值: False
|
raw_feature_names
|
原始特征名称的列表,替换构造函数中的工程特征名称。 默认值: None
|
experiment_name
|
如果 默认值: explain_model
|
raw_eval_dataset
|
要上传以进行原始解释的原始评估数据。 默认值: None
|
true_ys
|
评估示例的 true 标签。 默认值: None
|
返回
类型 | 说明 |
---|---|
一个解释对象。 |