4. 公平性度量指标(一)

在完成敏感属性识别与数据切片之后,审计工作的下一步是把“公平”这一模糊概念转化为可计算、可比较、可复现的数值指标。群体公平指标的核心思想是:在给定敏感属性(如性别、种族、年龄段)划分的不同群体之间,比较模型预测结果的某些统计量是否一致。本节聚焦三类最常用的群体公平指标——统计 Parity、Equal Opportunity 与 Equalized Odds,给出它们的数学定义、适用条件与典型误用场景。

一、核心原理:从混淆矩阵到群体公平

所有群体公平指标都建立在混淆矩阵之上。设敏感属性 A ∈ {0,1},真实标签 Y ∈ {0,1},模型预测 Ŷ ∈ {0,1}。对每个群体 a,我们可以统计四个量:真正例率 TPR = P(Ŷ=1 | Y=1, A=a)、假正例率 FPR = P(Ŷ=1 | Y=0, A=a)、正例预测率 PPR = P(Ŷ=1 | A=a),以及精确率 PPV = P(Y=1 | Ŷ=1, A=a)。不同公平指标,本质上就是要求这些统计量在不同群体间满足某种相等关系。

关键理解:公平性指标不是“模型好坏的度量”,而是“群体间差异的度量”。一个模型可以准确率很高但公平性很差,也可以公平性达标但准确率不可接受。审计的目标是同时报告这两类指标,而不是用公平性替代准确性。

二、三类指标的数学定义与适用条件

1. 统计 Parity(Statistical Parity,又称 Demographic Parity)

定义:不同群体的正例预测率相等,即 P(Ŷ=1 | A=0) = P(Ŷ=1 | A=1)。常用差值 ΔSP = |PPR₀ − PPR₁| 或比值 PPR₀ / PPR₁ 来量化。适用条件:当“正例”本身代表一种资源分配(如贷款批准、面试邀请),且我们关心的是各群体获得该资源的比例是否均衡时,统计 Parity 最直观。它的局限在于完全忽略真实标签 Y:如果两个群体的真实正例率本就不同,强行拉平 PPR 会引入“逆向歧视”。

2. Equal Opportunity(机会均等)

定义:在真实为正例的样本中,不同群体的真正例率相等,即 P(Ŷ=1 | Y=1, A=0) = P(Ŷ=1 | Y=1, A=1)。它只约束 TPR,不约束 FPR。适用条件:当“漏判”的代价远高于“误判”,且我们希望合格个体不因敏感属性而被系统性拒绝时使用。例如招聘筛选、奖学金评定、疾病初筛。Equal Opportunity 允许不同群体的 FPR 存在差异,因此它比 Equalized Odds 更宽松,也更容易在现实中达成。

3. Equalized Odds(均等赔率)

定义:同时要求 TPR 与 FPR 在群体间相等,即 P(Ŷ=1 | Y=y, A=0) = P(Ŷ=1 | Y=y, A=1) 对 y ∈ {0,1} 均成立。它等价于要求预测 Ŷ 在给定 Y 的条件下与 A 独立。适用条件:当误判在两个方向上都有实质代价,且我们希望模型在不同群体中的“错误结构”一致时使用。Equalized Odds 是最严格的群体公平约束之一,通常需要后处理或带约束的训练才能满足。

指标约束的统计量是否使用真实标签 Y典型适用场景主要风险
Statistical ParityPPR否资源分配、录取比例忽略真实差异,可能逆向歧视
Equal OpportunityTPR是漏判代价高的筛选场景不约束 FPR,误判结构可能不一致
Equalized OddsTPR 与 FPR是双向误判均有代价的场景约束强,可能显著牺牲准确率

三、方法流程:如何计算与比较这些指标

实际审计中,建议按以下流程执行,避免直接套公式导致结论偏差:

  1. 确定敏感属性与分组:明确 A 的取值,处理多值属性时先做二值化或分组对比。
  2. 固定评估数据集:使用同一份留出集或交叉验证折,确保各群体样本量足够(建议每组正负例均不少于 30)。
  3. 计算混淆矩阵:对每个群体分别统计 TP、FP、TN、FN。
  4. 计算指标与置信区间:除点估计外,用 Bootstrap 给出 95% 置信区间,判断差异是否显著。
  5. 报告与阈值判断:常用经验阈值是差值小于 0.1 视为可接受,但必须结合业务语境。
# 以 Fairlearn 为例计算三类指标
from fairlearn.metrics import (
    demographic_parity_difference,
    equalized_odds_difference,
    true_positive_rate_difference,
)

sp = demographic_parity_difference(y_true, y_pred, sensitive_features=A)
eo = equalized_odds_difference(y_true, y_pred, sensitive_features=A)
tpr_diff = true_positive_rate_difference(y_true, y_pred, sensitive_features=A)

print(f"Statistical Parity Diff: {sp:.3f}")
print(f"Equal Opportunity Diff:  {tpr_diff:.3f}")
print(f"Equalized Odds Diff:     {eo:.3f}")

四、案例与误区复盘

案例:某信贷模型在两个群体上的 PPR 分别为 0.42 与 0.31,统计 Parity 差值为 0.11,初步判定存在偏差。进一步查看真实标签后发现,群体 0 的真实违约率本就低于群体 1,即真实正例率不同。此时若强行拉平 PPR,会把大量合格的低风险个体拒之门外。改用 Equal Opportunity 后,发现 TPR 差值仅为 0.03,说明模型对“合格者”的识别在两个群体间基本一致。最终审计结论是:统计 Parity 不达标,但 Equal Opportunity 达标,建议结合业务目标选择约束方式,而非盲目追求单一指标。

常见误区:(1)把统计 Parity 当作唯一公平标准,忽略真实标签分布差异;(2)在样本量极小的群体上计算指标并直接下结论;(3)同时要求多个公平指标全部达标——数学上它们往往互斥,例如在基础率不同的情况下,统计 Parity 与 Equalized Odds 通常无法同时满足;(4)只看点估计不看置信区间,把随机波动误判为系统性偏差。

审计建议:先明确业务中“公平”对应的是资源分配均衡(选 Statistical Parity)、漏判保护(选 Equal Opportunity)还是错误结构一致(选 Equalized Odds),再选择指标。报告中应同时给出准确率、各群体样本量和置信区间,让决策者看到公平与性能之间的真实权衡。

三类群体公平指标的约束范围 Statistical Parity 约束 PPR PPR 不使用真实标签 Y 关注资源分配比例 约束最宽松 Equal Opportunity 约束 TPR TPR 使用真实标签 Y 关注合格者不被漏判 约束中等 Equalized Odds 约束 TPR 与 FPR TPR FPR 使用真实标签 Y 关注错误结构一致 约束最严格 约束强度:Statistical Parity < Equal Opportunity < Equalized Odds

掌握这三类指标的定义与边界,是后续进行偏差缓解与合规报告的基础。审计实践中,指标选择必须回到业务语境:先问“公平在这里意味着什么”,再问“哪个统计量能刻画它”,最后才是指标计算与阈值判断。