分析结果 - Amazon SageMaker

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

分析结果

C SageMaker larify 处理作业完成后,您可以下载输出文件进行检查,也可以在 SageMaker Studio Classic 中对结果进行可视化。以下主题介绍了 Clarify 生成的分析结果,例如由偏差分析、SHAP分析、计算机视觉可解释性分析和部分依赖图 (PDPs) 分析生成的架构和报告。 SageMaker 如果配置分析包含用于计算多个分析的参数,则结果将聚合到一个分析和一个报告文件中。

C SageMaker larify 处理作业输出目录包含以下文件:

  • analysis.json— 以JSON格式包含偏见指标和特征重要性的文件。

  • report.ipynb - 一个静态笔记本,其中包含有助于可视化偏差指标和特征重要性的代码。

  • explanations_shap/out.csv - 根据您的特定分析配置创建的目录,其中包含自动生成的文件。例如,如果您激活save_local_shap_values参数,则每个实例的本地SHAP值将保存到explanations_shap目录中。再举一个例子,如果您analysis configuration不包含SHAP基准参数的值,Clarify 可解释性作业将 SageMaker 通过对输入数据集进行聚类来计算基线。然后,它会将生成的基准保存到该目录。

有关更多详细信息,请参阅以下各节。

偏差分析

Amaz SageMaker on Clarify 使用中记录的术语Amazon SageMaker 澄清偏见和公平条款来讨论偏见和公平性。

分析文件的架构

分析文件JSON采用格式,分为两部分:训练前的偏见指标和训练后的偏见指标。训练前和训练后偏差指标的参数如下。

  • pre_training_bias_metrics - 训练前偏差指标的参数。有关更多信息,请参阅训练前偏差指标分析配置文件

    • label - 由分析配置的 label 参数定义的 Ground Truth 标签名称。

    • label_value_or_threshold - 一个字符串,其中包含由分析配置的 label_values_or_threshold 参数定义的标签值或间隔。例如,如果为二进制分类问题提供了值 1,则字符串将是 1。如果为多类问题提供了多个值 [1,2],则字符串将是 1,2。如果为回归问题提供了阈值 40,则字符串将是内部字符串,比如 (40, 68],其中 68 是输入数据集中标签的最大值。

    • facets - 该部分包含多个键值对,其中键对应于分面配置的 name_or_index 参数定义的分面名称,值是分面对象数组。每个分面对象都具有以下成员:

      • value_or_threshold - 一个字符串,其中包含由分面配置的 value_or_threshold 参数定义的分面值或区间。

      • metrics - 该部分包含偏差指标元素数组,每个偏差指标元素都具有以下属性:

        • name - 偏差指标的简称。例如,CI

        • description - 偏差指标的全名。例如,Class Imbalance (CI)

        • v alue — 偏差指标值,如果出于特定原因未计算偏差指标,则为JSON空值。值 ±∞ 分别表示为字符串 -∞

        • error - 一条可选的错误消息,解释了未计算偏差指标的原因。

  • post_training_bias_metrics - 该部分包含训练后偏差指标,其布局和结构与训练前部分类似。有关更多信息,请参阅 训练后数据和模型偏差指标

以下是将计算训练前和训练后偏差指标的分析配置示例。

{ "version": "1.0", "pre_training_bias_metrics": { "label": "Target", "label_value_or_threshold": "1", "facets": { "Gender": [{ "value_or_threshold": "0", "metrics": [ { "name": "CDDL", "description": "Conditional Demographic Disparity in Labels (CDDL)", "value": -0.06 }, { "name": "CI", "description": "Class Imbalance (CI)", "value": 0.6 }, ... ] }] } }, "post_training_bias_metrics": { "label": "Target", "label_value_or_threshold": "1", "facets": { "Gender": [{ "value_or_threshold": "0", "metrics": [ { "name": "AD", "description": "Accuracy Difference (AD)", "value": -0.13 }, { "name": "CDDPL", "description": "Conditional Demographic Disparity in Predicted Labels (CDDPL)", "value": 0.04 }, ... ] }] } } }

偏差分析报告

偏差分析报告包括几个表格和图表,其中包含详细的解释和描述。这包括但不限于标签值分布、分面值分布、高级模型性能图、偏差指标表及其描述。有关偏见指标及其解释方法的更多信息,请参阅了解 Amazon Clarify SageMaker 如何帮助检测偏见

SHAP分析

SageMaker 澄清处理任务使用内核SHAP算法来计算特征归因。Cl SageMaker arify 处理任务会生成本地值和全局SHAP值。它们有助于确定每项特征对模型预测的贡献。局部SHAP值表示每个实例的特征重要性,而全局SHAP值则聚合数据集中所有实例的局部SHAP值。有关SHAP值以及如何解释值的更多信息,请参阅使用 Shapley 值的特征归因

SHAP分析文件的架构

全局SHAP分析结果存储在分析文件的 “解释” 部分的kernel_shap方法下。SHAP分析文件的不同参数如下:

  • explanations - 分析文件中包含特征重要性分析结果的部分。

    • kernal_shap — 分析文件中包含全局分析结果的部分。SHAP

      • global_shap_values - 分析文件中包含多个键值对的部分。键值对中的每个键都代表输入数据集中的一个特征名称。键值对中的每个值都对应于该功能的全局SHAP值。全局SHAP值是通过使用配置聚合功能的每个实例SHAP值来获得的。agg_method如果 use_logit 配置激活,则使用逻辑回归系数计算该值,这些系数可以解释为对数几率比。

      • expected_value - 基准数据集的平均预测值。如果 use_logit 配置激活,则使用逻辑回归系数计算该值。

      • global_top_shap_text — 用于可解释性分析。NLP分析文件中包含一组键值对的部分。 SageMaker 澄清处理任务汇总每个令牌的SHAP值,然后根据其全局SHAP值选择排名靠前的代币。max_top_tokens 配置定义了要选择的令牌数量。

        每个选定的主要令牌都有一个键值对。键值对中的键对应于主要令牌的文本特征名称。键值对中的每个值都是排名靠前的代币的全局SHAP值。有关global_top_shap_text键值对的示例,请参阅以下输出。

以下示例显示了对表格数据集的SHAP分析结果。

{ "version": "1.0", "explanations": { "kernel_shap": { "Target": { "global_shap_values": { "Age": 0.022486410860333206, "Gender": 0.007381025261958729, "Income": 0.006843906804137847, "Occupation": 0.006843906804137847, ... }, "expected_value": 0.508233428001 } } } }

以下示例显示了文本数据集SHAP分析的输出。与 Comments 列对应的输出是在分析文本特征后生成的输出示例。

{ "version": "1.0", "explanations": { "kernel_shap": { "Target": { "global_shap_values": { "Rating": 0.022486410860333206, "Comments": 0.058612104851485144, ... }, "expected_value": 0.46700941970297033, "global_top_shap_text": { "charming": 0.04127962903247833, "brilliant": 0.02450240786522321, "enjoyable": 0.024093569652715457, ... } } } } }

生成的基准文件的架构

如果未提供SHAP基线配置,则 Clari SageMaker fy 处理作业会生成基线数据集。 SageMaker Clarify 使用基于距离的聚类算法,根据输入数据集创建的聚类生成基线数据集。生成的基线数据集保存在CSV文件中,文件位于explanations_shap/baseline.csv。此输出文件包含一个标题行和几个实例,这些实例基于分析配置中指定的 num_clusters 参数。基准数据集仅包含特征列。以下示例显示了通过聚类输入数据集创建的基线。

Age,Gender,Income,Occupation 35,0,2883,1 40,1,6178,2 42,0,4621,0

表格数据集可解释性分析中本地SHAP值的架构

对于表格数据集,如果使用单个计算实例,Clarif SageMaker y 处理作业会将本地SHAP值保存到名explanations_shap/out.csv为CSV的文件中。如果您使用多个计算实例,则本地SHAP值将保存到explanations_shap目录中的多个CSV文件中。

包含本地SHAP值的输出文件中有一行包含标题定义的每列的本地SHAP值。标题遵循 Feature_Label 命名约定,即特征名称后面加下划线,后跟目标变量的名称。

对于多类问题,标题中的特征名称会先变化,然后是标签。例如,有两项特征 F1, F2 和两个类 L1L2,那么在标题中显示为 F1_L1F2_L1F1_L2F2_L2。如果分析配置包含 joinsource_name_or_index 参数的值,则联接中使用的键列将附加到标题名称的末尾。这允许将本地SHAP值映射到输入数据集的实例。以下是包含SHAP值的输出文件的示例。

Age_Target,Gender_Target,Income_Target,Occupation_Target 0.003937908,0.001388849,0.00242389,0.00274234 -0.0052784,0.017144491,0.004480645,-0.017144491 ...

可NLP解释性分析中局部SHAP值的架构

为了进行NLP可解释性分析,如果使用单个计算实例,Clarify 处理作业会 SageMaker 将本地SHAP值保存到名为的 Lin JSON es 文件中。explanations_shap/out.jsonl如果您使用多个计算实例,则本地SHAP值将保存到explanations_shap目录中的几JSON行文件中。

每个包含本地SHAP值的文件都有几条数据行,并且每行都是一个有效的JSON对象。该JSON对象具有以下属性:

  • 解释 — 分析文件中包含单个实例内核SHAP解释数组的部分。数组中的每个元素都具有以下成员:

    • feature_name - 标题配置提供的特征的标题名称。

    • data_type — Clarify 处理作业推断出的要素类型 SageMaker 。文本特征的有效值包括 numericalcategoricalfree_text(适用于文本特征)。

    • attributions - 特定于特征的归因对象数组。一个文本特征可以有多个归因对象,每个对象对应一个由 granularity 配置定义的单元。归因对象具有以下成员:

      • attribution - 特定于类的概率值数组。

      • description -(适用于文本特征)文本单元的描述。

        • p@@ artial_text — 由 SageMaker 澄清处理任务解释的文本部分。

        • start_idx - 一个零基索引,用于标识表示部分文本片段开头的数组位置。

以下是本地SHAP值文件中单行的示例,为了增强其可读性,对其进行了美化。

{ "explanations": [ { "feature_name": "Rating", "data_type": "categorical", "attributions": [ { "attribution": [0.00342270632248735] } ] }, { "feature_name": "Comments", "data_type": "free_text", "attributions": [ { "attribution": [0.005260534499999983], "description": { "partial_text": "It's", "start_idx": 0 } }, { "attribution": [0.00424190349999996], "description": { "partial_text": "a", "start_idx": 5 } }, { "attribution": [0.010247314500000014], "description": { "partial_text": "good", "start_idx": 6 } }, { "attribution": [0.006148907500000005], "description": { "partial_text": "product", "start_idx": 10 } } ] } ] }

SHAP分析报告

SHAP分析报告提供了包含全球10最高值的最大SHAP值的条形图。以下图表示例显示了热门要4素的SHAP值。

针对前四个要素的目标变量计算的全局SHAP值的水平条形图。

计算机视觉 (CV) 可解释性分析

SageMaker Clarity 计算机视觉可解释性采用由图像组成的数据集,并将每张图像视为超级像素的集合。分析后,Cl SageMaker arify 处理作业会输出一个图像数据集,其中每张图像都显示超级像素的热图。

以下示例在左侧显示了输入限速标志,而热图在右侧显示了SHAP值的大小。这些SHAP值是通过图像识别Resnet-18模型计算得出的,该模型经过训练可以识别德国交通标志。德国交通标志识别基准 (GTSRB) 数据集在《人与计算机:对交通标志识别的机器学习算法进行基准测试》一文中提供。在示例输出中,较大的正值表明超像素与模型预测的正相关性较强。较大的负值表明超像素与模型预测的负相关性较强。热图中显示的SHAP值的绝对值越大,超级像素与模型预测之间的关系就越强。

Resnet-18 模型中限速标志的输入图像和生成的SHAP值热图。

有关更多信息,请参阅 “使用 Clarify 解释图片分类” 和 “使用 SageMaker Amazon SageMaker Clarify 解释物体检测模型” 示例笔记本。

部分依赖图 (PDPs) 分析

部分依赖图显示预测的目标响应对一组相关输入特征的依赖性。这些特征在所有其他输入特征值的基础上进行边缘化,被称为补充特征。直观地说,您可以将部分依赖性解释为目标响应,它是每个相关输入特征的预期函数。

分析文件的架构

这些PDP值存储在分析文件中pdp方法下的explanations部分中。explanations 的参数设置如下所示:

  • explanations - 分析文件中包含特征重要性分析结果的部分。

    • pdp — 分析文件中包含单个实例PDP解释数组的部分。数组的每个元素都具有以下成员:

      • feature_name - headers 配置提供的特征的标题名称。

      • data_type — Clarify 处理作业推断出的要素类型 SageMaker 。data_type 的有效值包括数值和分类。

      • feature_values - 包含特征中存在的值。如果 Clarif SageMaker y 的data_type推断是分类的,则feature_values包含该特征可能具有的所有唯一值。如果 Clarify data_type SageMaker 推断的值是数值,则feature_values包含生成的存储桶的中心值列表。grid_resolution 参数确定用于对特征列值进行分组的存储桶数量。

      • data_distribution - 百分比数组,其中每个值都是存储桶所包含的实例的百分比。grid_resolution 参数决定了存储桶数量。特征列值分组到这些存储桶中。

      • model_predictions - 模型预测数组,其中数组的每个元素都是一个预测数组,对应于模型输出中的一个类。

        label_headers - label_headers 配置提供的标签标题。

      • error-如果由于特定原因未计算PDP值,则会生成一条错误消息。此错误消息替换 feature_valuesdata_distributionsmodel_predictions 字段中包含的内容。

以下是包含分析结果的分析文件的输出示例。PDP

{ "version": "1.0", "explanations": { "pdp": [ { "feature_name": "Income", "data_type": "numerical", "feature_values": [1046.9, 2454.7, 3862.5, 5270.2, 6678.0, 8085.9, 9493.6, 10901.5, 12309.3, 13717.1], "data_distribution": [0.32, 0.27, 0.17, 0.1, 0.045, 0.05, 0.01, 0.015, 0.01, 0.01], "model_predictions": [[0.69, 0.82, 0.82, 0.77, 0.77, 0.46, 0.46, 0.45, 0.41, 0.41]], "label_headers": ["Target"] }, ... ] } }

PDP分析报告

您可以生成包含每个要素PDP图表的分析报告。该PDP图表feature_values沿 x 轴绘制,并model_predictions沿 y 轴绘制。对于多类模型,model_predictions 是一个数组,该数组的每个元素都对应于一个模型预测类。

以下是该功能的PDP图表示例Age。在示例输出中,PDP显示了分组到存储桶中的要素值的数量。存储桶的数量由 grid_resolution 决定。根据模型预测绘制特征值存储桶。在本例中,较高的特征值具有相同的模型预测值。

折线图显示 10 个唯一网格点的模型预测值随 feature_values 的变化情况。

非对称 Shapley 值

SageMaker 澄清处理作业使用非对称 Shapley 值算法来计算时间序列预测模型解释属性。该算法确定输入要素在每个时间步向预测的贡献。

非对称 Shapley 值分析文件的架构

非对称 Shapley 值结果存储在 Amazon S3 存储桶中。您可以在分析文件的 “说明” 部分中找到此存储桶的位置。本节包含特征重要性分析结果。非对称 Shapley 值分析文件中包含以下参数。

  • asymmetric_shapley_valu e — 分析文件中包含有关解释作业结果的元数据的部分,包括以下内容:

    • 解释_results_path — 带有解释结果的 Amazon S3 地点

    • d irection — 用户提供的配置值的配置 direction

    • 粒度 — 用户为配置值提供的配置 granularity

以下代码段显示了示例分析文件中前面提到的参数:

{ "version": "1.0", "explanations": { "asymmetric_shapley_value": { "explanation_results_path": EXPLANATION_RESULTS_S3_URI, "direction": "chronological", "granularity": "timewise", } } }

以下各节介绍解释结果结构如何取决于配置granularity中的值。

按时间划分的粒度

当粒度为时timewise,输出用以下结构表示。该scores值表示每个时间戳的归因。该offset值表示模型对基线数据的预测,并描述了模型在未接收数据时的行为。

以下片段显示了对两个时间步进行预测的模型的输出示例。因此,所有归因都是两个元素的列表,其中第一个条目指的是第一个预测的时间步长。

{ "item_id": "item1", "offset": [1.0, 1.2], "explanations": [ {"timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.1]}, {"timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.2]}, {"timestamp": "2019-09-13 00:00:00", "scores": [0.45, 0.3]}, ] } { "item_id": "item2", "offset": [1.0, 1.2], "explanations": [ {"timestamp": "2019-09-11 00:00:00", "scores": [0.51, 0.35]}, {"timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.22]}, {"timestamp": "2019-09-13 00:00:00", "scores": [0.46, 0.31]}, ] }

精细粒度

以下示例演示了粒度为时的归因结果。fine_grainedoffset值的含义与上一节中描述的相同。在目标时间序列和相关时间序列(如果有)以及每个静态协变量(如果可用)的每个输入要素的每个时间戳计算属性。

{ "item_id": "item1", "offset": [1.0, 1.2], "explanations": [ {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.11]}, {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.43]}, {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.15, 0.51]}, {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.81, 0.18]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.01, 0.10]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.41]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-13 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.65, 0.56]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.43, 0.34]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-13 00:00:00", "scores": [0.16, 0.61]}, {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]}, {"feature_name": "static_covariate_1", "scores": [0.6, 0.1]}, {"feature_name": "static_covariate_2", "scores": [0.1, 0.3]}, ] }

对于两种timewisefine-grained用例,结果都以 Lin JSON es (.jsonl) 格式存储。