配置参数以监控偏差偏移 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置参数以监控偏差偏移

Amazon SageMaker Clarify 偏差监控会重复使用配置分析的分析配置中使用的参数子集。介绍完配置参数后,本主题将提供 JSON 文件的示例。这些文件用于配置 CSV 和 JSON 行数据集,以便在机器学习模型投入生产时监控这些数据集的偏差偏移。

必须在 JSON 文件中提供以下参数。此 JSON 文件的路径必须在 ModelBiasAppSpecification API 的 ConfigUri 参数中提供。

  • "version" -(可选)配置文件的架构版本。如果未提供,则使用支持的最新版本。

  • "headers" -(可选)数据集中的列名称列表。如果 dataset_type"application/jsonlines" 且指定了 "label",则最后一个标题将成为标签列的标题。

  • "label" -(可选)用于偏差指标 的模型的目标属性。指定为列名称或索引(如果数据集格式为 CSV),或者指定为 JMESPath(如果数据集格式为 JSON 行)。

  • "label_values_or_threshold" -(可选)标签值或阈值列表。表示用于偏差指标的阳性结果。

  • "facet" -(可选)作为敏感属性的特征列表,称为分面。分面以成对的形式用于偏差指标,包括以下内容:

    • "name_or_index" - 分面列名称或索引。

    • "value_or_threshold" -(可选)分面列可以采用的值或阈值列表。表示敏感组,例如用于衡量偏差的组。如果未提供,则每个唯一值(而不是所有值)的偏差指标将按一个组进行计算。如果分面列为数字,则应用此阈值作为选择敏感组的下限。

  • "group_variable" -(可选)列名称或索引,指示用于偏差指标条件人口统计差异 的组变量。

其他参数应在 ModelBiasJobInput API 的 EndpointInput(对于实时端点)或 BatchTransformInput(对于批量转换作业)中提供。

  • FeaturesAttribute - 如果端点输入数据格式为 "application/jsonlines",则需要使用此参数。如果数据集格式为 JSON 行,则它是用于定位特征列的 JMESPath。

  • InferenceAttribute - 目标属性在模型输出中的索引或 JMESPath 位置,用于使用偏差指标监控偏差。如果在 CSV accept_type 情况下未提供该值,则假定模型输出是与分数或概率相对应的单个数值。

  • ProbabilityAttribute - 概率在模型输出中的索引或 JMESPath 位置。例如,如果模型输出是带有标签和概率列表的 JSON 行,则会选择与最大概率对应的标签进行偏差计算。

  • ProbabilityThresholdAttribute -(可选)一个浮点值,用于表示在二进制分类情况下选择二进制标签的阈值。默认值为 0.5。

CSV 和 JSON 行数据集的 JSON 配置文件示例

以下是用于配置 CSV 和 JSON 行数据集以监控其偏差偏移的 JSON 文件示例。

CSV 数据集

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

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

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

1, 0.5385257417814224

然后,以下 JSON 配置文件显示了一个示例,介绍如何配置此 CSV 数据集。

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "target", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

预测标签由 "InferenceAttribute" 参数选择。使用从零开始的编号,因此 0 表示模型输出的第一列。

"EndpointInput": { ... "InferenceAttribute": 0 ... }

或者,您可以使用不同的参数将概率值转换为二进制预测标签。使用从零开始的编号:1 表示第二列;ProbabilityThresholdAttribute 值为 0.6 表示大于 0.6 的概率预测二进制标签为 1。

"EndpointInput": { ... "ProbabilityAttribute": 1, "ProbabilityThresholdAttribute": 0.6 ... }

JSON 行数据集

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

{"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}

假设模型输出有两列,其中第一列是预测标签,第二列是概率。

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

以下 JSON 配置文件显示了一个示例,介绍如何配置此 JSON 行数据集。

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "label", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

然后,使用 EndpointInput(对于实时端点)或 BatchTransformInput(对于批量转换作业)中的 "features" 参数值来定位数据集中的特征,"predicted_label" 参数值从模型输出中选择预测标签。

"EndpointInput": { ... "FeaturesAttribute": "features", "InferenceAttribute": "predicted_label" ... }

或者,您可以使用 ProbabilityThresholdAttribute 参数值将概率值转换为预测的二进制标签。例如,值为 0.6 表示大于 0.6 的概率预测二进制标签为 1。

"EndpointInput": { ... "FeaturesAttribute": "features", "ProbabilityAttribute": "probability", "ProbabilityThresholdAttribute": 0.6 ... }