在 AutoAI 实验中应用公平性测试
评估实验的公平性,以确保实验结果不会偏袒某一组而忽视另一组。
限制
时间序列实验不支持公平性评估。
评估实验和模型的公平性
在定义实验并构建机器学习模型时,您需要确保结果既可靠又无偏。 当机器学习模型在训练过程中学到了错误的知识时,可能会产生偏见。 当数据不足,或者数据采集或管理不善,导致模型生成预测结果不佳时,就会出现这种情况。 评估实验中是否存在偏倚迹象非常重要,以便在必要时加以纠正,并增强对模型结果的信心。
AutoAI 包含以下工具、技术和功能,可帮助您评估实验中的偏倚并加以纠正。
定义与术语
公平属性 ——偏见或公平性通常通过性别、种族或年龄等公平属性来衡量。
受监控组/参考组 ——受监控组是指您希望对其公平性属性进行偏差测量的那些值。 将监测组的数值与参考组的数值进行比较。 例如,如果 Fairness Attribute=Gender 用于衡量对女性的偏见,那么被监测群体的值是“女性”,而参照群体的值是“男性”。
有利/不利结果 ——在偏倚检测中,模型的有利结果和不利结果是一个重要概念。 例如, Claim approved 可能被视为一种理想结果,而 Claim denied 可能被视为一种不理想结果。
差异性影响 ——用于衡量偏见的指标(计算方法为:被监测组获得有利结果的百分比与参照组获得有利结果的百分比之比)。 如果差异性影响值低于规定的阈值,则认为存在偏见。
例如,如果男性提出的保险索赔中有80%获得批准,而女性提出的索赔中只有60%获得批准,那么这种差异性影响为:60/80 = 0.75。 通常,偏置的阈值为 0.8。 由于该差异影响比小于 0.8 ,因此该模型被视为存在偏差。
请注意,当差异影响比率大于 1.25 (即( 1/disparate impact)的倒数小于阈值 0.8 )时,这也被视为存在偏见。
观看关于评估和提升公平性的视频
观看此视频,了解如何评估机器学习模型的公平性,以确保您的结果没有偏见。
本视频提供了一种直观的方法,帮助您学习本文档中的概念和操作。
在用户界面中对 AutoAI 实验应用公平性测试
打开实验设置。
点击 “公平性 ”选项卡。
启用公平性选项。 选项如下:
- 公平性评估: 启用此选项,通过计算差异影响比率来检查每个管道是否存在偏见。 该方法用于追踪某条流程是否存在一种倾向,即对某一群体产生有利(优先)结果的频率高于对另一群体的频率。
- 公平性阈值: 设置公平性阈值,根据差异影响比的数值来判断管道中是否存在偏见。 默认值为 80,这表示差异影响比率小于 0.80。
- 理想结果: 请指定预测列中被视为理想结果的数值。 例如,该值可以是“已批准”、“已接受”或任何符合您预测类型的值。
- 自动保护属性方法: 选择如何评估可能导致偏倚的特征。 您可以选择启用自动检测功能,此时 AutoAI 将自动检测常见的受保护属性,包括:性别、种族、婚姻状况、年龄以及邮政编码。 在每个类别中, AutoAI 都会尝试确定一个受保护的群体。 例如,对于该
sex类别,被监测的组将是female。
注意: 在自动模式下,如果某个特征的值不典型(例如使用英语以外的语言),则可能无法正确将其识别为受保护属性。 自动检测功能仅支持英语。- 手动受保护属性方法: 手动指定结果,并从属性列表中选择受保护属性。 请注意,当您手动提供属性时,必须定义一个组,并指定该组是可能达到预期结果(即参考组),还是需要进行审查以检测其与预期结果的偏差(即受监控组)。
例如,这张图片展示了一组用于监控的手动指定的属性组。

保存设置以应用,并运行实验,将公平性评估应用于您的管道。
注:
- 对于多分类模型,您可以在预测列中选择多个值,将其分类为“有利”或“不利”。
- 对于回归模型,您可以指定一组被视为有利或不利的结果范围。
- 目前尚无法对时间序列实验进行公平性评估。
用于衡量公平性的自动检测属性列表
启用自动检测后,如果训练数据中包含以下属性, AutoAI 将自动检测这些属性。 属性必须使用英文。
- 年龄
- 公民身份
- 颜色
- 残疾
- 种族
- 性别
- 遗传信息
- 让分
- 语言
- 婚姻的
- 政治信仰
- 怀孕
- 宗教
- 退伍军人身份
在笔记本中对 AutoAI 实验应用公平性检验
您可以在 AutoAI 实验中进行公平性测试,该实验是在笔记本中训练的,并能扩展其功能,超越用户界面所提供的范围。
偏置检测示例
在此示例中,通过使用 Watson Machine Learning Python API(ibm-watson-machine-learning),偏置检测的优化器配置通过以下输入进行设置,其中:
- 名称 - 实验名称
- prediction_type - 问题类型
- prediction_column - 目标列名称
- fairness_info - 偏差检测配置
fairness_info = {
"protected_attributes": [
{
"feature": "personal_status",
"reference_group": ["male div/sep", "male mar/wid", "male single"],
"monitored_group": ["female div/dep/mar"]
},
{
"feature": "age",
"reference_group": [[26, 100]],
"monitored_group": [[1, 25]]}
],
"favorable_labels": ["good"],
"unfavorable_labels": ["bad"],
}
from ibm_watson_machine_learning.experiment import AutoAI
experiment = AutoAI(wml_credentials, space_id=space_id)
pipeline_optimizer = experiment.optimizer(
name='Credit Risk Prediction and bias detection - AutoAI',
prediction_type=AutoAI.PredictionType.BINARY,
prediction_column='class',
scoring='accuracy',
fairness_info=fairness_info,
retrain_on_holdout=False
)
评估结果
您可以查看每条管道的评估结果。
- 在 “实验摘要 ”页面上,点击“管道排行榜”旁的筛选图标。
- 为您的实验选择“差异性影响”指标。 此选项会评估一个通用指标以及每个受监控组的对应指标。
- 查看管道的差异影响指标,以确定是否存在偏见问题,或者仅用于确定哪个管道在公平性评估中表现更佳。
在此示例中,准确率排名第一的管道模型,其收入差异评分也处于可接受范围内。

偏见缓解
如果在实验中检测到偏差,您可以通过使用“组合评分器”来优化实验以减轻该偏差: accuracy_and_disparate_impact 或 r2_and_disparate_impact,这两者均由开源的 LALE 包定义。
在搜索和优化过程中,会使用综合评分来生成公平且准确的模型。
例如,要针对分类实验优化偏差检测:
- 打开实验设置。
- 在 “预测” 页面上,选择在实验中优化 “准确率”和“差异性影响 ”。
- 重新进行实验。
“准确率与差异影响指标”为分类实验生成一个综合评分,该评分综合了准确率和公平性两个维度。 分数越高,表明绩效和公平性指标越好。 如果差异影响评分介于 0.9 和 1.11 之间(属于可接受范围),则返回准确率评分。 否则,将返回一个低于准确率分数的差异影响值,该值越低(即越负),表明公平性差距越大。
阅读这篇关于 AutoAI 中偏差检测的Medium博客文章。