

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

# 训练前偏差指标
<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)（为何无法自动实现公平）。这篇论文还包含伯克利招生案例的相关数据和分析，该案例介绍了以院系录取率子组为条件如何说明辛普森悖论。