注:本文是论文Unit Selection Based on Counterfactual Logic的一个笔记
一个洗车店的故事
从前有个洗车店,洗车能赚140,打算找到一个合适的公司对其发放40元优惠券。
为了决定选哪个公司,我们需要调查每个公司的情况来做出一个收益较高的选择。有两种调查的方法,一种是随机试验ab test,即在一个公司内部,随机选择一部分人发优惠券,另一部分不发,那么就能得到该公司关于优惠券的使用率的差异,从而可以计算出该公司选择发放优惠券的收益。
另一个方法是观察两个平行世界,在世界A发优惠券,在世界B不发,通过比较这两者的收益差异来决定到底选谁。
一个已知的事实是,公司里面总有4类人:
- Complier: 收到优惠券买,没收到不买 r a , r a ′ ′ r_{a} ,r'_{a'} ra,ra′′
- Always- taker: 收到优惠买,没收到优惠券也买 r a , r a ′ r_{a} ,r_{a'} ra,ra′,
- Never- taker: 收到优惠不买,没收到优惠也不买 r a ′ , r a ′ ′ r'_{a} ,r'_{a'} ra′,ra′′
- Defier: 收到优惠不买,没收到优惠就买 r a ′ , r a ′ r'_{a} ,r_{a'} ra′,ra′
这里A=a表示收到了优惠券,A=a’表示没有收到优惠券,R=r表示使用了该优惠,R=r’表示没用该优惠,C=c表示公司c.
不妨假设这几类人在公司A的占比是(实际是观测不到的)
Complier 30%
Always- taker 10%
Never- taker 20%
Defier 40%
公司B的占比是(实际是观测不到的)
Complier 20%
Always- taker 5%
Never- taker 65%
Defier 10%
于是,通过随机试验ab test, 我们得到以下两组数据,
那么ab test的优化目标是:
O
b
j
1
=
arg
max
c
100
∗
p
(
r
∣
c
,
d
o
(
a
)
)
−
100
∗
p
(
r
∣
c
,
d
o
(
a
′
)
)
Obj_{1} =\arg\max_{c} 100*p( r|c,do( a)) -100*p( r|c,do( a'))
Obj1=argcmax100∗p(r∣c,do(a))−100∗p(r∣c,do(a′))
其中
p
(
r
∣
c
,
d
o
(
a
)
)
\displaystyle p( r|c,do( a))
p(r∣c,do(a))表示给优惠券继续使用的人数,即该目标想要找到一个群体c,其发放优惠券增加的人数最多。但考虑到发了优惠券还购买的人会存在额外的成本,所以我们还可以将其权重设大一点,于是:
O
b
j
2
=
arg
max
c
100
∗
p
(
r
∣
c
,
d
o
(
a
)
)
−
140
∗
p
(
r
∣
c
,
d
o
(
a
′
)
)
Obj_{2} =\arg\max_{c} 100*p( r|c,do( a)) -140*p( r|c,do( a'))
Obj2=argcmax100∗p(r∣c,do(a))−140∗p(r∣c,do(a′))
最后一种就是考虑平行世界的利润差异:
我们分析下
Complier: 在世界A将赚100元,在世界B将赚0元。
Always- taker: 在世界A将赚100元(假设还有20损耗成本,可能有人拿了优惠券感到真香,以后没优惠券就不买了(这只是个假设,暂且接受吧),于是赚80),在世界B赚140元。
Never- taker: 在世界A将赚0元,在世界B将赚0元。
Defier: 在世界A将赚0元,在世界B将赚140元。
根据这些差异我们可以写出以下目标函数:
O b j 3 = arg max c 100 p ( r a , r a ′ ′ ∣ c ) + ( − 60 ) p ( r a , r a ′ ∣ c ) + ( 0 ) p ( r a ′ , r a ′ ′ ∣ c ) + ( − 140 ) p ( r a ′ , r a ′ ∣ c ) Obj_{3} =\arg\max_{c} 100p( r_{a} ,r'_{a'} |c) +( -60) p( r_{a} ,r_{a'} |c) +( 0) p( r'_{a} ,r'_{a'} |c) +( -140) p( r'_{a} ,r_{a'} |c) Obj3=argcmax100p(ra,ra′′∣c)+(−60)p(ra,ra′∣c)+(0)p(ra′,ra′′∣c)+(−140)p(ra′,ra′∣c)
最后得到的目标如下:
可以发现目标1,2的结论跟目标3是完全相反的。
我们以
O
b
j
1
\displaystyle Obj_{1}
Obj1为例子算一算验证一下,首先
p
(
r
∣
c
=
g
r
o
u
p
1
,
d
o
(
a
)
)
=
262
262
+
88
p
(
r
∣
c
=
g
r
o
u
p
1
,
d
o
(
a
′
)
)
=
175
175
+
175
p( r|c=group_{1} ,do( a)) =\frac{262}{262+88}\\ p( r|c=group_{1} ,do( a')) =\frac{175}{175+175}
p(r∣c=group1,do(a))=262+88262p(r∣c=group1,do(a′))=175+175175
于是
O
b
j
1
=
100
∗
262
262
+
88
−
100
∗
175
175
+
175
=
24.85714
Obj_{1} =100*\frac{262}{262+88} -100*\frac{175}{175+175} =24.85714
Obj1=100∗262+88262−100∗175+175175=24.85714
直觉上,平行世界的结果应该是真的,那为什么随机试验会出错呢?
某种程度上,是我们对这个随机试验做了一个分组,这个分组的操作使得公司这一个confounder没有被截断,从而出现了这种问题。而这个问题有趣的地方在于,由于问题的本身setting(判断那个公司更好),这个分组又是不可避免的,所以必然会出现这种情况。
解决方案
这篇论文提出虽然准确的反事实的结果无法得出,但可以根据试验与观测得到的数据给出一个估计区间,我们可以用这个区间的中位数来代替这一反事实估计结果。
这个区间的实验效果如下图所示,
其中
δ
\delta
δ是下式
argmax
c
β
P
(
r
a
,
r
a
′
′
∣
c
)
+
γ
P
(
r
a
,
r
a
′
∣
c
)
+
θ
P
(
r
a
′
,
r
a
′
′
∣
c
)
+
δ
P
(
r
a
′
,
r
a
′
∣
c
)
\operatorname{argmax}_{c} \beta P\left(r_{a}, r_{a^{\prime}}^{\prime} \mid c\right)+\gamma P\left(r_{a}, r_{a^{\prime}} \mid c\right)+ \theta P\left(r_{a}^{\prime}, r_{a^{\prime}}^{\prime} \mid c\right)+\delta P\left(r_{a}^{\prime}, r_{a^{\prime}} \mid c\right)
argmaxcβP(ra,ra′′∣c)+γP(ra,ra′∣c)+θP(ra′,ra′′∣c)+δP(ra′,ra′∣c)
Defier的盈利。
参考文献
Li, Ang, and Judea Pearl. “Unit Selection Based on Counterfactual Logic.” Proceedings of the Twenty-Eighth International Joint Conference on Artificial Intelligence. 2019.