为什么我需要为指标提供(非)特权属性值?

Why do I need to provide (un)privileged attribute values for metrics?

我正在使用 AI Fairness 360 包获取数据集的公平性指标。我已经将数据转换为 StandardDataset 实例。如果我理解正确,这会将受保护属性的所有值更改为 1 或 0:1 表示“属于此属性的特权组”,0 表示“属于此属性的非特权组”。

计算公平性指标时,我需要创建一个 BinaryLabelDatasetMetric 实例,我需要为其指定我认为哪些受保护属性的组合是我的 privileged/unprivileged 组。但是为什么我需要提供 privileged/unprivileged 的属性值呢?转换为 StandardDataset 后,所有特权值均为 1,非特权值为 0。我是否遗漏了什么?因为如果不是,只需将其编码为 1 就容易得多。

总而言之,我的问题是:StandardDataset 中受保护属性的值可以是 1 或 0 以外的任何值吗?如果是,在什么情况下? (如果不是,似乎 API 可以简化很多,只需要受保护属性的名称而不是值。)

can the values for protected attributes in a StandardDataset ever be anything other than 1 or 0?

是的。它们也可以是原始数据集中的其他值,但是一旦被 StandardDataset 转换,它们将被转换为 0 和 1。来自 source:

privileged_classes (list(list or function)): Each element is a list of values which are considered privileged or a boolean function which return True if privileged for the corresponding column in protected_attribute_names. All others are unprivileged. Values are mapped to 1 (privileged) and 0 (unprivileged) if they are not already numerical.

您还可以查看示例 ,通过更改 gender 属性(例如,将 0 和 1 替换为 'female' 和 'male' 来查看实际效果就在传递给 StandardDataset) 之前。

如果特权 class 已经编码为 1 而非特权为 0,这似乎是不必要的。但如果不是这种情况,设置这样的要求将意味着用户需要操作原始数据集,这不可取。