机器学习工作流可以包括评估模型的公平性。不公平模型会显示可能导致伤害(尤其是对传统代表性不足的群体)的系统性偏差。不公平模型可能会对数据集的某些子集(即切片)的表现较差。
您可以在数据收集期间或训练后评估过程中检测偏差。Vertex AI 提供以下模型评估指标,可帮助您评估模型是否存在偏差:
数据偏差指标:在训练和构建模型之前,这些指标会检测原始数据是否包含偏差。例如,笑脸检测数据集包含的老年人数量可能远远少于年轻人。其中一些指标基于量化不同数据组标签分布之间的距离:
人群规模差异。
真正标签的正例比例差异。
模型偏差指标:在训练模型后,这些指标会检测模型的预测结果是否存在偏差。例如,模型对一个数据子集的准确度可能比其余数据高:
准确率差异。
预测标签的正例比例差异。
召回率差异。
特异性差异。
错误类型比率的差异。
如需了解如何在流水线运行中添加模型评估偏差流水线组件,请参阅模型评估组件。
示例数据集概览
对于与公平性指标相关的所有示例,我们使用了一个假设的大学招生数据集,其中包含申请者高中成绩、州和性别认同等特征。我们想要衡量该大学是偏向于加利福尼亚州申请者还是佛罗里达州申请者。
目标标签(即所有可能的结果)如下:
接受有奖学金的申请者 (
p
)。接受无奖学金的申请者 (
q
)拒绝申请者 (
r
)。
我们可以假设招生专家提供了这些标签作为标准答案。请注意,即使是这些专家标签也可能出现偏差,因为它们是由人工分配的。
为了创建二元分类示例,我们可以将标签组合在一起,以创建两个可能的结果:
正结果,以
1
表示。我们可以将p
和q
组合为正结果“接受{p,q}
”。负结果,以
0
表示。这可以是除正例结果之外的所有其他结果的集合。在我们的大学应用示例中,负结果为“拒绝{r}
”。
为了衡量加利福尼亚州申请者和佛罗里达州申请者之间的偏差,我们将两个切片与数据集的其余部分分开:
要衡量其偏差的数据集的切片 1。在大学申请示例中,我们将衡量针对加利福尼亚州申请者的偏差。
要衡量其偏差的数据集的切片 2。切片 2 默认可以包含“不在切片 1 中的所有内容”,但对于大学应用示例,我们将切片 2 指定为佛罗里达州申请者。
在我们的示例大学应用数据集中,切片 1 中有 200 位来自加利福尼亚州的申请者,切片 2 中有 100 位佛罗里达州申请者。训练模型后,我们得到了以下混淆矩阵:
加利福尼亚州申请者 | 接受人数(预测) | 拒绝人数(预测) |
---|---|---|
接受人数(标准答案) | 50(真正例) | 10(假负例) |
拒绝人数(标准答案) | 20(假正例) | 120(真负例) |
佛罗里达州申请者 | 接受人数(预测) | 拒绝人数(预测) |
---|---|---|
接受人数(标准答案) | 20(真正例) | 0(假负例) |
拒绝人数(标准答案) | 30(假正例) | 50(真负例) |
通过比较两个混淆矩阵之间的指标,我们可以通过回答诸如“模型对一个切片的召回是否优于对另一个切片的召回?”之类的问题来衡量偏差。
我们还使用以下简写形式表示加标签的标准答案数据,其中 i
表示切片编号(1 或 2):
i
,加标签的正结果数 = 假负例 + 真正例。
请注意有关大学应用数据集示例的以下事项:
某些公平性指标也可以针对多个结果进行泛化,但为了简单起见,我们使用二元分类。
该示例侧重于分类任务,但某些公平性指标会泛化到回归等其他问题。
在此示例中,我们假设训练数据和测试数据相同。