

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

# 训练前数据偏差
<a name="clarify-detect-data-bias"></a>

算法偏差、歧视、公平性和相关主题的研究涉及法律、政策和计算机科学等多个学科。如果计算机系统歧视某些个人或群体，则可能被视为有偏差。为这些应用程序提供支持的机器学习模型从数据中学习，这些数据可能反映出差异或其他固有偏差。例如，训练数据可能无法充分代表各种人口统计群体，或者可能包含有偏差的标签。在表现出这些偏差的数据集上训练的机器学习模型最终可能会学习这些偏差，然后在预测中重现甚至加剧这些偏差。机器学习领域通过在机器学习生命周期的每个阶段检测和衡量偏差，提供了一个解决偏差的机会。您可以使用 Amazon C SageMaker larify 来确定用于训练模型的数据是否对任何偏差进行编码

可以在训练前和训练后衡量偏差，并可在将模型部署到端点进行推理后，根据基准进行监控。训练前偏差指标旨在检测和衡量原始数据中的偏差，然后再将这些数据用于训练模型。所使用的指标与模型无关，因为它们不依赖于任何模型输出。然而，不同的公平概念需要不同的偏差衡量标准。Amaz SageMaker on Clarify 提供了偏见指标来量化各种公平标准。

有关偏见指标的更多信息，请参阅[了解 Amazon Clari SageMaker fy 如何帮助检测金融领域机器学习的偏见](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias)[和公平衡](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)量标准。

## Amazon SageMaker 澄清偏见和公平条款
<a name="clarify-bias-and-fairness-terms"></a>

SageMaker Clarify 使用以下术语来讨论偏见和公平。

**功能**  
所观察到现象的单个可测量属性或特征，包含在表格数据的一列中。

**标签**  
作为机器学习模型训练目标的特征。称为*观测标签*或*观测结果*。

**预测标签**  
模型预测的标签。也称为*预测结果*。

**样本**  
观测到的实体，由特征值和标签值描述，包含在表格数据的一行中。

**数据集**  
样本集合。

**偏差**  
不同群体（如年龄或收入阶层）的训练数据或模型预测行为的不平衡。偏差可能由用于训练模型的数据或算法产生。例如，如果一个机器学习模型主要是根据中年人的数据进行训练，那么在对年轻人和老年人进行预测时，其准确性可能会降低。

**偏差指标**  
返回表示潜在偏差程度的数值的函数。

**偏差报告**  
给定数据集的偏差指标集合，或数据集和模型的组合。

**阳性标签值**  
在样本中观测到的有利于人口统计群体的标签值。换句话说，将样本指定为*阳性结果*。

**阴性标签值**  
在样本中观测到的不利人口统计群体的标签值。换句话说，将样本指定为*阴性结果*。

**组变量**  
数据集的分类列，该数据集用于形成子组以测量条件人口统计差异 (CDD)。仅在有关辛普森悖论的这一指标中需要。

**分面**  
包含测量偏差所依据的属性的列或特征。

**分面值**  
偏差可能有利或不利的属性的特征值。

**预测概率**  
模型预测的样本出现阳性或阴性结果的概率。

## 示例笔记本
<a name="clarify-data-bias-sample-notebooks"></a>

Amaz SageMaker on Clarify 提供了以下用于偏见检测的笔记本示例：
+ 使用 [Ama SageMaker zon Clarify 进行可解释性和偏见检测](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html) — 使用 SageMaker Clarify 创建处理任务，用于检测偏差并使用特征归因解释模型预测。

本笔记本经过验证，只能在 Amazon SageMaker Studio 中运行。如果您需要有关如何在 Amazon SageMaker Studio 中打开笔记本的说明，请参阅[创建或打开 Amazon SageMaker Studio 经典笔记本电脑](notebooks-create-open.md)。如果系统提示您选择内核，请选择 **Python 3 (Data Science)**。

**Topics**
+ [

## Amazon SageMaker 澄清偏见和公平条款
](#clarify-bias-and-fairness-terms)
+ [

## 示例笔记本
](#clarify-data-bias-sample-notebooks)
+ [

# 训练前偏差指标
](clarify-measure-data-bias.md)
+ [

# 在 Studio 中生成训练前数据偏差报告 SageMaker
](clarify-data-bias-reports-ui.md)

# 训练前偏差指标
<a name="clarify-measure-data-bias"></a>

衡量机器学习模型中的偏差是减少偏差的第一步。每种偏差衡量标准都对应于不同的公平概念。即使考虑简单的公平概念，也会导致许多不同的衡量标准适用于各种背景的情况。例如，考虑年龄方面的公平性，为了简单起见，中年和其他年龄组是两个相关的人口统计，称为*分面*。就贷款的机器学习模型而言，我们可能希望向两种人口统计中的同等数量的人发放小企业贷款。或者，在处理求职者时，我们可能希望看到每种人口统计中都有同等数量的人被录用。不过，这种方法可能会假定两个年龄组申请这些工作的人数相等，因此我们可能希望对申请人数设定条件。此外，我们要考虑的可能不是申请人数是否相等，而是我们是否有同等数量的合格申请人。或者，我们可以认为公平是指两个年龄组的合格申请人的录取率相同，和/或申请人的拒绝率相同。您可以使用相关属性数据比例不同的数据集。这种不平衡可能会混淆您选择的偏差衡量标准。这些模型对一个分面的分类可能比对另一分面的分类更准确。因此，您需要选择在概念上适合应用和情况的偏差指标。

我们使用以下表示法来讨论偏差指标。此处描述的概念模型适用于二进制分类，即事件被标记为在其样本空间中只有两种可能的结果，分别称为阳性结果（值为 1）和阴性结果（值为 0）。这一框架通常可以直接扩展到多类别分类，或在需要时扩展到涉及持续有价值结果的情况。在二进制分类的情况下，分别为原始数据集中记录的结果中的有利分面 *a* 和不利分面 *d* 分配阳性标签和阴性标签。这些标签 y 称为*观测标签*，以区别于机器学习模型在机器学习生命周期的训练或推理阶段分配的*预测标签* y'。这些标签用于定义各自分面结果的概率分布 Pa(y) 和 Pd(y)。
+ 标签：
  + y 表示训练数据集中观测到的事件结果的 n 个标签。
  + y' 表示经过训练的模型对数据集中 n 个观测标签的预测标签。
+ 结果：
  + 样本的阳性结果（值为 1），例如申请被接受。
    + n(1) 是阳性结果（接受）的观测标签数量。
    + n'(1) 是阳性结果（接受）的预测标签数量。
  + 样本的阴性结果（值为 0），例如申请被拒绝。
    + n(0) 是阴性结果（拒绝）的观测标签数量。
    + n'(0) 是阴性结果（拒绝）的预测标签数量。
+ 分面值：
  + 分面 *a* - 定义偏差有利的人口统计的特征值。
    + na 是有利分面值的观测标签数：na = na(1) \$1 na(0) 分面值 *a* 的阳性和阴性观测标签之和。
    + n'a 是有利分面值的预测标签数：n'a = n'a(1) \$1 n'a(0) 分面值 *a* 的阳性和阴性预测结果标签之和。请注意，n'a = na。
  + 分面 *d* - 定义偏差不利的人口统计的特征值。
    + nd 是不利分面值的观测标签数：nd = nd(1) \$1 nd(0) 分面值 *d* 的阳性和阴性观测标签之和。
    + n'd 是不利分面值的预测标签数：n'd = n'd(1) \$1 n'd(0) 分面值 *d* 的阳性和阴性预测标签之和。请注意，n'd = nd。
+ 标注的分面数据结果的概率分布：
  + Pa(y) 是分面 *a* 的观测标签的概率分布。对于二进制标注的数据，该分布由分面 *a* 中标注为阳性结果的样本数与总样本数之比 Pa(y1) = na(1)/ na，以及标注为阴性结果的样本数与总样本数之比 Pa(y0) = na(0)/ na 得出。
  + Pd(y) 是分面 *d* 的观测标签的概率分布。对于二进制标注的数据，该分布由分面 *d* 中标注为阳性结果的样本数与总样本数之比 Pd(y1) = nd(1)/ nd，以及标注为阴性结果的样本数与总样本数之比 Pd(y0) = nd(0)/ nd 得出。

根据人口统计差异偏差数据训练的模型可能会学习甚至加剧这些差异。为了在花费资源训练模型之前识别数据中的偏差， SageMaker Clarify 提供了数据偏差指标，您可以在训练前对原始数据集进行计算。所有预训练指标都与模型无关，因为它们不依赖于模型输出，因此对任何模型都有效。第一个偏差指标检查分面不平衡，但不检查结果。它根据应用的需要，确定训练数据量在不同分面的代表性程度。其余的偏差指标以不同方式比较了数据中分面 *a* 和分面 *d* 的结果标签分布情况。在负值范围内的指标可以检测到阴性偏差。下表包含快速指导的备忘单以及指向训练前偏差指标的链接。

训练前偏差指标


| 偏差指标 | 说明 | 示例问题 | 解析指标值 | 
| --- | --- | --- | --- | 
| [类别不平衡 (CI)](clarify-bias-metric-class-imbalance.md) | 衡量不同分面值之间成员数量的不平衡。 |  由于没有足够的中年分面以外的人口统计数据，是否会出现基于年龄的偏差？   |  标准化范围：[-1,\$11] 解释： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [标签比例差异 (DPL)](clarify-data-bias-metric-true-label-imbalance.md) | 衡量不同分面值之间阳性结果的不平衡性。 | 由于数据中分面值的标注存在偏差，ML 预测中是否存在基于年龄的偏差？ |  标准化二进制和多类别分面标签的范围：[-1,\$11] 连续标签的范围：(-∞, \$1∞) 解释： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Kullback-Leibler 分歧 (KL)](clarify-data-bias-metric-kl-divergence.md) | 衡量不同分面的结果分布在熵上的彼此差异程度。 | 不同人口统计群体的贷款申请结果分布有何不同？ |  二进制、多类别、连续结果的范围：[0, \$1∞) 解释： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Jensen-Shannon 分歧 (JS)](clarify-data-bias-metric-jensen-shannon-divergence.md)  | 衡量不同分面的结果分布在熵上的彼此差异程度。 | 不同人口统计群体的贷款申请结果分布有何不同？ |  二进制、多类别、连续结果的范围：[0, \$1∞) 解释： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Lp-范数 (LP)](clarify-data-bias-metric-lp-norm.md)  | 衡量数据集中不同分面相关结果的不同人口统计分布之间的 p-范数差异。 | 不同人口统计群体的贷款申请结果分布有何不同？ |  二进制、多类别、连续结果的范围：[0, \$1∞) 解释： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [总变差距离 (TVD)](clarify-data-bias-metric-total-variation-distance.md)  | 衡量数据集中不同分面相关结果的不同人口统计分布之间的 L1-范数差异的一半。 | 不同人口统计群体的贷款申请结果分布有何不同？ |  二进制、多类别和连续结果的范围：[0, \$1∞) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Kolmogorov-Smirnov (KS)](clarify-data-bias-metric-kolmogorov-smirnov.md)  | 衡量数据集中不同分面的分布结果之间的最大差异。 | 按人口统计群体划分，哪些大学申请结果的差异最大？ | 二进制、多类别和连续结果的 KS 值范围：[0,\$11][\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html) | 
| [条件人口统计差异 (CDD)](clarify-data-bias-metric-cddl.md)  | 从整体上衡量不同分面的结果差异，同时也按子组进行衡量。 | 某些群体在大学录取结果中被拒绝的比例是否高于其被录取的比例？ |  CDD 的范围：[-1, \$11] [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 

有关偏差指标的更多信息，请参阅[金融领域机器学习的公平性衡量标准](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

**Topics**
+ [

# 类别不平衡 (CI)
](clarify-bias-metric-class-imbalance.md)
+ [

# 标签比例差异 (DPL)
](clarify-data-bias-metric-true-label-imbalance.md)
+ [

# Kullback-Leibler 分歧 (KL)
](clarify-data-bias-metric-kl-divergence.md)
+ [

# Jensen-Shannon 分歧 (JS)
](clarify-data-bias-metric-jensen-shannon-divergence.md)
+ [

# Lp-范数 (LP)
](clarify-data-bias-metric-lp-norm.md)
+ [

# 总变差距离 (TVD)
](clarify-data-bias-metric-total-variation-distance.md)
+ [

# Kolmogorov-Smirnov (KS)
](clarify-data-bias-metric-kolmogorov-smirnov.md)
+ [

# 条件人口统计差异 (CDD)
](clarify-data-bias-metric-cddl.md)

# 类别不平衡 (CI)
<a name="clarify-bias-metric-class-imbalance"></a>

当数据集中一个分面值 *d* 比另一个分面值 *a* 的训练样本少时，就会出现类别不平衡 (CI) 偏差。这是因为模型会优先拟合较大的分面，而忽略较小的分面，因此会导致分面 *d* 的训练误差增大。模型对较小数据集过度拟合的风险也较高，这会导致分面 *d* 的测试误差增大。举个例子，如果机器学习模型主要根据中年人（分面 a）的数据进行训练，那么在做出涉及年轻人和老年人（分面 d）的预测时，其准确性可能会降低。

（标准化）分面不平衡的衡量公式：

        CI = (na - nd)/(na \$1 nd)

其中 na 是分面 *a* 的成员数，nd 是分面 *d* 的成员数。它的值范围在 [-1, 1] 区间内。
+ 正 CI 值表示分面 *a* 在数据集中有更多的训练样本，值为 1 表示数据仅包含分面 *a* 的成员。
+  接近零的 CI 值表示各分面之间的成员分布更加均衡，值为零表示各分面之间完全等分，表明训练数据中样本分布均衡。
+ 负 CI 值表示分面 *d* 在数据集中有更多的训练样本，值为 -1 表示数据仅包含分面 *d* 的成员。
+ 如果 CI 值接近 -1 或 1 这两个极值，则表示非常不平衡，很有可能导致预测结果有偏差。

如果发现各分面之间存在明显的不平衡，则对样本进行模型训练之前，可能需要重新平衡样本。

# 标签比例差异 (DPL)
<a name="clarify-data-bias-metric-true-label-imbalance"></a>

标签比例差异 (DPL) 将训练数据集中分面 *d* 带有阳性标签的观测结果比例与分面 *a* 带有阳性标签的观测结果比例进行比较。例如，可以用它来比较中年人（分面 *a*）和其他年龄组的人（分面 *d*）获准获得金融贷款的比例。机器学习模型会尽可能地模仿训练数据的决策。因此，根据具有高 DPL 的数据集训练的机器学习模型很可能会在未来的预测中反映出同样的不平衡。

标签比例差异的公式如下：

        DPL = (qa - qd)

其中：
+ qa = na(1)/na 是观测标签值为 1 的分面 *a* 的比例。例如，获得贷款批准的中年人口比例。这里 na(1) 表示分面 *a* 中获得阳性结果的成员数，na 表示分面 *a* 的成员数。
+ qd = nd(1)/nd 是观测标签值为 1 的分面 *d* 的比例。例如，获得贷款批准的中年人群以外人口的比例。这里 nd(1) 表示分面 *d* 中获得阳性结果的成员数，nd 表示分面 *d* 的成员数。

如果 DPL 足够接近于 0，那么我们就可以说已经实现了*人口统计均等*。

对于二进制和多类别分面标签，DPL 值的范围在区间 (-1, 1) 内。对于连续标签，我们设置了一个阈值，将标签折叠为二进制标签。
+ 正 DPL 值表示与分面 *d* 相比，分面 *a* 的阳性结果比例更高。
+ DPL 值接近于零表示各分面之间的阳性结果比例更加均等，而值为零则表示完全的人口统计均等。
+ 负 DPL 值表示与分面 *a* 相比，分面 *d* 的阳性结果比例更高。

高 DPL 是否有问题因情况而异。在有问题的情况下，高 DPL 可能是数据中存在潜在问题的信号。例如，具有高 DPL 的数据集可能反映了历史偏差或对不同年龄人口统计群体的偏见，这对模型的学习是不可取的。

# Kullback-Leibler 分歧 (KL)
<a name="clarify-data-bias-metric-kl-divergence"></a>

Kullback-Leibler 分歧 (KL) 衡量分面 *a* 的观测标签分布 Pa(y) 与分面 *d* 的观测标签分布 Pd(y) 有多大偏差。它也称为 Pa(y) 相对于 Pd(y) 的相对熵，它量化了从 Pa(y) 移动到 Pd(y) 时丢失的信息量。

Kullback-Leibler 分歧的公式如下：

        KL(Pa \$1\$1 Pd) = ∑yPa(y)\$1log[Pa(y)/Pd(y)]

它是对概率 Pa(y) 和 Pd(y) 之间对数差的期望，其中期望值由概率 Pa(y) 加权。这不是分布之间的真正距离，因为它是不对称的，不满足三角形不等式。该实现使用自然对数，得出以奈特为单位的 KL。使用不同的对数基数可以得到成比例的结果，但单位不同。例如，使用基数 2 可以得出以位为单位的 KL。

例如，假设一组贷款申请人（分面 *d*）的批准率为 30%，而其他申请人（分面 *a*）的批准率为 80%。Kullback-Leibler 公式给出了分面 *a* 与分面 *d* 的标签分布差异，如下所示：

        KL = 0.8\$1ln(0.8/0.3) \$1 0.2\$1ln(0.2/0.7) = 0.53

此处的公式中有两个项，因为在本例中，标签是二进制的。除二进制标签外，此衡量标准还可应用于多个标签。例如，在大学录取场景中，假设可能为申请人分配三个类别标签之一：yi = \$1y0, y1, y2\$1 = \$1拒绝, 候补, 录取\$1。

二进制、多类别和连续结果的 KL 指标的值范围为 [0, \$1∞)。
+ 接近零的值意味着不同分面的结果分布情况相似。
+ 正值表示标签分布存在差异，正值越大，差异就越大。

# Jensen-Shannon 分歧 (JS)
<a name="clarify-data-bias-metric-jensen-shannon-divergence"></a>

Jensen-Shannon 分歧 (JS) 衡量不同分面的标签分布之间的相互偏离程度。它基于 Kullback-Leibler 分歧，但具有对称性。

Jensen-Shannon 分歧的公式如下：

        JS = ½\$1[KL(Pa \$1\$1 P) \$1 KL(Pd \$1\$1 P)]

其中 P = ½( Pa \$1 Pd )，即分面 *a* 和 *d* 的平均标签分布情况。

二进制、多类别、连续结果的 JS 值范围为 [0, ln(2))。
+ 接近零的值意味着标签的分布情况相似。
+ 正值表示标签分布存在差异，正值越大，差异就越大。

该指标指示某个标签在各分面之间是否存在较大差异。

# Lp-范数 (LP)
<a name="clarify-data-bias-metric-lp-norm"></a>

Lp-范数 (LP) 衡量训练数据集中观测标签的分面分布之间的 p-范数距离。该指标为非负值，因此无法检测到反向偏差。

Lp-范数的公式如下：

        Lp(Pa, Pd) = ( ∑y\$1\$1Pa - Pd\$1\$1p)1/p

其中，点 x 和 y 之间的 p-范数距离定义如下：

        Lp(x, y) = (\$1x1-y1\$1p \$1 \$1x2-y2\$1p \$1 … \$1\$1xn-yn\$1p)1/p 

2-范数是欧几里得范数。假设结果分布有三个类别，例如，在大学录取多类别场景中，yi = \$1y0, y1, y2\$1 = \$1录取, 候补, 拒绝\$1。取分面 *a* 和 *d* 的结果计数之差的平方和。由此得出的欧几里得距离计算如下：

        L2(Pa, Pd) = [(na(0) - nd(0))2 \$1 (na(1) - nd(1))2 \$1 (na(2) - nd(2))2]1/2

其中：
+ na(i) 是分面 *a* 中第 i 个类别结果的数量：例如 na(0) 是分面 *a* 的接受次数。
+ nd(i) 是分面 *d* 中第 i 个类别结果的数量：例如 nd(2) 是分面 *d* 的拒绝次数。

  二进制、多类别和连续结果的 LP 值范围为 [0, √2)，其中：
  + 接近零的值意味着标签的分布情况相似。
  + 正值表示标签分布存在差异，正值越大，差异就越大。

# 总变差距离 (TVD)
<a name="clarify-data-bias-metric-total-variation-distance"></a>

总变差距离数据偏差指标 (TVD) 是 L1-范数的一半。TVD 是分面 *a* 和分面 *d* 标签结果的概率分布之间可能存在的最大差异。L1-范数是汉明距离，该指标用于通过确定将一个字符串更改为另一个字符串所需的最小替换次数来比较两个二进制数据字符串。如果字符串是彼此的副本，它将确定复制时发生错误的次数。在偏差检测的背景下，TVD 量化了为与分面 *d* 中的结果相匹配而必须更改分面 *a* 中的结果数量。

总变差距离的公式如下：

        TVD = ½\$1L1(Pa, Pd)

例如，在大学录取多类别场景中，假设结果分布有三个类别，yi = \$1y0, y1, y2\$1 = \$1录取, 候补, 拒绝\$1。您可以利用每个结果的分面 *a* 和分面 *d* 的计数之差计算 TVD。结果如下：

        L1(Pa, Pd) = \$1na(0) - nd(0)\$1 \$1 \$1na(1) - nd(1)\$1 \$1 \$1na(2) - nd(2)\$1

其中：
+ na(i) 是分面 *a* 中第 i 个类别结果的数量：例如 na(0) 是分面 *a* 的接受次数。
+ nd(i) 是分面 d 中第 i 个类别结果的数量：例如 nd(2) 是分面 *d* 的拒绝次数。

  二进制、多类别和连续结果的 TVD 值范围为 [0, 1)，其中：
  + 接近零的值意味着标签的分布情况相似。
  + 正值表示标签分布存在差异，正值越大，差异就越大。

# Kolmogorov-Smirnov (KS)
<a name="clarify-data-bias-metric-kolmogorov-smirnov"></a>

Kolmogorov-Smirnov 偏差指标 (KS) 等于数据集的分面 *a* 和分面 *d* 分布中标签之间的最大差异。Clarify实施的双样本KS测试通过 SageMaker 找到最不平衡的标签来补充其他标签失衡的衡量标准。

Kolmogorov-Smirnov 指标的公式如下：

        KS = max(\$1Pa(y) - Pd(y)\$1)

例如，假设一组大学申请人（分面 *a*）被拒绝、列入候补名单或被录取的比率分别为 40%、40% 和 20%，而其他申请人（分面 *d*）的这些比率分别为 20%、10% 和 70%，则 Kolmogorov-Smirnov 偏差指标值如下所示：

KS = max(\$10.4-0.2\$1, \$10.4-0.1\$1, \$10.2-0.7\$1) = 0.5

这表明分面分布之间的最大差异为 0.5，并且出现在接受率中。等式中有三个项，因为标签是基数为三的多类。

二进制、多类别和连续结果的 LP 值范围为 [0, \$11]，其中：
+ 接近零的值表示标签在所有结果类别的各分面之间均匀分布。例如，申请贷款的两个分面分别获得了 50% 的接受率和 50% 的拒绝率。
+ 接近一的值表示一个结果的标签都集中在一个分面。例如，分面 *a* 获得了 100% 的接受率，而分面 *d* 的接受率为零。
+ 间歇值表示最大标签不平衡的相对程度。

# 条件人口统计差异 (CDD)
<a name="clarify-data-bias-metric-cddl"></a>

人口统计差异 (DD) 决定了某一分面在数据集中被拒绝结果的比例是否高于被接受结果的比例。在有两个分面（例如男性和女性）构成数据集的二进制情况下，不利分面被标注为分面 *d*，有利分面被标注为分面 *a*。例如，在大学录取场景中，如果女性申请人占被拒绝申请人的 46%，而只占被录取申请人的 32%，我们就会说这是一种*人口统计差异*，因为女性被拒绝的比率超过了她们被录取的比率。在这种情况下，女性申请人被标注为分面 *d*。如果男性申请人占被拒绝申请人的 54%，占被录取申请人的 68%，那么这一分面就不存在人口统计差异，因为拒绝率低于录取率。在这种情况下，男性申请人被标注为分面 *a*。

较不利分面 *d* 的人口统计差异公式如下：

        DDd = nd(0)/n(0) - nd(1)/n(1) = PdR(y0) - PdA(y1) 

其中：
+ n(0) = na(0) \$1 nd(0) 是数据集中有利分面 *a* 和不利分面 *d* 的被拒绝结果总数。
+ n(1) = na(1) \$1 nd(1) 是数据集中有利分面 *a* 和不利分面 *d* 的被接受结果总数。
+ PdR(y0) 是分面 *d* 中被拒绝结果（值为 0）的比例。
+ PdA(y1) 是分面 *d* 中被接受结果（值为 1）的比例。

以大学录取为例，女性的人口统计差异为 DDd = 0.46 - 0.32 = 0.14。男性则为 DDa = 0.54 - 0.68 = - 0.14。

为了排除辛普森悖论，需要使用条件人口统计差异 (CDD) 指标，该指标根据数据集上定义子组层次的属性来限制 DD。通过重新分组，可以深入了解较不利分面出现明显人口统计差异的原因。经典案例是伯克利大学招生案例，该大学的男性录取率总体上高于女性。DD 的示例计算中使用了该案例的统计数据。但研究院系子组后，我们发现，在某些院系，女性的录取率高于男性。对此的解释是，女性申请的院系比男性申请的院系的录取率低。研究子组录取率后发现，在录取率较低的院系中，女性的录取率实际上高于男性。

CDD 指标通过对数据集的某一属性所定义的子组中发现的所有差异进行平均，从而给出一个单一的衡量标准。它被定义为每个子组的人口统计差异 (DDi) 的加权平均值，每个子组的差异根据所含观测值的数量按比例加权。条件人口统计差异公式如下：

        CDD = (1/n)\$1∑ini \$1DDi 

其中：
+ ∑ini = n 是观测值的总数，ni 是每个子组的观测值数。
+ DDi = ni(0)/n(0) - ni(1)/n(1) = PiR(y0) - PiA(y1) 是第 i 个子组的人口统计差异。

子组 (DDi) 的人口统计差异是每个子组被拒绝结果的比例与被接受结果的比例之间的差异。

整个数据集 DDd 或其条件化子组 DDi 的二进制结果的 DD 值范围为 [-1, \$11]。
+ \$11：当分面 *a* 或子组中拒绝率为零且分面 *d* 或子组中接受率为零时
+ 正值表示存在人口统计差异，因为分面 *d* 或子组在数据集中被拒绝结果的比例高于被接受结果的比例。值越高，该分面就越不利，差异也越大。
+ 负值表示不存在人口统计差异，因为分面 *d* 或子组在数据集中被接受结果的比例高于被拒绝结果的比例。值越低，该分面就越有利。
+ -1：当分面 *d* 或子组中的拒绝率为零且分面 *a* 或子组中接受率为零时

如果不附加任何条件，那么当且仅当 DPL 为零时，CDD 才为零。

该指标有助于探讨直接和间接歧视的概念，以及欧盟和英国非歧视法和判例中的客观理由的概念。有关更多信息，请参阅 [Why Fairness Cannot Be Automated](https://arxiv.org/abs/2005.05906)（为何无法自动实现公平）。这篇论文还包含伯克利招生案例的相关数据和分析，该案例介绍了以院系录取率子组为条件如何说明辛普森悖论。

# 在 Studio 中生成训练前数据偏差报告 SageMaker
<a name="clarify-data-bias-reports-ui"></a>

SageMaker Clarify 与 Amazon SageMaker Data Wrangler 集成，它可以帮助您在数据准备过程中识别偏见，而无需自己编写代码。Data Wrangler 提供了一种使用 Amazon Studio 导入、准备、转换、特征化和分析数据的 end-to-end解决方案。 SageMaker 有关 Data Wrangler 数据准备工作流的概述，请参阅[使用 Amazon Data Wrangler 准备机器学习 SageMaker 数据](data-wrangler.md)。

您可以指定感兴趣的属性，例如性别或年龄，Clar SageMaker ify 会运行一组算法来检测这些属性中是否存在偏差。算法运行后，Cl SageMaker arify 会提供一份可视化报告，其中描述了可能存在的偏见的来源和严重程度，以便您可以计划缓解措施。例如，在一个金融数据集中，与其他年龄组相比，向一个年龄组提供的商业贷款的例子很少， SageMaker 人工智能会标记这种不平衡，这样你就可以避免使用不利于该年龄组的模型。

**分析和报告数据偏差**

要开始使用 Data Wrangler，请参阅 [开始使用 Data Wrangler](data-wrangler-getting-started.md)。

1. 在 Amazon SageMaker Studio Classic 中，从左侧面板的 “**主页**” (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png)) 菜单中导航到 “**数据**” 节点，然后选择 D **ata Wrang** ler。这将在 Studio Classic 中打开 **Data Wrangler 登录页面**。

1. 选择 **\$1 导入数据**按钮以创建新流程。

1. 在流程页面中，从**导入**选项卡中选择 Amazon S3，导航到您的 Amazon S3 存储桶，找到您的数据集，然后选择**导入**。

1. 导入数据后，在**数据流**选项卡的流图上，选择**数据类型**节点右侧的 **\$1** 符号。

1. 选择**添加分析**。

1. 在**创建分析**页面上，为**分析类型**选择**偏差报告**。

1. 通过提供报告**名称**、要预测的列以及它是值还是阈值、要分析偏差的列（分面）以及它是值还是阈值，配置偏差报告。

1. 通过选择偏差指标继续配置偏差报告。  
![\[选择偏差指标。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/clarify-data-wrangler-configure-bias-metrics.png)

1. 选择**检查偏差**以生成并查看偏差报告。向下滚动以查看所有报告。  
![\[生成并查看偏差报告。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/clarify-data-wrangler-create-bias-report.png)

1. 选择每个偏差指标描述右侧的插入符号，查看可帮助您解释指标值重要性的文档。

1. 要查看偏差指标值的表格摘要，请选择**表格**开关。要保存报告，请选择页面右下角的**保存**。您可以在**数据流**选项卡的流图上查看报告。双击报告将其打开。