针对间接偏见配置公平性评估

在某些条件下,您可以配置公平性评估,以考虑模型部署的间接偏差和直接偏差。

当数据集中的一个特征可用于代表另一个特征时,会发生间接偏差。 例如,在种族不是已知特征的数据集中,邮政编码之类的特征通常可以密切跟踪种族。 评估邮政编码特征是否存在偏差是一种检测间接偏差的方法。 在另一个示例中,客户购买历史记录可能与性别密切对应。 因此,即使不包含任何典型受保护属性 (例如,种族,年龄或性别) 的预测模型也可能指示有偏差的结果。

当满足以下条件时,就可以对间接偏差进行分析:

  • 要发现相关性,数据集必须足够大(超过 4000 条记录)。
  • 训练数据必须包含元数据字段。 您必须使用数据字段的子集来训练模型。 这些附加字段(即元字段)用于确定间接偏差。 (包括元字段,但不要在模型训练中使用这些元字段。)
  • 有效载荷日志记录必须包含元数据字段,并且必须在配置公平性监控器之前运行。 您必须使用此方法上传元字段。 间接偏见(indirect bias)的有效载荷日志记录需要两种类型的输入:1) 带有值的训练特征;2) 带有值的元字段。
  • 配置公平性监控时,请选择要监控的其他字段。

间接偏置的典型工作流程

但是,您可以确定模型需要不同列的生产前模型和生产模型的间接偏差。 用于评估预生产模型的测试数据与用于评估预生产或生产模型的反馈数据在元列的使用方面存在差异。 元数据列是预生产测试数据的必填项,且不得包含在用于预生产或生产模型的反馈数据中。 一个典型的流程可能包括以下步骤:

  1. 创建包含特征列和元数据列的训练数据。 元数据列包含未用于训练模型的数据。
  2. 使用元列配置公平性监控器。
  3. 在预生产阶段,请上传包含特征列和元数据列的测试数据。 必须使用“ 导入测试数据 ” CSV 选项上传此测试数据。
  4. 在预生产期间,您可以在不同版本的模型上进行交互,同时使用间接偏差度量来确保最终模型没有偏差。
  5. 将模型部署到生产环境后,反馈数据中不应包含任何元数据列,仅应包含用于训练模型的特征列。

包含元字段的 JSON 有效载荷示例文件

以下示例文件展示了一个 JSON 有效载荷,其中包含用于训练模型的字段及其值。 用于间接偏倚分析的元数据字段和值也包含在内。 元字段并非用于训练模型,而是专门用于另一种分析,旨在探究这些字段与模型中的偏差之间的关联。 尽管元字段可以是任何类型的数据,但它们通常属于受保护的属性,例如性别、种族或年龄。

[request_data = {
    "fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K"],
    "values": [[28, "F", "LOW", "HIGH", 0.61, 0.026]]
  }

response_data = {
    "fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K", "probability", "prediction", "DRUG"],
    "values": [[28, "F", "LOW", "HIGH", 0.61, 0.026, [0.82, 0.07, 0.0, 0.05, 0.03], 0.0, "drugY"]]
  }

request_data = <put your data here>
response_data = <put your data here>

records = [PayloadRecord(request=request_data, response=response_data, response_time=18), 
                PayloadRecord(request=request_data, response=response_data, response_time=12)]

subscription.payload_logging.store(records=records)

元数据值必须采用多层数组的格式:

"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}

了解更多