本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Ama SageMaker zon 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 位置,用于使用偏差指标监测偏差。如果在 CSVaccept_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
...
}