【Uplift】建模方法篇

https://zhuanlan.zhihu.com/p/362788755

概述

有多种方法可以评估ACE(平均因果效应)或ITE(个体因果效应),这里我们关注的是ITE估计,即利用Uplift Modeling的方法,为每个样本(如用户)分别估计干预/不干预时的结果,得到treatment(干预)想退control(不干预)的uplift(增量)值。增量建模有多种分类方法,既可以按照对增量的直接建模和间接建模分,也可以依据实现方式分为Meta-Learning和Tree-Based等。

参考各个文献,为了便于理解,本文将要整理的方法分为4种来介绍:The Class Transformation Method、Meta-Learning Method、Tree-Based Method、NN-Based Method。

The Class Transformation Method

参考[1],该方法应该归于Meta-Learning Method,这里为了不混淆单列出来。该方法适用于Treatment和Outcome都是二类分类的情况,通过将预测目标做单类的转换,从而实现单模型预测。

首先,考虑随机试验的情况,定义新的目标变量
Z i = Y i o b s W i + ( 1 − Y i o b s ) ( 1 − W i ) Z_{i}=Y_{i}^{o b s} W_{i}+\left(1-Y_{i}^{o b s}\right)\left(1-W_{i}\right) Zi=YiobsWi+(1Yiobs)(1Wi)
此时,当Y=1,W=1或Y=0,W=0时,Z=1。那么,对uplift有
τ ( X i ) = 2 P ( Z i = 1 ∣ X i ) − 1 \tau\left(X_{i}\right)=2 P\left(Z_{i}=1 \mid X_{i}\right)-1 τ(Xi)=2P(Zi=1Xi)1

注:推导过程理解
P ( Z i = 1 ∣ X i ) = P ( Y i = 1 , W i = 1 ∣ X i ) + P ( Y i = 0 , W i = 0 ∣ X i ) P(Z_i=1|X_i)=P(Y_i=1,W_i=1|X_i)+P(Y_i=0,W_i=0|X_i) P(Zi=1Xi)=P(Yi=1,Wi=1Xi)+P(Yi=0,Wi=0Xi)
P ( W i = 1 ∣ X i ) = P ( W i = 0 ∣ X i ) = 1 2 P(W_i=1|X_i)=P(W_i=0|X_i)=\frac{1}{2} P(Wi=1Xi)=P(Wi=0Xi)=21

τ ( X i ) = P ( Y i = 1 ∣ X i , W i = 1 ) − P ( Y i = 1 ∣ X i , W i = 0 ) = P ( Y i = 1 , W i = 1 ∣ X i ) P ( W i = 1 ∣ X i ) − P ( Y i = 1 , W i = 0 ∣ X i ) P ( W i = 0 ∣ X i ) = 2 [ P ( Y i = 1 , W i = 1 ∣ X i ) − P ( Y i = 1 , W i = 0 ∣ X i ) ] = [ P ( Y i = 1 , W i = 1 ∣ X i ) − P ( Y i = 1 , W i = 0 ∣ X i ) ] + [ 1 2 − P ( Y i = 0 , W i = 1 ∣ X i ) − 1 2 + P ( Y i = 0 , W i = 0 ∣ X i ) ] = P ( Z i = 1 ∣ X i ) − P ( Z i = 0 ∣ X i ) = 2 P ( Z i = 1 ∣ X i ) − 1 \tau(X_i)=P(Y_i=1|X_i,W_i=1)-P(Y_i=1|X_i,W_i=0) \\ =\frac{P(Y_i=1,W_i=1|X_i)}{P(W_i=1|X_i)}-\frac{P(Y_i=1,W_i=0|X_i)}{P(W_i=0|X_i)} \\ =2[P(Y_i=1,W_i=1|X_i)-P(Y_i=1,W_i=0|X_i)]\\ =[P(Y_i=1,W_i=1|X_i)-P(Y_i=1,W_i=0|X_i)]\\+[\frac{1}{2}-P(Y_i=0,W_i=1|X_i)-\frac{1}{2}+P(Y_i=0,W_i=0|X_i)]\\ =P(Z_i=1|X_i)-P(Z_i=0|X_i)\\ =2P(Z_i=1|X_i)-1 τ(Xi)=P(Yi=1Xi,Wi=1)P(Yi=1Xi,Wi=0)=P(Wi=1Xi)P(Yi=1,Wi=1Xi)P(Wi=0Xi)P(Yi=1,Wi=0Xi)=2[P(Yi=1,Wi=1Xi)P(Yi=1,Wi=0Xi)]=[P(Yi=1,Wi=1Xi)P(Yi=1,Wi=0Xi)]+[21P(Yi=0,Wi=1Xi)21+P(Yi=0,Wi=0Xi)]=P(Zi=1Xi)P(Zi=0Xi)=2P(Zi=1Xi)1

最后,我们考虑一般情况,适用于非平衡非随机试验的数据,可用任意机器学习算法估计(同CATE):
Y i ∗ = Y i ( 1 ) W i p ^ ( X i ) − Y i ( 0 ) ( 1 − W i ) ( 1 − p ^ ( X i ) ) Y_{i}^{*}=Y_{i}(1) \frac{W_{i}}{\hat{p}\left(X_{i}\right)}-Y_{i}(0) \frac{\left(1-W_{i}\right)}{\left(1-\hat{p}\left(X_{i}\right)\right)} Yi=Yi(1)p^(Xi)WiYi(0)(1p^(Xi))(1Wi)
这里p为倾向性得分,则 E [ Y i ∗ ∣ X i ] = τ ( X i ) E[Y_i^*|X_i]=\tau(X_i) E[YiXi]=τ(Xi),直接对 Y i ∗ Y_i^* Yi建模即可。

注:推导过程理解,考虑随机试验的特殊情况,则与上述随机试验的公式一致

Z i = 1 2 Y i ∗ + ( 1 − W i ) Z_i=\frac{1}{2}Y_i^*+(1-W_i) Zi=21Yi+(1Wi)

2 E [ Z i ∣ X i ] = E [ Y i ∗ ∣ X i ] + 1 2E[Z_i|X_i]=E[Y_i^*|X_i]+1 2E[ZiXi]=E[YiXi]+1

Meta-Learning Method

Meta-Learning方法是指基于Meta-Learner进行Uplift预估,其中Meta-Learner可以是任意的既有预测算法,如LR、SVM、RF、GBDT等。根据Meta-Learner的组合不同,通常分为:S-Learner、T-Learner、X-Learner、R-Learner。

【优点】:利用了既有预测算法的预测能力,方便易实现。

【缺点】:不直接建模uplift,效果打折扣。

S-Learner

“S-”是single的意思,是指使用一个预测模型完成uplift估计。具体步骤包括

  • Step1:基于变量X和干预W训练预测模型

μ ( x , w ) : = E [ Y o b s ∣ X = x , W = w ] \mu(x,w):=\mathbb{E}[Y^{obs}|X=x,W=w] μ(x,w):=E[YobsX=x,W=w]

  • Step2:分别估计干预和不干预时的得分,差值即为增量

τ ^ S ( x ) = μ ^ ( x , 1 ) − μ ^ ( x , 0 ) \hat{\tau}_{S}(x)=\hat{\mu}(x, 1)-\hat{\mu}(x, 0) τ^S(x)=μ^(x,1)μ^(x,0)

  • 评述:

【优点】S-Learner简单直观、直接使用既有预测算法;预测仅依赖一个模型,避免了多模型的误差累积;更多的数据和特征工程对预测准确率有利。

【缺点】但是该方法不直接建模uplift;且需要额外进行特征工程工作(由于模型拟合的是Y,所以若W直接作为一个特征放进去,可能由于对Y的预测能力不足而未充分利用)。

【应用】在因果推断未受关注之前,诸如”优惠券“发放的问题常用该方法,直接建模”对什么人,发放什么面额券,是否会下单“,预测阶段则对User和Coupon交叉组合后进行预测,得到(User,Coupon)组合的下单率,然后再依据预算、ROI或其他约束进行MCKP求解。

T-Learner

”T-“是Two的意思,是指用两个模型分别建模干预、不干预的情况,取差值作为uplift。具体步骤:

  • Step1:对treatment组数据和control组数据分别训练预测模型

μ 0 ( x ) = E [ Y ( 0 ) ∣ X = x ] μ 1 ( x ) = E [ Y ( 1 ) ∣ X = x ] \mu_{0}(x)=\mathbb{E}[Y(0) \mid X=x]\\ \mu_{1}(x)=\mathbb{E}[Y(1) \mid X=x] μ0(x)=E[Y(0)X=x]μ1(x)=E[Y(1)X=x]

  • Step2:两个模型分别打分

τ ^ T ( x ) = μ ^ 1 ( x ) − μ ^ 0 ( x ) \hat{\tau}_{T}(x)=\hat{\mu}_{1}(x)-\hat{\mu}_{0}(x) τ^T(x)=μ^1(x)μ^0(x)

  • 评述:

【优点】T-Learner一样简单直观、直接使用既有预测算法;将不同的数据集中的增量效果转换为模型间的差异,不需要太多的特征工程工作;当有随机试验的数据时该方法作为baseline很方便。

【缺点】该方法存在双模型误差累积问题;同时当数据差异过大时(如数据量、采样偏差等),对准确率影响较大。

X-Learner

”X-“表示交叉的意思,该方法主要解决T-Learner对不同Treatment组合Control组间数据量差异过大情况表现不佳的问题。具体步骤:

  • Step1:对treatment组数据和control组数据分别训练预测模型

μ 0 ( x ) = E [ Y ( 0 ) ∣ X = x ] μ 1 ( x ) = E [ Y ( 1 ) ∣ X = x ] \mu_{0}(x) =\mathbb{E}[Y(0) \mid X=x] \\ \mu_{1}(x) =\mathbb{E}[Y(1) \mid X=x] μ0(x)=E[Y(0)X=x]μ1(x)=E[Y(1)X=x]

  • Step2:计算一组uplift的近似表示的数据集,用treatment组模型预测control组数据,control组模型预测treatment组数据,分别做与Y的差值得到增量的近似

D ~ i 1 : = Y i 1 − μ ^ 0 ( X i 1 ) D ~ i 0 : = μ ^ 1 ( X i 0 ) − Y i 0 \tilde{D}_{i}^{1}:=Y_{i}^{1}-\hat{\mu}_{0}\left(X_{i}^{1}\right) \\ \tilde{D}_{i}^{0}:=\hat{\mu}_{1}\left(X_{i}^{0}\right)-Y_{i}^{0} D~i1:=Yi1μ^0(Xi1)D~i0:=μ^1(Xi0)Yi0

然后,以此为目标再训练两个预测模型,拟合uplift:
τ 1 ( x ) = E [ D 1 ∣ X = x ] τ 0 ( x ) = E [ D 0 ∣ X = x ] \tau_1(x)=E[D^1|X=x]\\ \tau_0(x)=E[D^0|X=x] τ1(x)=E[D1X=x]τ0(x)=E[D0X=x]

  • Step3:预测得到两个近似增量,做加权得到uplift结果,加权函数可用倾向性得分

τ ^ ( x ) = g ( x ) τ ^ 0 ( x ) + ( 1 − g ( x ) ) τ ^ 1 ( x ) \hat{\tau}(x)=g(x) \hat{\tau}_{0}(x)+(1-g(x)) \hat{\tau}_{1}(x) τ^(x)=g(x)τ^0(x)+(1g(x))τ^1(x)

  • 评述:

X-Learner在T-Learner基础上,利用了全量的数据进行预测,主要解决Treatment组间数据量差异较大的情况。但流程相对复杂、计算成本较高,有时还会由于多模型误差累积等问题效果不佳。

另外,不论是分类问题还是回归问题,在 τ ( x ) \tau(x) τ(x)步骤时,都需要使用回归模型来拟合。

  • 理解:对Step3中,若W=1的比例极小,则 g ( x ) g(x) g(x)极小,则 τ ^ 1 \hat{\tau}_1 τ^1的权重更大,即更倾向于使用 D ~ 1 \tilde{D}^1 D~1的结果,也即倾向于control组数据训练的模型。如论文中的示例,示意图如下

在这里插入图片描述

R-Learner

R-Learner的思路是通过将问题转化为定义损失函数(R-loss)的形式进行学习训练,更关注”残差“。该方法原文比较难啃,这里直接列出实现步骤:

  • Step1:通过交叉验证的方式,每次预测一组,得到整个数据集的预测结果 m ^ \hat{m} m^和倾向得分 e ^ \hat{e} e^

e ( x ) = E [ W = 1 ∣ X = x ] m ( x ) = E [ Y = 1 ∣ X = x ] e(x)=E[W=1|X=x]\\ m(x)=E[Y=1|X=x] e(x)=E[W=1X=x]m(x)=E[Y=1X=x]

  • Step2:最小化损失函数,估计增量,其中 q ( i ) q(i) q(i)表示样本i在CV的第几组

L ^ n { τ ( ⋅ ) } = 1 n ∑ i = 1 n [ { Y i − m ^ ( − q ( i ) ) ( X i ) } − { W i − e ^ ( − q ( i ) ) ( X i ) } τ ( X i ) ] 2 \widehat{L}_{n}\{\tau(\cdot)\}=\frac{1}{n} \sum_{i=1}^{n}[\{Y_{i}-\hat{m}^{(-q(i))}(X_{i})\}-\{W_{i}-\hat{e}^{(-q(i))}(X_{i})\} \tau(X_{i})]^{2} L n{τ()}=n1i=1n[{Yim^(q(i))(Xi)}{Wie^(q(i))(Xi)}τ(Xi)]2

  • 注:具体实现时,参考CausalML的实现方式,将损失函数改为

L ^ n { τ ( ⋅ ) } = { W i − e ^ ( − q ( i ) ) ( X i ) } 2 ⋅ 1 n ∑ i = 1 n [ { Y i − m ^ ( − q ( i ) ) ( X i ) } { W i − e ^ ( − q ( i ) ) ( X i ) } − τ ( X i ) ] 2 \widehat{L}_{n}\{\tau(\cdot)\}=\{W_{i}-\hat{e}^{(-q(i))}(X_{i})\}^2 \cdot \frac{1}{n} \sum_{i=1}^{n}[\frac{\{Y_{i}-\hat{m}^{(-q(i))}(X_{i})\}}{\{W_{i}-\hat{e}^{(-q(i))}(X_{i})\}}- \tau(X_{i})]^{2} L n{τ()}={Wie^(q(i))(Xi)}2n1i=1n[{Wie^(q(i))(Xi)}{Yim^(q(i))(Xi)}τ(Xi)]2

即为一个MSE损失的预测任务,注意除了预测目标变换之外,对每个样本要施加相应的权重。

  • 评述:R-Learner相对灵活,但模型效果依赖于 m ^ \hat{m} m^ e ^ \hat{e} e^的估计精度,

Tree-Based Method

基于树的方法,仿照标准CART树依据对信息增益的大小不断选择最优的分裂特征和分裂点,从而实现精确分层的过程。其核心思想是通过设计分裂规则,使得分裂后对uplift的预测更准确。下面介绍三个Tree-Based算法,Uplift-Tree,CausalForest,CTS。

Uplift-Tree

分布散度可以度量两个概率分布之间的差异,因此我们可以将treatment组和control组理解为两个(关于Y的)概率分布,以此为分裂依据,若分裂后差异变大,则说明这个分裂有区分能力且有益于描述Treatment对Outcome的影响。

分裂步骤
  • 首先,计算分布散度 D ( P T ( Y ) : P C ( Y ) ) D(P^{T}(Y): P^{C}(Y)) D(PT(Y):PC(Y)),有下面3种方式,其中 p p p表示treatment组, q q q表示control组, i i i表示取值,如是二分类问题,则 i ∈ { 0 , 1 } i\in\{0,1\} i{0,1}

K L ( P : Q ) = ∑ i p i log ⁡ p i q i E ( P : Q ) = ∑ i ( p i − q i ) 2 χ 2 ( P : Q ) = ∑ i ( p i − q i ) 2 q i \begin{aligned} K L(P: Q) &=\sum_{i} p_{i} \log \frac{p_{i}}{q_{i}} \\ E(P: Q) &=\sum_{i}\left(p_{i}-q_{i}\right)^{2} \\ \chi^{2}(P: Q) &=\sum_{i} \frac{\left(p_{i}-q_{i}\right)^{2}}{q_{i}} \end{aligned} KL(P:Q)E(P:Q)χ2(P:Q)=ipilogqipi=i(piqi)2=iqi(piqi)2

  • 然后,进行分裂点的增益计算:

D g a i n ( A ) = D ( P T ( Y ) : P C ( Y ) ∣ A ) − D ( P T ( Y ) : P C ( Y ) ) D_{g a i n}(A)=D\left(P^{T}(Y): P^{C}(Y) \mid A\right)-D\left(P^{T}(Y): P^{C}(Y)\right) Dgain(A)=D(PT(Y):PC(Y)A)D(PT(Y):PC(Y))

其中, P T , P C P^T,P^C PT,PC分别表示treatment组和control组的概率分布, D ( ⋅ ) D(\cdot) D()表示对分布散度的度量, D ( ⋅ ∣ A ) D(\cdot|A) D(A)表示按照A进行分裂后的度量,有
D ( P T ( Y ) : P C ( Y ) ∣ A ) = ∑ a N ( a ) N D ( P T ( Y ∣ a ) : P C ( Y ∣ a ) ) D\left(P^{T}(Y): P^{C}(Y) \mid A\right)=\sum_{a} \frac{N(a)}{N} D\left(P^{T}(Y \mid a): P^{C}(Y \mid a)\right) D(PT(Y):PC(Y)A)=aNN(a)D(PT(Ya):PC(Ya))

  • 最后,循环进行上述分裂,直到无增量分裂点,或达到样本量、树深度等限制为止。

  • 扩展,引述DiDi的博文中的例子,方便理解树分裂中增益的计算过程

在这里插入图片描述

Normalization

在实际应用中,存在模型偏向于高比例类别的问题(参照标准CART);同时要惩罚分裂后control和treatment比例差异大的问题(这可能代表样本与W分配不独立,除了破坏了随机试验的假设,概率计算也会有问题,如极端情况下一个组内全部是control或treatment组数据)。

因此对散度分布计算加上标准化操作,具体地,计算
I ( A ) = H ( N T N , N C N ) K L ( P T ( A ) : P C ( A ) ) + N T N H ( P T ( A ) ) + N C N H ( P C ( A ) ) + 1 2 \begin{aligned} I(A)=& H\left(\frac{N^{T}}{N}, \frac{N^{C}}{N}\right) K L\left(P^{T}(A): P^{C}(A)\right) \\ &+\frac{N^{T}}{N} H\left(P^{T}(A)\right)+\frac{N^{C}}{N} H\left(P^{C}(A)\right)+\frac{1}{2} \end{aligned} I(A)=H(NNT,NNC)KL(PT(A):PC(A))+NNTH(PT(A))+NNCH(PC(A))+21

J ( A ) = Gini ⁡ ( N T N , N C N ) D ( P T ( A ) : P C ( A ) ) + N T N Gini ⁡ ( P T ( A ) ) + N C N Gini ⁡ ( P C ( A ) ) + 1 2 \begin{aligned} J(A)=& \operatorname{Gini}\left(\frac{N^{T}}{N}, \frac{N^{C}}{N}\right) D\left(P^{T}(A): P^{C}(A)\right) \\ &+\frac{N^{T}}{N} \operatorname{Gini}\left(P^{T}(A)\right)+\frac{N^{C}}{N} \operatorname{Gini}\left(P^{C}(A)\right)+\frac{1}{2} \end{aligned} J(A)=Gini(NNT,NNC)D(PT(A):PC(A))+NNTGini(PT(A))+NNCGini(PC(A))+21
其中,第一部分惩罚分组不平衡问题;第二部分惩罚类别比例过大问题;最后为了避免数值过小导致数值剧烈波动,加个0.5。

最后,标准化后的得分为
K L g a i n ( A ) I ( A ) , E g a i n ( A ) J ( A )  and  χ g a i n 2 ( A ) J ( A ) \frac{K L_{g a i n}(A)}{I(A)}, \quad \frac{E_{g a i n}(A)}{J(A)} \quad \text { and } \quad \frac{\chi_{g a i n}^{2}(A)}{J(A)} I(A)KLgain(A),J(A)Egain(A) and J(A)χgain2(A)

Application

论文中提到一个应用场景,当我们的Outcome有收益 v y v_y vy,我们的Treatment有成本 c c c时,计算一个落到某叶子节点上的样本,执行treatment时的收益为:
− c + ∑ y v y ( P T ( y ∣ l ) − P C ( y ∣ l ) ) -c+\sum_{y} v_{y}\left(P^{T}(y \mid l)-P^{C}(y \mid l)\right) c+yvy(PT(yl)PC(yl))

Pruning

剪枝是为了使模型具有更好的泛化能力。标准决策树的剪枝有多种方法,最简单的则是看剪枝前后对验证集准确率是否有帮助,但在增量建模中该方法不太好实现。

论文中提出了一个度量方法——maximum class probability difference,核心思想是看结点中Treatment组和Control组的差异,如果单独的根节点更大则剪枝。具体步骤如下:

  • Step1:在训练阶段,对每个结点,记录其差异(绝对值)最大的类,以及正负号

y ∗ ( t ) = argmax y ∗ ∣ P T ( y ∗ ∣ t ) − P C ( y ∗ ∣ t ) ∣ y^*(t)=\text{argmax}_{y^*} \left|P^{T}\left(y^{*} \mid t\right)-P^{C}\left(y^{*} \mid t\right)\right| y(t)=argmaxyPT(yt)PC(yt)

s ∗ ( t ) = sgn ⁡ ( P T ( y ∗ ∣ t ) − P C ( y ∗ ∣ t ) ) s^{*}(t)=\operatorname{sgn}\left(P^{T}\left(y^{*} \mid t\right)-P^{C}\left(y^{*} \mid t\right)\right) s(t)=sgn(PT(yt)PC(yt))

  • Step2:在验证阶段,利用Step1计算好的 y ∗ , s ∗ y^*,s^* y,s,以及验证数据计算的概率值,计算叶结点和根节点的得分

d 1 ( r ) = ∑ i = 1 k N ( l i ) N ( r ) s ∗ ( l i ) ( P T ( y ∗ ( l i ) ∣ l i ) − P C ( y ∗ ( l i ) ∣ l i ) ) d 2 ( r ) = s ∗ ( r ) ( P T ( y ∗ ( r ) ∣ r ) − P C ( y ∗ ( r ) ∣ r ) ) \begin{array}{l} d_{1}(r)=\sum_{i=1}^{k} \frac{N\left(l_{i}\right)}{N(r)} s^{*}\left(l_{i}\right)\left(P^{T}\left(y^{*}\left(l_{i}\right) \mid l_{i}\right)-P^{C}\left(y^{*}\left(l_{i}\right) \mid l_{i}\right)\right) \\ d_{2}(r)=s^{*}(r)\left(P^{T}\left(y^{*}(r) \mid r\right)-P^{C}\left(y^{*}(r) \mid r\right)\right) \end{array} d1(r)=i=1kN(r)N(li)s(li)(PT(y(li)li)PC(y(li)li))d2(r)=s(r)(PT(y(r)r)PC(y(r)r))

  • Step3:最后,若 d 1 ( r ) ≤ d 2 ( r ) d_1(r)\le d_2(r) d1(r)d2(r),(或d1-d2<θ),则剪枝
补充:CausalML中可视化图的解释
1. feature_xx >= xxxx:分裂特征和点位
2. impurity:分布散度
3. total_sample:结点中样本量
4. group_sample:结点中分组样本量
5. uplift_score:T和C组内avg(y)的差,注意有经过n_reg参数处理,详情参考CTS论文
6. uplift p_value:假设检验相关,越小越好
7. validation uplift score:从验证集计算出的uplift_score,没有验证集时与5相等
8. mean treatment,control:叶子节点中(纯粹的)组内y值平均

在这里插入图片描述

CausalForest

顾名思义,类比RandomForest,CausalForest是指由多个CausalTree模型融合得到的Forest模型,而对于CausalForest,这里可以是任意单Tree-Based方法。

对于标准的CART树,用叶子节点的Y的均值表示其中样本的结果,这个策略的依据是认为叶子节点 L ( x ) L(x) L(x)足够小,使得结果其中 Y i Y_i Yi近似同分布的。对于CausalTree,我们类比认为叶子节点足够小,使得叶子节点 L ( x ) L(x) L(x)内的 ( Y i , W i ) (Y_i,W_i) (Yi,Wi)对近似取自随机试验。【个人理解:分层分到足够细,近似认为消除了Confounder】,则指定叶子节点的uplift为
τ ^ ( x ) = 1 ∣ { i : W i = 1 , X i ∈ L } ∣ ∑ { i : W i = 1 , X i ∈ L } Y i − 1 ∣ { i : W i = 0 , X i ∈ L } ∣ ∑ { i : W i = 0 , X i ∈ L } Y i \begin{aligned} \hat{\tau}(x)=& \frac{1}{\left|\left\{i: W_{i}=1, X_{i} \in L\right\}\right|} \sum_{\left\{i: W_{i}=1, X_{i} \in L\right\}}^{Y_{i}} \\ &-\frac{1}{\left|\left\{i: W_{i}=0, X_{i} \in L\right\}\right|} \sum_{\left\{i: W_{i}=0, X_{i} \in L\right\}}^{Y_{i}} \end{aligned} τ^(x)={i:Wi=1,XiL}1{i:Wi=1,XiL}Yi{i:Wi=0,XiL}1{i:Wi=0,XiL}Yi
基于不同的样本子集训练多个CausalTree,用均值作为最终的结果
τ ^ ( x ) = B − 1 ∑ b = 1 B τ ^ b ( x ) \hat{\tau}(x)=B^{-1} \sum_{b=1}^{B} \hat{\tau}_{b}(x) τ^(x)=B1b=1Bτ^b(x)

CTS

CTS(Contextual Treatment Selection),是一种Tree-Based的uplift modeling方法,可用于MultiTreatment和General Response Type(分类或回归)的问题。

这里重点介绍其与上述Uplift Tree的区别:

分裂准则:仍是分裂后与分裂前得分之差,区别在于Uplift Tree的得分用的是分布散度,而这里的目标是分裂能够最大化结点内各个Treatment中最大的Y值期望。【个人理解:任务目标是选择何种treatment(包括control组)能带来最大收益,因此分裂出期望最大即可】

这里 Δ μ ( s ) \Delta \mu(s) Δμ(s)表示分裂点 s s s带来的增益; ϕ \phi ϕ表示树结点; t t t表示Treatment编号,共 K K K种;
Δ μ ( s ) = P { X ∈ ϕ l ∣ X ∈ ϕ } max ⁡ t l = 0 , … , K E [ Y ∣ X ∈ ϕ l , T = t l ] + P { X ∈ ϕ r ∣ X ∈ ϕ } max ⁡ t r = 0 , … , K E [ Y ∣ X ∈ ϕ r , T = t r ] − max ⁡ t = 0 , … , K E [ Y ∣ X ∈ ϕ , T = t ] \begin{array}{l} \Delta \mu(s) \\ =P\left\{\mathbf{X} \in \phi_{l} \mid \mathbf{X} \in \phi\right\} \max _{t_{l}=0, \ldots, K} \mathrm{E}\left[Y \mid \mathbf{X} \in \phi_{l}, T=t_{l}\right] \\ +P\left\{\mathbf{X} \in \phi_{r} \mid \mathbf{X} \in \phi\right\} \max _{t_{r}=0, \ldots, K} \mathrm{E}\left[Y \mid \mathbf{X} \in \phi_{r}, T=t_{r}\right] \\ -\max _{t=0, \ldots, K} \mathrm{E}[Y \mid \mathbf{X} \in \phi, T=t] \end{array} Δμ(s)=P{XϕlXϕ}maxtl=0,,KE[YXϕl,T=tl]+P{XϕrXϕ}maxtr=0,,KE[YXϕr,T=tr]maxt=0,,KE[YXϕ,T=t]
uplift score计算

  • 首先,有每个结点的占父节点的比例

p ^ ( ϕ ′ ∣ ϕ ) = ∑ i = 1 N I { x ( i ) ∈ ϕ ′ } ∑ i = 1 N I { x ( i ) ∈ ϕ } \hat{p}\left(\phi^{\prime} \mid \phi\right)=\frac{\sum_{i=1}^{N} \mathbb{I}\left\{\mathbf{x}^{(i)} \in \phi^{\prime}\right\}}{\sum_{i=1}^{N} \mathbb{I}\left\{\mathbf{x}^{(i)} \in \phi\right\}} p^(ϕϕ)=i=1NI{x(i)ϕ}i=1NI{x(i)ϕ}

  • 然后,为了解决单个节点中Treatment比例过少导致条件期望难以估计的问题,这里用父节点加了个正则。

    定义 n t ( ϕ ′ ) n_t(\phi') nt(ϕ)为结点 ϕ ′ \phi' ϕ中第 t t t个treatment的样本量,自定义参数 m i n _ s p l i t min\_split min_split表示结点最小样本数, n _ r e g n\_reg n_reg表示正则强度(一个小正整数), y ^ t ( ϕ ′ ) \hat{y}_t(\phi') y^t(ϕ)表示子结点估计的uplift得分, y ^ t ( ϕ ) \hat{y}_t(\phi) y^t(ϕ)表示父节点估计得分。

 If  n t ( ϕ ′ ) < m i n _ s p l i t , y ^ t ( ϕ ′ ) = y ^ t ( ϕ )  otherwise,  y ^ t ( ϕ ′ ) = ∑ i = 1 N y ( i ) I { x ( i ) ∈ ϕ ′ } I { t ( i ) = t } + y ^ t ( ϕ ) ⋅ n _ r e g ∑ i = 1 N I { x ( i ) ∈ ϕ ′ } I { t ( i ) = t } + n _ r e g \begin{aligned} &\text { If } n_{t}\left(\phi^{\prime}\right)<min\_split ,\hat{y}_{t}\left(\phi^{\prime}\right)=\hat{y}_{t}(\phi)\\ &\text { otherwise, }\\ &\hat{y}_{t}\left(\phi^{\prime}\right)=\frac{\sum_{i=1}^{N} y^{(i)} \mathbb{I}\left\{\mathbf{x}^{(i)} \in \phi^{\prime}\right\} \mathbb{I}\left\{t^{(i)}=t\right\}+\hat{y}_{t}(\phi) \cdot \mathrm{n\_reg}}{\sum_{i=1}^{N} \mathbb{I}\left\{\mathbf{x}^{(i)} \in \phi^{\prime}\right\} \mathbb{I}\left\{t^{(i)}=t\right\}+\mathrm{n\_reg}} \end{aligned}  If nt(ϕ)<min_split,y^t(ϕ)=y^t(ϕ) otherwise, y^t(ϕ)=i=1NI{x(i)ϕ}I{t(i)=t}+n_regi=1Ny(i)I{x(i)ϕ}I{t(i)=t}+y^t(ϕ)n_reg

  • 最后,分裂点 s s s的增量估计如下(对应上述分裂准则),并在每一步取增量最大的分裂点分裂

Δ μ ^ ( s ) = p ^ ( ϕ l ∣ ϕ ) × max ⁡ t = 0 , … , K y ^ t ( ϕ l ) + p ^ ( ϕ r ∣ ϕ ) × max ⁡ t = 0 , … , K y ^ t ( ϕ r ) − max ⁡ t = 0 , … , K y ^ t ( ϕ ) \begin{aligned} \hat{\Delta \mu}(s)=& \hat{p}\left(\phi_{l} \mid \phi\right) \times \max _{t=0, \ldots, K} \hat{y}_{t}\left(\phi_{l}\right) \\ &+\hat{p}\left(\phi_{r} \mid \phi\right) \times \max _{t=0, \ldots, K} \hat{y}_{t}\left(\phi_{r}\right)-\max _{t=0, \ldots, K} \hat{y}_{t}(\phi) \end{aligned} Δμ^(s)=p^(ϕlϕ)×t=0,,Kmaxy^t(ϕl)+p^(ϕrϕ)×t=0,,Kmaxy^t(ϕr)t=0,,Kmaxy^t(ϕ)

终止条件

  • 结点内每个treatment的样本量都少于 m i n _ s p l i t min\_split min_split时终止
  • 不存在能带来非负增益的分裂点时终止
  • 所有样本Y值相同时终止

Forest化:与Random Forest类似,CTS会构建多棵树取均值作为最终的模型,对于每棵树会采用特征子集来训练。

算法伪代码

在这里插入图片描述

NN-Based,DragonNet

基于神经网络的方法比较新,这里简单举一个例子——DragonNet。该方法主要工作是将propensity score估计和uplift score估计合并到一个网络实现。

首先,引述了可用倾向性得分代替X做ATE估计
ψ = E [ E [ Y ∣ g ( X ) , T = 1 ] − E [ Y ∣ g ( X ) , T = 0 ] ] \psi=\mathbb{E}[\mathbb{E}[Y \mid g(X), T=1]-\mathbb{E}[Y \mid g(X), T=0]] ψ=E[E[Yg(X),T=1]E[Yg(X),T=0]]
然后,为了准确预测ATE而非关注到Y预测上,我们应尽可能使用 X X X中与 T T T相关的部分特征。

其中一种方法就是首先训练一个网络用X预测T,然后移除最后一层并接上Y的预测,则可以实现将X中与T相关的部分提取出来(即倾向性得分 g ^ \hat{g} g^相关),并用于Y的预测。

显然上述方法过程繁琐,本文将这个过程合并到了一起。网络结构如图,中间分支用于提取T相关的特征;两侧分支用于做Y的预测,以用于增量估计。损失函数为:
θ ^ = argmin ⁡ θ R ^ ( θ ; X ) ,  where  R ^ ( θ ; X ) = 1 n ∑ i [ ( Q n n ( t i , x i ; θ ) − y i ) 2 + α  CrossEntropy  ( g n n ( x i ; θ ) , t i ) ] \begin{aligned} \hat{\theta} &=\underset{\theta}{\operatorname{argmin}} \hat{R}(\theta ; \boldsymbol{X}), \quad \text { where } \\ \hat{R}(\theta ; \boldsymbol{X}) &=\frac{1}{n} \sum_{i}\left[\left(Q^{\mathrm{nn}}\left(t_{i}, x_{i} ; \theta\right)-y_{i}\right)^{2}+\alpha \text { CrossEntropy }\left(g^{\mathrm{nn}}\left(x_{i} ; \theta\right), t_{i}\right)\right] \end{aligned} θ^R^(θ;X)=θargminR^(θ;X), where =n1i[(Qnn(ti,xi;θ)yi)2+α CrossEntropy (gnn(xi;θ),ti)]

在这里插入图片描述

最后,本文还提出Targeted Regularization等优化方法,这里就略过了,感兴趣可以看下原文。

参考文献

[1]Causal Inference and Uplift Modeling A review of the literature

[2]Metalearners for estimating heterogeneous treatment effects using machine learning

[3]Quasi-Oracle Estimation of Heterogeneous Treatment Effects

[4]Adapting Neural Networks for the Estimation of Treatment Effects

[5]Decision trees for uplift modeling with single and multiple treatments

[6]Estimation and Inference of Heterogeneous Treatment Effects using Random Forests

[7]Uplift Modeling with Multiple Treatments and General Response Types

[8]Causal ML

[9]其他参考资料:https://zhuanlan.zhihu.com/p/358582762

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值