一个洗车店引发的思考:给谁发优惠券好呢?

文章目录

注:本文是论文Unit Selection Based on Counterfactual Logic的一个笔记

一个洗车店的故事

从前有个洗车店,洗车能赚140,打算找到一个合适的公司对其发放40元优惠券。

为了决定选哪个公司,我们需要调查每个公司的情况来做出一个收益较高的选择。有两种调查的方法,一种是随机试验ab test,即在一个公司内部,随机选择一部分人发优惠券,另一部分不发,那么就能得到该公司关于优惠券的使用率的差异,从而可以计算出该公司选择发放优惠券的收益。

另一个方法是观察两个平行世界,在世界A发优惠券,在世界B不发,通过比较这两者的收益差异来决定到底选谁。

一个已知的事实是,公司里面总有4类人:

  1. Complier: 收到优惠券买,没收到不买 r a , r a ′ ′ r_{a} ,r'_{a'} ra​,ra′′​
  2. Always- taker: 收到优惠买,没收到优惠券也买 r a , r a ′ r_{a} ,r_{a'} ra​,ra′​,
  3. Never- taker: 收到优惠不买,没收到优惠也不买 r a ′ , r a ′ ′ r'_{a} ,r'_{a'} ra′​,ra′′​
  4. 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​=argcmax​100∗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​=argcmax​100∗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​=argcmax​100p(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+88262​p(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.

上一篇:佛系每日养生题175. 组合两个表


下一篇:Jackson中常用注解使用示例