Towards Model-Agnostic Post-Hoc Adjustment for Balancing Ranking Fairness and Algorithm Utilit
arxiv链接
首先声明,我没有详细做过fairness相关的调研,尤其是涉及到医学领域的数据集(本文中使用的),因此可能会在理解上出现一些错误,欢迎在评论区指正探讨~
工作任务
近年来,人们发现由于数据统计的偏差,模型本身的设计甚至是人为引入偏见等因素的存在,使得算法也呈现出不公平的结果,最常见的unfairness的现象就是性别歧视和种族歧视。因此今年来,越来越多的许多工作都被提出来提升算法的公平性。二分排序(把正样本排在负样本前面)在现实生活中有广泛应用。最近人们注意到算法学习到的score function会在一些敏感的属性划分出的group间(比如按照性别将男性划为一个group,女性划为一个group)表现出偏差,也就是我们说的公平性(fairness)问题。这篇工作的研究内容就是排序问题下的公平性问题(fairness)和算法性能(algorithm utility)之间的平衡。作者提出的解决方法是一种模型无关的后处理框架,并且这个过程是非参数化的(non-parametric),通过动态规划的方法来解决,能够保证较好的时间复杂度。
概括性总结:
模型结果:先得到组内的排序,再将各组序列融合得到组件排序。
优化目标:最大化fairness metric 和 utility metric的加权求和
优化方法:组内排序不涉及fairness,因此按照score function给出的得分排序即可;对于组间融合排序:将排序结果看作一个路径,设计一个动态规划算法找到最优化目标的路径来得到组间融合排序。
工作思路
step1:如何量化评价fairness?
要做的是按照sensitive attribute划分两个group:a,b。分别计算一些指标,然后考虑指标之间的差异。
作者这里考虑的两个fairness metrics是:
xAUC
\textrm{xAUC}
xAUC,
PRF
\textrm{PRF}
PRF。
xAUC
\textrm{xAUC}
xAUC:计算一个组的正样本排在另一个组的负样本前面的概率。期望两个组能有相同的xAUC,从而实现最优的fairness,即
Δ
xAUC
=
0
\Delta \textrm{xAUC} = 0
ΔxAUC=0。
PRF
\textrm{PRF}
PRF:计算一个组的正样本排在所有负样本前面的概率。
step2:优化目标
对于我们的任务中,会根据某个sensitive attribute将样本划分成group a,b。首先按照score function对组内instances进行排序得到序列
p
a
=
{
p
a
(
1
)
,
p
a
(
2
)
,
.
.
.
,
p
a
(
n
a
)
}
,
p
b
=
{
p
b
(
1
)
,
p
b
(
2
)
,
.
.
.
,
p
b
(
n
b
)
}
p^a=\{p^{a(1)},p^{a(2)},...,p^{a(n^a)}\},p^b=\{p^{b(1)},p^{b(2)},...,p^{b(n^b)}\}
pa={pa(1),pa(2),...,pa(na)},pb={pb(1),pb(2),...,pb(nb)}。之后在保证utility和fairness的条件下将
p
a
,
p
b
p^a,p^b
pa,pb融合成最终的ranking sequence:
o
(
p
a
,
p
b
)
=
{
p
a
(
1
)
,
p
b
(
1
)
,
p
a
(
2
)
,
.
.
.
,
p
a
(
n
a
)
,
p
b
(
n
b
)
}
o(p^a,p^b)=\{p^{a(1)},p^{b(1)},p^{a(2)},...,p^{a(n^a)},p^{b(n^b)}\}
o(pa,pb)={pa(1),pb(1),pa(2),...,pa(na),pb(nb)},这里面的组内顺序是和
p
a
,
p
b
p^a,p^b
pa,pb保持一致的。
因为要平衡algorithm utility 和 fairness,优化目标设计为对utility和fairness分别计算得分,然后加权求和。
首先是utility的计算
作者使用AUC值来表示algorithm utility。由于AUC可以理解为:从正负样本集合中分别随机采样一个样本,正样本能够排在负样本前面的概率。表示为:
AUC
=
Pr
[
S
1
>
S
0
]
=
1
n
1
n
0
∑
i
:
Y
i
=
1
∑
j
:
Y
j
=
0
I
[
R
(
X
i
)
>
R
(
X
j
)
]
\textrm{AUC}=\textrm{Pr}[S_1>S_0]=\frac{1}{n_1n_0}\sum_{i:Y_i=1}\sum_{j:Y_j=0}\mathbb{I}[R(X_i)>R(X_j)]
AUC=Pr[S1>S0]=n1n01∑i:Yi=1∑j:Yj=0I[R(Xi)>R(Xj)]
X
i
X_i
Xi表示正样本,
X
j
X_j
Xj表示负样本,
n
1
n_1
n1表示正样本数量,
Y
i
Y_i
Yi表示样本
X
i
X_i
Xi的标签。
R
(
X
i
)
>
R
(
X
j
)
R(X_i)>R(X_j)
R(Xi)>R(Xj)表示样本
X
i
X_i
Xi排的比
X
j
X_j
Xj高。
其次是fairness的计算
作者采用的
Δ
xAUC
\Delta\textrm{xAUC}
ΔxAUC来衡量算法的fairness。对于最终的ordering
o
(
p
a
,
p
b
)
o(p^a,p^b)
o(pa,pb)来说,group a在group b上的
xAUC
\textrm{xAUC}
xAUC的计算如下:
xAUC
(
a
,
b
)
=
Pr
[
S
1
a
>
S
0
b
]
=
1
n
1
a
n
0
b
∑
i
:
i
∈
a
,
Y
i
=
1
∑
j
:
j
∈
b
,
Y
j
=
0
I
[
R
(
X
i
,
a
)
>
R
(
X
j
,
b
)
]
\textrm{xAUC}(a,b)=\textrm{Pr}[S_1^a>S_0^b]=\frac{1}{n_1^an_0^b}\sum\limits_{i:i\in a,Y_i=1}\sum\limits_{j:j\in b, Y_j=0}\mathbb{I}[R(X_i, a)>R(X_j, b)]
xAUC(a,b)=Pr[S1a>S0b]=n1an0b1i:i∈a,Yi=1∑j:j∈b,Yj=0∑I[R(Xi,a)>R(Xj,b)]
则
Δ
xAUC
\Delta\textrm{xAUC}
ΔxAUC计算如下:
Δ
xAUC
(
o
(
p
a
,
p
b
)
)
=
∣
xAUC
(
a
,
b
)
−
xAUC
(
b
,
a
)
∣
\Delta\textrm{xAUC}(o(p^a,p^b))=|\textrm{xAUC}(a,b)-\textrm{xAUC}(b,a)|
ΔxAUC(o(pa,pb))=∣xAUC(a,b)−xAUC(b,a)∣
两种metric的加权求和得到最终的优化目标:
J
(
o
(
p
a
,
p
b
)
)
=
AUC
(
o
(
p
a
,
p
b
)
)
−
λ
⋅
Δ
xAUC
(
o
(
p
a
,
p
b
)
)
J(o(p^a,p^b))=\textrm{AUC}(o(p^a,p^b))-\lambda\cdot \Delta\textrm{xAUC}(o(p^a,p^b))
J(o(pa,pb))=AUC(o(pa,pb))−λ⋅ΔxAUC(o(pa,pb))
作者这里对优化目标做了一个变换,得到只需计算
xAUC
\textrm{xAUC}
xAUC的形式,不需计算
AUC
\textrm{AUC}
AUC:
G
(
o
(
p
a
,
p
b
)
)
=
k
a
,
b
⋅
xAUC
(
a
,
b
)
+
k
b
,
a
⋅
xAUC
(
b
,
a
)
−
λ
k
⋅
Δ
xAUC
(
o
(
p
a
,
p
b
)
)
G(o(p^a,p^b))=k_{a,b}\cdot\textrm{xAUC}(a,b)+k_{b,a}\cdot\textrm{xAUC}(b,a)-\lambda k\cdot\Delta\textrm{xAUC}(o(p^a,p^b))
G(o(pa,pb))=ka,b⋅xAUC(a,b)+kb,a⋅xAUC(b,a)−λk⋅ΔxAUC(o(pa,pb))
其中:
k
a
,
b
=
n
1
a
n
0
b
,
k
b
,
a
=
n
1
b
n
0
a
,
k
=
n
1
n
0
k_{a,b}=n^a_1n^b_0,\;k_{b,a}=n^b_1n^a_0,\;k=n_{1}n_0
ka,b=n1an0b,kb,a=n1bn0a,k=n1n0
推导:
AUC = k a k ⋅ iAUC ( a ) + k a , b k ⋅ xAUC ( a , b ) + k b k iAUC ( b , a ) + k b k ⋅ iAUC ( b ) \textrm{AUC}=\frac{k_a}{k}\cdot\textrm{iAUC}(a)+\frac{k_{a,b}}{k}\cdot\textrm{xAUC}(a,b)+\frac{k_b}{k}\textrm{iAUC}(b,a)+\frac{k_b}{k}\cdot\textrm{iAUC}(b) AUC=kka⋅iAUC(a)+kka,b⋅xAUC(a,b)+kkbiAUC(b,a)+kkb⋅iAUC(b)
iAUC = Pr [ S 1 a > S 0 a ] = 1 k a ∑ i : i ∈ a , Y i = 1 ∑ j : j ∈ a , Y j = 0 I [ R ( X i ) > R ( X j ) ] \textrm{iAUC}=\textrm{Pr}[S^a_1>S^a_0]=\frac{1}{k_a}\sum_{i:i\in a,Y_i=1}\sum_{j:j\in a, Y_j=0}\mathbb{I}[R(X_i)>R(X_j)] iAUC=Pr[S1a>S0a]=ka1∑i:i∈a,Yi=1∑j:j∈a,Yj=0I[R(Xi)>R(Xj)]
k a = n 1 a n 0 a , k b = n 1 b n 0 b k_a=n^a_1n^a_0, k_b=n^b_1n^b_0 ka=n1an0a,kb=n1bn0b
iAUC \textrm{iAUC} iAUC表示组内的随机正样本排序比随机负样本高的概率。
因为无论怎么融合排序,组内顺序是不变的,因此 iAUC \textrm{iAUC} iAUC可以看作是常数,由此可以对 J ( o ( p a , p b ) ) J(o(p^a,p^b)) J(o(pa,pb))拆分成:
J ( o ( p a , p b ) ) = AUC ( o ( p a , p b ) ) − λ ⋅ Δ xAUC ( o ( p a , p b ) ) = 1 k ( k a , b xAUC ( a , b ) ) + k b , a xAUC ( b , a ) ) − λ k Δ xAUC ( o ( p a , p b ) ) + C J(o(p^a,p^b))=\textrm{AUC}(o(p^a,p^b))-\lambda\cdot\Delta\textrm{xAUC}(o(p^a,p^b))\\=\frac{1}{k}(k_{a,b}\textrm{xAUC}(a,b))+k_{b,a}\textrm{xAUC}(b,a))-\lambda k\Delta\textrm{xAUC}(o(p^a,p^b))+C J(o(pa,pb))=AUC(o(pa,pb))−λ⋅ΔxAUC(o(pa,pb))=k1(ka,bxAUC(a,b))+kb,axAUC(b,a))−λkΔxAUC(o(pa,pb))+C
忽略常数项得到新的优化目标:
G ( o ( p a , p b ) ) = k a , b xAUC ( a , b ) ) + k b , a ⋅ xAUC ( b , a ) − λ k Δ xAUC ( o ( p a , p b ) ) G(o(p^a,p^b))=k_{a,b}\textrm{xAUC}(a,b))+k_{b,a}\cdot\textrm{xAUC}(b,a)-\lambda k\Delta\textrm{xAUC}(o(p^a,p^b)) G(o(pa,pb))=ka,bxAUC(a,b))+kb,a⋅xAUC(b,a)−λkΔxAUC(o(pa,pb))
step3:融合排序算法(前提是group内的序列已经按照scores排好,得到了
p
a
,
p
b
p^a,p^b
pa,pb)
作者把融合排序得到的列表看作是一个路径,路径方向就是排序顺序 。算法目标就是找到一个最优路径使得目标函数最优。路径约束是:必须从
p
a
(
1
)
p^{a(1)}
pa(1)或者
p
b
(
1
)
p^{b(1)}
pb(1)开始,以
p
a
(
n
a
)
p^{a(n^a)}
pa(na)或者
p
b
(
n
n
)
p^{b(n^n)}
pb(nn)结束,每个instance都出现且只出现一次。组内顺序保持不变。
下图是一个path的例子(水印是什么鬼!我截的论文里的图!):
作者提出用动态规划的方法求解最优路径。设置
s
i
z
e
=
(
1
+
n
a
)
×
(
1
+
n
b
)
size=(1+n_a)\times(1+n_b)
size=(1+na)×(1+nb)的二维数组,
(
i
,
j
)
(i,j)
(i,j)格子存的是考虑前
i
i
i个group a里的instances,前
j
j
j个group b里的instances得到的最优路径
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
)
)
o^*(p^{a(:i)},p^{b(:j)})
o∗(pa(:i),pb(:j)),它是根据
o
∗
(
p
a
(
:
i
−
1
)
,
p
b
(
:
j
)
)
,
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
−
1
)
)
o^*(p^{a(:i-1)},p^{b(:j)}),\,o^*(p^{a(:i)},p^{b(:j-1)})
o∗(pa(:i−1),pb(:j)),o∗(pa(:i),pb(:j−1))计算得到的:
如果
G
^
(
o
∗
(
p
a
(
:
i
−
1
)
,
p
b
(
:
j
)
)
+
p
a
(
i
)
)
>
G
^
(
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
−
1
)
)
+
p
b
(
j
)
)
\hat{G}(o^*(p^{a(:i-1)},p^{b(:j)})+p^{a(i)})>\hat{G}(o^*(p^{a(:i)},p^{b(:j-1)})+p^{b(j)})
G^(o∗(pa(:i−1),pb(:j))+pa(i))>G^(o∗(pa(:i),pb(:j−1))+pb(j)):
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
)
)
=
o
∗
(
p
a
(
:
i
−
1
)
,
p
b
(
:
j
)
)
+
p
a
(
i
)
o^*(p^{a(:i)},p^{b(:j)})=o^*(p^{a(:i-1)},p^{b(:j)})+p^{a(i)}
o∗(pa(:i),pb(:j))=o∗(pa(:i−1),pb(:j))+pa(i)
否则:
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
)
)
=
o
∗
(
p
a
(
:
i
)
,
p
b
(
:
j
−
1
)
)
+
p
b
(
j
)
o^*(p^{a(:i)},p^{b(:j)})=o^*(p^{a(:i)},p^{b(:j-1)})+p^{b(j)}
o∗(pa(:i),pb(:j))=o∗(pa(:i),pb(:j−1))+pb(j)
G ^ ( o ( p a ( : i ) , p b ( : j ) ) ) = k a , b ⋅ xAUC ( o ( p a ( : i ) , p b ( : j ) + p b ( j + 1 : n b ) ) ) + k b , a ⋅ xAUC ( o ( p b : j , p a : i + p a ( i + 1 : n a ) ) ) + λ k ⋅ ∣ xAUC ( o ( p a ( : i ) , p b ( : j ) + p b ( j + 1 : n b ) ) ) − xAUC ( o ( p b ( : j ) , p a ( : i ) ) + p a ( i + 1 : n a ) ) ∣ \hat{G}(o(p^{a(:i)},p^{b(:j)}))=k_{a,b}\cdot\textrm{xAUC}(o(p^{a(:i)},p^{b(:j)}+p^{b(j+1:n^b)}))+k_{b,a}\cdot\textrm{xAUC}(o(p^{b:j},p^{a:i}+p^{a(i+1:n^a)}))+\lambda k\cdot|\textrm{xAUC}(o(p^{a(:i)},p^{b(:j)}+p^{b(j+1:n^b)}))-\textrm{xAUC}(o(p^{b(:j)},p^{a(:i)})+p^{a(i+1:n^a)})| G^(o(pa(:i),pb(:j)))=ka,b⋅xAUC(o(pa(:i),pb(:j)+pb(j+1:nb)))+kb,a⋅xAUC(o(pb:j,pa:i+pa(i+1:na)))+λk⋅∣xAUC(o(pa(:i),pb(:j)+pb(j+1:nb)))−xAUC(o(pb(:j),pa(:i))+pa(i+1:na))∣
这里 G ^ \hat{G} G^计算 xAUC \textrm{xAUC} xAUC时会加上后面组的剩余序列的原因是保证后面组的负样本都在整体序列里,从而能够正确计算前面组的正样本排序高于后面组的负样本的概率。
文中作者给了某一步计算的图例,方便理解:
同时要注意先初始化边缘格子,即
(
0
,
j
)
,
(
i
,
0
)
(0,j),(i,0)
(0,j),(i,0)。显然他们的最优路径只有一条。
整体算法如下如所示:
至此,对于训练集的ordering(融合排序)计算过程结束。但是训练阶段的排序结果并不能直接用于测试阶段的ordering。因此作者提出一种迁移方法来把训练集排序知识迁移到测试阶段。(为什么对测试集不用同样的动态规划方法计算,个人感觉是因为O(N^2)开销太大,不能很好的保证应用时的实时性,对于训练集这种offline的过程对于时间就没那么敏感。
test phrase
为了把训练集的ordering知识迁移到测试集上,作者假设预测的排序得分的分布在训练集上和测试集上是一样的。也就是同一的分带来的排序作用在两个集合中是相同的。基于此,作者提出了一种通过线性插值重计算得分的方法。具体步骤如下:
step1:保持训练集里group a的instances的得分不变,按照融合排序列表里group b的instances的位置来adjust他们的scores,使得整体排序的得分看起来是均匀下降的。比如对于列表
(
p
a
(
1
)
,
p
b
(
1
)
,
p
b
(
2
)
,
p
a
(
2
)
)
(p^{a(1)}, p^{b(1)}, p^{b(2)}, p^{a(2)})
(pa(1),pb(1),pb(2),pa(2)),
p
a
(
1
)
,
p
a
(
2
)
p^{a(1)},p^{a(2)}
pa(1),pa(2)的ranking scores是
0.8
,
0.5
0.8,0.5
0.8,0.5,adjust的
p
b
(
1
)
,
p
b
(
2
)
p^{b(1)},p^{b(2)}
pb(1),pb(2)的得分就应该是
0.7
,
0.6
0.7,0.6
0.7,0.6。
step2:首先按照scores得到group b的order list。然后按照训练集里group b的instances的放缩程度来放缩测试集里的group b的scores。比如对于测试集group b里的某instance,原始得分是
p
t
e
b
(
i
)
p_{te}^{b(i)}
pteb(i),假设对于某训练集的排序序列的原始得分
p
b
(
1
)
,
p
b
(
2
)
p^{b(1)},p^{b(2)}
pb(1),pb(2)(表示排序里最高的一个instance和最低的一个instance)是
0.8
,
0.5
0.8,0.5
0.8,0.5,经过adjust后变成了
0.7
,
0.4
0.7,0.4
0.7,0.4,那么该测试集的样本调整过后的得分
p
^
t
e
b
(
i
)
\hat{p}_{te}^{b(i)}
p^teb(i)在
[
0.4
,
0.7
]
[0.4,0.7]
[0.4,0.7]的分位数应该和
p
t
e
b
(
i
)
p_{te}^{b(i)}
pteb(i)在
[
0.5
,
0.8
]
[0.5,0.8]
[0.5,0.8]里的一样:
0.7
−
p
^
t
e
b
(
i
)
0.7
−
0.4
−
0.8
−
p
t
e
b
(
i
)
0.8
−
0.5
\frac{0.7-\hat{p}_{te}^{b(i)}}{0.7-0.4}-\frac{0.8-p_{te}^{b(i)}}{0.8-0.5}
0.7−0.40.7−p^teb(i)−0.8−0.50.8−pteb(i)。通过求解这个等式得到adjust后的测试集里group b的scores。然后可以根据新的scores得到最终的融合排序。
文中还提出了一些算法的理论命题,比如当
λ
=
0
\lambda=0
λ=0的时候这个动态规划算法能够得到优化目标的全局最优解,当
λ
→
∞
\lambda\rightarrow \infty
λ→∞时,算法的公平性差异的上界是:
Δ
xAUC
≤
max
(
1
n
1
a
,
1
n
1
b
)
Δ
PRF
≤
max
(
n
0
b
n
0
⋅
n
1
a
,
n
0
a
n
0
⋅
n
1
b
)
\Delta \textrm{xAUC}\leq \max(\frac{1}{n^a_1}, \frac{1}{n_1^b})\\ \Delta \textrm{PRF}\leq \max(\frac{n^b_0}{n_0\cdot n^a_1}, \frac{n^a_0}{n_0\cdot n^b_1})
ΔxAUC≤max(n1a1,n1b1)ΔPRF≤max(n0⋅n1an0b,n0⋅n1bn0a)
具体的证明就不细讲了,感兴趣的同学可以阅读原文~