

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 生产中模型的功能归属漂移
<a name="clarify-model-monitor-feature-attribution-drift"></a>

生产中模型的实时数据分布的偏移会导致特征归因值出现相应的偏移，就像监控偏差指标时可能导致偏差偏移一样。Ama SageMaker zon Clarify 功能归因监控可帮助数据科学家和机器学习工程师定期监控功能归因偏差的预测。在监控模型时，客户可以在 SageMaker Studio 中查看详细说明功能归因的可导出报告和图表，并在 Amazon 中配置提醒， CloudWatch 以便在检测到归因值偏离特定阈值时接收通知。

为了用具体情况来说明这一点，可以考虑一个大学录取假设情景。假设我们在训练数据和实时数据中观察到以下（汇总）特征归因值：

大学录取假设情景


| 功能 | 训练数据中的归因 | 实时数据中的归因 | 
| --- | --- | --- | 
| SAT 得分 | 0.70 | 0.10 | 
| GPA | 0.50 | 0.20 | 
| 班级排名 | 0.05 | 0.70 | 

从训练数据到实时数据的变化似乎很大。特征排名完全颠倒了。与偏差偏移类似，特征归因偏移可能由实时数据分布的变化引起，因此需要仔细研究实时数据的模型行为。同样，在这些场景中，第一步是发出警报，告知发生了偏移。

我们可以通过比较各个特征从训练数据到实时数据的排名变化来检测偏移。除了对排名顺序的变化保持敏感外，我们还希望对特征的原始归因得分保持敏感。例如，给定两个特征，它们从训练数据到实时数据的排名中下降的位置数相同，我们希望对训练数据中归因得分较高的特征更加敏感。考虑到这些属性，我们使用标准化折扣累积增益 (NDCG) 得分来比较训练数据和实时数据的特征归因排名。

具体来说，我们假设：
+ *F=[f1​,…,fm​] *是根据训练数据中的归因得分排序的特征列表，其中 *m* 是特征总数。例如，在我们的例子中，*F*=[SAT 得分, GPA, 班级排名]。
+ *a(f)* 是一个函数，它返回给定特征 *f* 的训练数据的特征归因得分。例如，*a*（SAT 得分）= 0.70。
+ *F′=[f′​1​, …, f′​m​] *是根据其在实时数据中的归因得分排序的特征列表。例如，*F*′=[班级排名, GPA, SAT 得分]。

然后，我们可以计算出 NDCG 为：

        NDCG=DCG/iDCG​

其中 
+ DCG = ∑1m*a*(*f'i*)/log2​(*i*\$11)
+ iDCG = ∑1m*a*(*fi*)/log2​(*i*\$11)

量 DCG 衡量的是训练数据中归因较高的特征在实时数据计算的特征归因中是否也排名靠前。量 iDCG 衡量的是*理想得分*，它只是一个归一化因子，用于确保最终量位于 [0, 1] 范围内，其中 1 是可能的最佳值。NDCG 值为 1 表示实时数据中的特征归因排名与训练数据中的特征归因排名相同。在这个具体示例中，由于排名变化很大，NDCG 值为 0.69。

在 Cl SageMaker arify 中，如果 NDCG 值低于 0.90，我们会自动发出警报。

## Model Monitor 示例笔记本
<a name="clarify-model-monitor-sample-notebooks-feature-drift"></a>

SageMaker Clarify 提供了以下示例笔记本，展示了如何捕获实时端点的推理数据、创建基线以监控不断变化的偏见，以及如何检查结果：
+ [监控偏见漂移和特征归因偏差 Amazon C SageMaker larif](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) y — 使用 Amazon SageMaker 模型监视器监控偏差和特征归因随时间推移而发生的偏差漂移。

此笔记本已经过验证，只能在 SageMaker Studio 中运行。如果您需要有关如何在 SageMaker Studio 中打开笔记本的说明，请参阅[创建或打开 Amazon SageMaker Studio 经典笔记本电脑](notebooks-create-open.md)。如果系统提示您选择内核，请选择 **Python 3 (Data Science)**。以下主题包含最后两个步骤的重点内容，并包含示例笔记本中的代码示例。

**Topics**
+ [Model Monitor 示例笔记本](#clarify-model-monitor-sample-notebooks-feature-drift)
+ [为生产中的模型创建 SHAP 基准](clarify-model-monitor-shap-baseline.md)
+ [模型特征归因偏移违规](clarify-model-monitor-model-attribution-drift-violations.md)
+ [监测归因漂移的参数](clarify-config-json-monitor-model-explainability-parameters.md)
+ [计划特征归因偏移监控作业](clarify-model-monitor-feature-attribute-drift-schedule.md)
+ [查看生产模型特征归因偏移报告](clarify-feature-attribute-drift-report.md)
+ [CloudWatch 特征偏差分析指标](clarify-feature-attribute-drift-cw.md)

# 为生产中的模型创建 SHAP 基准
<a name="clarify-model-monitor-shap-baseline"></a>

解释通常是对比性的，也就是说，它们解释了与基准的偏差。有关可解释性基准的信息，请参阅[SHAP 可解释性基准](clarify-feature-attribute-shap-baselines.md)。

除了为每个实例的推断提供解释外， SageMaker Clarify 还支持对机器学习模型进行全局解释，以帮助您从特征的角度了解整个模型的行为。 SageMaker Clarify 通过聚合多个实例上的 Shapley 值来生成机器学习模型的全局解释。 SageMaker Clarify 支持以下不同的聚合方式，您可以使用这些方式来定义基线：
+ `mean_abs` - 所有实例的绝对 SHAP 值的平均值。
+ `median` - 所有实例的 SHAP 值的中位数。
+ `mean_sq` - 所有实例的平方 SHAP 值的平均值。

将应用程序配置为捕获实时或批量转换推理数据后，监控特征归因偏移的第一项任务是创建基准以进行比较。这包括配置数据输入、哪些组是敏感组、如何捕获预测，以及模型及其训练后偏差指标。然后，您需要启动设定基准作业。模型可解释性监控器可以解释正在生成推理的已部署模型的预测，并定期检测特征归因偏移。

```
model_explainability_monitor = ModelExplainabilityMonitor(
    role=role,
    sagemaker_session=sagemaker_session,
    max_runtime_in_seconds=1800,
)
```

在本例中，可解释性基准作业与偏差基准作业共享测试数据集，因此它使用相同的 `DataConfig`，唯一的区别是作业输出 URI。

```
model_explainability_baselining_job_result_uri = f"{baseline_results_uri}/model_explainability"
model_explainability_data_config = DataConfig(
    s3_data_input_path=validation_dataset,
    s3_output_path=model_explainability_baselining_job_result_uri,
    label=label_header,
    headers=all_headers,
    dataset_type=dataset_type,
)
```

目前，C SageMaker larify 解释器提供了 SHAP 的可扩展且高效的实现，因此可解释性配置为 SHAPConfig，包括以下内容：
+ `baseline` - Kernel SHAP 算法中用作基准数据集的行（至少一行）列表或 S3 对象 URI。其格式应与数据集格式相同。每行应仅包含要素 columns/values 并省略标签列/值。
+ `num_samples` - 要在 Kernel SHAP 算法中使用的样本数。该数字决定了生成的用于计算 SHAP 值的合成数据集的大小。
+ agg\$1method – 全局 SHAP 值的聚合方法。有效值如下所示：
  + `mean_abs` - 所有实例的绝对 SHAP 值的平均值。
  + `median` - 所有实例的 SHAP 值的中位数。
  + `mean_sq` - 所有实例的平方 SHAP 值的平均值。
+ `use_logit` - 指示是否将 logit 函数应用于模型预测。默认值为 `False`。如果 `use_logit` 为 `True`，SHAP 值将具有对数几率单位。
+ `save_local_shap_values` (bool) - 指示是否将局部 SHAP 值保存在输出位置。默认值为 `False`。

```
# Here use the mean value of test dataset as SHAP baseline
test_dataframe = pd.read_csv(test_dataset, header=None)
shap_baseline = [list(test_dataframe.mean())]

shap_config = SHAPConfig(
    baseline=shap_baseline,
    num_samples=100,
    agg_method="mean_abs",
    save_local_shap_values=False,
)
```

启动设定基准作业。需要相同的 `model_config`，因为可解释性设定基准作业需要创建一个影子端点，以获取生成的合成数据集的预测。

```
model_explainability_monitor.suggest_baseline(
    data_config=model_explainability_data_config,
    model_config=model_config,
    explainability_config=shap_config,
)
print(f"ModelExplainabilityMonitor baselining job: {model_explainability_monitor.latest_baselining_job_name}")
```

# 模型特征归因偏移违规
<a name="clarify-model-monitor-model-attribution-drift-violations"></a>

特征归因偏移作业根据当前 `MonitoringExecution` 的分析结果评估[基准配置](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html#sagemaker-CreateModelExplainabilityJobDefinition-request-ModelExplainabilityBaselineConfig)提供的基准约束。如果检测到违规行为，则该作业会将其列在执行输出位置的 *constraint\$1violations.json* 文件中，并将执行状态标记为 [解释结果](model-monitor-interpreting-results.md)。

以下是特征归因偏移违规文件的架构。
+ `label` - 标签名称、作业分析配置 `label_headers` 或占位符（如 `"label0"`）。
+ `metric_name` - 可解释性分析方法的名称。目前仅支持 `shap`。
+ `constraint_check_type` - 监控的违规类型。目前仅支持 `feature_attribution_drift_check`。
+ `description` - 解释违规行为的描述性消息。

```
{
    "version": "1.0",
    "violations": [{
        "label": "string",
        "metric_name": "string",
        "constraint_check_type": "string",
        "description": "string"
    }]
}
```

对于 `explanations` 部分中的每个标签，监控作业在基准约束文件和作业分析结果文件 (*analysis.json*) 中计算其全局 SHAP 值的 [nDCG 得分](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ndcg_score.html)。如果得分低于 0.9，则会记录违规行为。将求出组合的全局 SHAP 值，因此违规条目中没有 `“feature”` 字段。以下输出提供了一个示例，介绍了几个记录的违规行为。

```
{
    "version": "1.0",
    "violations": [{
        "label": "label0",
        "metric_name": "shap",
        "constraint_check_type": "feature_attribution_drift_check",
        "description": "Feature attribution drift 0.7639720923277322 exceeds threshold 0.9"
    }, {
        "label": "label1",
        "metric_name": "shap",
        "constraint_check_type": "feature_attribution_drift_check",
        "description": "Feature attribution drift 0.7323763972092327 exceeds threshold 0.9"
    }]
}
```

# 监测归因漂移的参数
<a name="clarify-config-json-monitor-model-explainability-parameters"></a>

Ama SageMaker zon Clarify 可解释性监控器会重复使用分析配置中使用的参数子集。[分析配置文件](clarify-processing-job-configure-analysis.md)必须在 JSON 文件中提供以下参数，并且必须在 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification) 的 `ConfigUri` 参数中提供路径。
+ `"version"` -（可选）配置文件的架构版本。如果未提供，则使用支持的最新版本。
+ `"headers"` -（可选）数据集中的特征名称列表。可解释性分析不需要标签。
+ `"methods"` - 用于分析和报告的方法及其参数的列表。如果省略了任何部分，则不对其进行计算。
  + `"shap"` -（可选）SHAP 值计算部分。
    + `"baseline"` -（可选）行（至少一行）列表，或 Amazon Simple Storage Service Amazon S3 对象 URI。在 Kernel SHAP 算法中用作基准数据集（也称为背景数据集）。其格式应与数据集格式相同。每行应仅包含特征列（或值）。将每行发送到模型之前，请省略任何必须排除的列。
    + `"num_samples"` - 要在 Kernel SHAP 算法中使用的样本数。该数字决定了生成的用于计算 SHAP 值的合成数据集的大小。如果未提供，则 Cl SageMaker arify 作业会根据要素数量选择值。
    + `"agg_method"` - 全局 SHAP 值的聚合方法。有效值如下所示：
      + `"mean_abs"` - 所有实例的绝对 SHAP 值的平均值。
      + `"median"` - 所有实例的 SHAP 值的中位数。
      + `"mean_sq"` - 所有实例的平方 SHAP 值的平均值。
    + `"use_logit"` -（可选）布尔值，用于指示是否要对模型预测应用 logit 函数。如果 `"use_logit"` 为 `true`，则 SHAP 值具有对数几率单位。默认值为 `false`。
    + `"save_local_shap_values"` -（可选）布尔值，用于指示是否要将局部 SHAP 值保存在输出位置。使用 `true` 保存它们。使用 `false` 不保存它们。默认值为 `false`。
+ `"predictor"` -（对于实时端点为可选，对于批量转换为必选）模型参数部分，如果存在 `"shap"` 和 `"post_training_bias"` 部分，则为必选。
  + `"model_name"` - 由 `CreateModel` API 创建的模型名称，容器模式为 `SingleModel`。
  + `"instance_type"` - 影子端点的实例类型。
  + `"initial_instance_count"` - 影子端点的实例计数。
  + `"content_type"` -（可选）用于获取影子端点推理的模型输入格式。有效值为 `"text/csv"`（对于 CSV）、`"application/jsonlines"`（对于 JSON 行）、`application/x-parquet`（对于 Apache Parquet）以及 `application/x-image`（启用计算机视觉可解释性）。默认值与 `dataset_type` 格式相同。
  + `"accept_type"` -（可选）用于获取影子端点推理的模型*输出* 格式。有效值为 `"text/csv"`（对于 CSV）和 `"application/jsonlines"`（对于 JSON 行）。如果省略， SageMaker Clarify 将使用捕获数据的响应数据类型。
  + `"content_template"` -（可选）模板字符串，用于从数据集实例构造模型输入。仅当 `"content_type"` 为 `"application/jsonlines"` 时才使用。模板应只有一个占位符（即 `$features`），该占位符将在运行时被特征列表替换。例如，给定 `"content_template":"{\"myfeatures\":$features}"`，如果一个实例（无标签）是 `1,2,3`，则模型输入将变为 JSON 行`'{"myfeatures":[1,2,3]}'`。
  + `"label_headers"` -（可选）`"label"` 在数据集中的取值列表。将模型端点或批量转换作业返回的得分与其相应的标签值进行关联。如果提供，则分析报告将使用标题而不是 `“label0”` 之类的占位符。

其他参数应在 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput) API 的 `EndpointInput`（对于实时端点）或 `BatchTransformInput`（对于批量转换作业）中提供。
+ `FeaturesAttribute` - 如果端点或批处理作业的输入数据格式为 `"application/jsonlines"`，则必须使用此参数。如果数据集格式为 JSON 线，则它 JMESPath用于定位特征列。
+ `ProbabilityAttribute`— 概率在模型输出中的索引或 JMESPath 位置。例如，如果模型输出是带有标签和概率列表的 JSON 行，则会选择与最大概率对应的标签进行偏差计算。

## CSV 和 JSON 行数据集的 JSON 配置文件示例
<a name="clarify-config-json-monitor-model-explainability-parameters-examples"></a>

以下是用于配置 CSV 和 JSON 行数据集以监控它们的特征归因偏移的 JSON 文件示例。

**Topics**
+ [CSV 数据集](#clarify-config-json-monitor-model-explainability-parameters-example-csv)
+ [JSON 行数据集](#clarify-config-json-monitor-model-explainability-parameters-example-jsonlines)

### CSV 数据集
<a name="clarify-config-json-monitor-model-explainability-parameters-example-csv"></a>

考虑一个包含三个数值特征列的数据集，如以下示例所示。

```
0.5814568701544718, 0.6651538910132964, 0.3138080342665499
0.6711642728531724, 0.7466687034026017, 0.1215477472819713
0.0453256543003371, 0.6377430803264152, 0.3558625219713576
0.4785191813363956, 0.0265841045263860, 0.0376935084990697
```

假设模型输出有两列，其中第一列是预测标签，第二列是概率，如下例所示。

```
1, 0.5385257417814224
```

以下示例 JSON 配置文件说明了如何配置此 CSV 数据集。

```
{
                    
    "headers": [
        "feature_1",
        "feature_2",
        "feature_3"
    ],
    "methods": {
        "shap": {
            "baseline": [
                [0.4441164946610942, 0.5190374448171748, 0.20722795300473712]
            ],
            "num_samples": 100,
            "agg_method": "mean_abs"
        }
    },
    "predictor": {
        "model_name": "my_model",
        "instance_type": "ml.m5.xlarge",
        "initial_instance_count": 1
    }
}
```

预测标签由 `"ProbabilityAttribute"` 参数选择。使用从零开始的编号，因此 1 表示模型输出的第二列。

```
"EndpointInput": {
    ...
    "ProbabilityAttribute": 1
    ...
}
```

### JSON 行数据集
<a name="clarify-config-json-monitor-model-explainability-parameters-example-jsonlines"></a>

考虑一个包含四个特征列和一个标签列的数据集，其中第一个特征和标签为二进制，如下例所示。

```
{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0}
{"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1}
{"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1}
{"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}
```

模型输入与数据集格式相同，模型输出为 JSON 行，如下例所示。

```
{"predicted_label":1, "probability":0.5385257417814224}
```

在以下示例中，JSON 配置文件说明了如何配置此 JSON 行数据集。

```
{
    "headers": [
        "feature_1",
        "feature_2",
        "feature_3"
    ],
    "methods": {
        "shap": {
            "baseline": [
                {"features":[0.4441164946610942, 0.5190374448171748, 0.20722795300473712]}
            ],
            "num_samples": 100,
            "agg_method": "mean_abs"
        }
    },
    "predictor": {
        "model_name": "my_model",
        "instance_type": "ml.m5.xlarge",
        "initial_instance_count": 1,
        "content_template":"{\"features\":$features}"
    }
}
```

然后，使用 `EndpointInput`（对于实时端点）或 `BatchTransformInput`（对于批量转换作业）中的 `"features"` 参数值来定位数据集中的特征，`"probability"` 参数值从模型输出中选择概率值。

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "ProbabilityAttribute": "probability",
    ...
}
```

# 计划特征归因偏移监控作业
<a name="clarify-model-monitor-feature-attribute-drift-schedule"></a>

创建 SHAP 基准后，您可以调用 `ModelExplainabilityMonitor` 类实例的 `create_monitoring_schedule()` 方法来计划每小时一次的模型可解释性监控。以下几节介绍如何为部署到实时端点的模型以及为批量转换作业创建模型可解释性监控。

**重要**  
创建监控计划时，您可以指定批量转换输入或端点输入，但不能同时指定两者。

如果已提交设定基准作业，则监控器会自动从基准作业中选取分析配置。但是，如果您跳过设定基准步骤，或者捕获数据集的性质与训练数据集不同，则必须提供分析配置。`ExplainabilityAnalysisConfig` 需要 `ModelConfig`，原因与设定基准作业需要它的原因相同。请注意，计算特征归因时只需要特征，因此您应排除 Ground Truth 标注。

## 对部署到实时端点的模型进行特征归因偏移监控
<a name="model-monitor-explain-quality-rt"></a>

要为实时端点计划模型可解释性监控，请将 `EndpointInput` 实例传递给 `ModelExplainabilityMonitor` 实例的 `endpoint_input` 参数，如以下代码示例所示：

```
from sagemaker.model_monitor import CronExpressionGenerator

model_exp_model_monitor = ModelExplainabilityMonitor(
   role=sagemaker.get_execution_role(),
   ... 
)

schedule = model_exp_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_exp_model_monitor.baseline_statistics(),
   constraints=model_exp_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
    )
)
```

## 对批量转换作业进行特征归因偏移监控
<a name="model-monitor-explain-quality-bt"></a>

要为批量转换作业计划模型可解释性监控，请将 `BatchTransformInput` 实例传递给 `ModelExplainabilityMonitor` 实例的 `batch_transform_input` 参数，如以下代码示例所示：

```
from sagemaker.model_monitor import CronExpressionGenerator

model_exp_model_monitor = ModelExplainabilityMonitor(
   role=sagemaker.get_execution_role(),
   ... 
)

schedule = model_exp_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_exp_model_monitor.baseline_statistics(),
   constraints=model_exp_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/data",
        model_name="batch-fraud-detection-model",
        input_manifests_s3_uri="s3://amzn-s3-demo-bucket/batch-fraud-detection/on-schedule-monitoring/in/",
        excludeFeatures="0",
   )
)
```

# 查看生产模型特征归因偏移报告
<a name="clarify-feature-attribute-drift-report"></a>

默认启动您设置的计划后，您需要等待其首次执行开始，然后停止该计划以避免产生费用。

要查看报告，请使用以下代码：

```
schedule_desc = model_explainability_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")
if execution_summary and execution_summary["MonitoringExecutionStatus"] in ["Completed", "CompletedWithViolations"]:
    last_model_explainability_monitor_execution = model_explainability_monitor.list_executions()[-1]
    last_model_explainability_monitor_execution_report_uri = last_model_explainability_monitor_execution.output.destination
    print(f'Report URI: {last_model_explainability_monitor_execution_report_uri}')
    last_model_explainability_monitor_execution_report_files = sorted(S3Downloader.list(last_model_explainability_monitor_execution_report_uri))
    print("Found Report Files:")
    print("\n ".join(last_model_explainability_monitor_execution_report_files))
else:
    last_model_explainability_monitor_execution = None
    print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
```

 如果与基准相比存在任何违规情况，则在此列出：

```
if last_model_explainability_monitor_execution:
    model_explainability_violations = last_model_explainability_monitor_execution.constraint_violations()
    if model_explainability_violations:
        print(model_explainability_violations.body_dict)
```

如果您的模型部署到实时端点，则可以在 SageMaker Studio 中查看分析结果和 CloudWatch 指标的可视化效果，方法是选择 Endpoints 选项卡，然后双击该**端点**。

# CloudWatch 特征偏差分析指标
<a name="clarify-feature-attribute-drift-cw"></a>

本指南显示了在 Clarify 中可用于要素属性漂移分析的 CloudWatch 指标及其 SageMaker 属性。特征归因偏移监控作业计算和发布两种类型的指标：
+ 每个特征的全局 SHAP 值。
**注意**  
此指标的名称将作业分析配置提供的特征名称附加到 `feature_`。例如，`feature_X` 是特征 `X` 的全局 SHAP 值。
+ 指标的 `ExpectedValue`。

这些指标将发布到以下 CloudWatch 命名空间：
+ 对于实时端点：`aws/sagemaker/Endpoints/explainability-metrics`
+ 对于批量转换作业：`aws/sagemaker/ModelMonitoring/explainability-metrics`

每个指标都具有以下属性：
+ `Endpoint`：受监控端点的名称（如果适用）。
+ `MonitoringSchedule`：监控作业的计划名称。
+ `ExplainabilityMethod`：用于计算 Shapley 值的方法。选择 `KernelShap`。
+ `Label`：作业分析配置 `label_headers` 提供的名称，或类似 `label0` 的占位符。
+ `ValueType`：指标返回的值的类型。选择 `GlobalShapValues` 或 `ExpectedValue`。

要阻止监控作业发布指标，请在[模型可解释性作业](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html)定义的 `Environment` 映射中将 `publish_cloudwatch_metrics` 设置为 `Disabled`。