F-Learner
总结一下,之前学习的内容:
根据潜在结果,我们可以定义个体 处理效应为两个潜在结果之差:
τ i = Y i ( 1 ) − Y i ( 0 ) \tau_i = Y_i(1) − Y_i(0) τ i = Y i ( 1 ) − Y i ( 0 )
对于连续处理的情况:
τ i = ∂ Y ( t ) \tau_i = \partial Y(t) τ i = ∂ Y ( t )
其中 t t t 为处理变量。
我们之前就提出过,我们永远不可能同时观察到一个人两个结果,我们只能观察到一个。(当然如果有穿梭平行时空的能力,也不是不行)
Y i o b s ( t ) = { Y i ( 1 ) , if t = 1 Y i ( 0 ) , if t = 0 \begin{split}
Y^{obs}_i(t)=
\begin{cases}
Y_i(1), & \text{if } t=1\\
Y_i(0), & \text{if } t=0
\end{cases}
\end{split} Y i o b s ( t ) = { Y i ( 1 ) , Y i ( 0 ) , if t = 1 if t = 0
然后我们就可以进行估计一些因果效应量:
A T E = τ = E [ Y i ( 1 ) − Y i ( 0 ) ] = E [ τ i ] C A T E = τ ( x ) = E [ Y i ( 1 ) − Y i ( 0 ) ∣ X ] = E [ τ i ∣ X ] ATE = \tau = E[Y_i(1) − Y_i(0)] = E[\tau_i] \\
CATE= \tau(x) = E[Y_i(1) − Y_i(0)|X] = E[\tau_i|X] A T E = τ = E [ Y i ( 1 ) − Y i ( 0 )] = E [ τ i ] C A T E = τ ( x ) = E [ Y i ( 1 ) − Y i ( 0 ) ∣ X ] = E [ τ i ∣ X ]
C A T E CATE C A T E 可以让我们看到异质性的处理效应,让我们能够更好的精确到哪些人对处理具有更高的敏感度,而哪些有低的敏感度。(个性化)
我们一般会用线性回归来估计 C A T E CATE C A T E .
y i = β 0 + β 1 t i + β 2 X i + β 3 t i X i + e i . y_i = \beta_0 + \beta_1 t_i + \beta_2 X_i + \beta_3 t_i X_i + e_i. y i = β 0 + β 1 t i + β 2 X i + β 3 t i X i + e i .
C A T E ^ = τ ^ ( x ) = \part y i \part t i = β ^ 1 + β ^ 3 X i \widehat{CATE} = \hat{\tau}(x) = \frac{\part y_i}{\part t_i} = \hat{\beta}_1 + \hat{\beta}_3 X_i C A T E = τ ^ ( x ) = \part t i \part y i = β ^ 1 + β ^ 3 X i
很显然,我们这里总是有一个假设在于,我们的 X i X_i X i 总有线性假设。那,万一不是线性的,那么我们估计的 C A T E ^ \widehat{CATE} C A T E 就会偏离真实值。那么,此时机器学习就可以拿出来用了,因为它可以捕捉非线性关系。比如梯度提升树和神经网络:
y i = M ( X i , T i ) + e i y_i = M(X_i, T_i) + e_i y i = M ( X i , T i ) + e i
但这时候,我们会发现,我们无法直接得到处理效应的估计,因为这个模型输出的是 y i ^ \hat{y_i} y i ^ 的预测,而不是我们 τ ^ ( x i ) \hat{\tau}(x_i) τ ^ ( x i ) 的预测。理想情况下,我们希望使用一种机器学习回归模型,它可以最小化处理效应的均方误差 :
E [ ( τ ( x ) i − τ ^ ( x ) i ) 2 ] = E [ ( Y i ( 1 ) − Y i ( 0 ) − τ ^ ( x ) i ) 2 ] E[(\tau(x)_i - \hat{\tau}(x)_i)^2] = E[(Y_i(1) - Y_i(0) - \hat{\tau}(x)_i)^2] E [( τ ( x ) i − τ ^ ( x ) i ) 2 ] = E [( Y i ( 1 ) − Y i ( 0 ) − τ ^ ( x ) i ) 2 ]
但我们也说过,由于 τ ( x ) i \tau(x)_i τ ( x ) i 是不可观测的,因此我们无法直接针对它优化。但很显然,我们可以通过一些办法,比如通过映射函数的转变来进行目标转换。
目标转换
二元变量
我们先假设是个二元变量开始,然后再推向多元变量
设开展了一项随机实验,a ∗ 100 % a*100 \% a ∗ 100% 的个体解释处理,另 ( 1 − a ) ∗ 100 % (1-a)*100 \% ( 1 − a ) ∗ 100% 的个体没有处理。
我们想的是怎么把处理变量来变换成结果变量 。
也就是说,我们想的是实现这个一个例子:
E [ Y i ∗ ∣ X i = x ] = τ ( x ) i E[Y_i^*|X_i=x] = \tau(x)_i E [ Y i ∗ ∣ X i = x ] = τ ( x ) i
我们现在想解的是这里的 Y i ∗ Y_i^* Y i ∗ 是什么。
让我们倒推回去
E [ Y i ∗ ∣ X i = x ] = τ ( x ) i = E [ Y ( 1 ) i ∣ X i = x ] − E [ Y ( 0 ) i ∣ X i = x ] = a × E [ Y ( 1 ) i ∣ X i = x ] × 1 a − ( 1 − a ) × E [ Y ( 0 ) i ∣ X i = x ] × 1 1 − a = 1 a × E [ Y ( 1 ) i ∣ X i = x ] × E [ T i ∣ X i = x ] − 1 1 − a × E [ Y ( 0 ) i ∣ X i = x ] × E [ ( 1 − T i ) ∣ X i = x ] = 1 a × E [ Y ( 1 ) i ∗ T i ∣ X i = x ] − 1 1 − a × E [ Y ( 0 ) i ∗ ( 1 − T i ) ∣ X i = x ] = E [ 1 a ∗ Y ( 1 ) i ∗ T i − 1 1 − a ∗ Y ( 0 ) i ∗ ( 1 − T i ) ∣ X i = x ] \begin{aligned}
E[Y_i^*|X_i=x] &= \tau(x)_i \\
&= E[Y(1)_i| X_i=x] - E[Y(0)_i| X_i=x] \\
&= a \times E[Y(1)_i| X_i=x] \times \frac{1}{a} - (1-a) \times E[Y(0)_i| X_i=x] \times \frac{1}{1-a} \\
&= \frac{1}{a} \times E[Y(1)_i| X_i=x] \times E[ T_i | X_i=x] - \frac{1}{1-a} \times E[Y(0)_i| X_i=x] \times E[(1-T_i)|X_i=x] \\
&= \frac{1}{a} \times E[Y(1)_i *T_i| X_i=x] - \frac{1}{1-a} \times E[Y(0)_i * (1-T_i)| X_i=x] \\
&= E[\frac{1}{a}*Y(1)_i *T_i - \frac{1}{1-a}*Y(0)_i * (1-T_i)|X_i=x]
\end{aligned} E [ Y i ∗ ∣ X i = x ] = τ ( x ) i = E [ Y ( 1 ) i ∣ X i = x ] − E [ Y ( 0 ) i ∣ X i = x ] = a × E [ Y ( 1 ) i ∣ X i = x ] × a 1 − ( 1 − a ) × E [ Y ( 0 ) i ∣ X i = x ] × 1 − a 1 = a 1 × E [ Y ( 1 ) i ∣ X i = x ] × E [ T i ∣ X i = x ] − 1 − a 1 × E [ Y ( 0 ) i ∣ X i = x ] × E [( 1 − T i ) ∣ X i = x ] = a 1 × E [ Y ( 1 ) i ∗ T i ∣ X i = x ] − 1 − a 1 × E [ Y ( 0 ) i ∗ ( 1 − T i ) ∣ X i = x ] = E [ a 1 ∗ Y ( 1 ) i ∗ T i − 1 − a 1 ∗ Y ( 0 ) i ∗ ( 1 − T i ) ∣ X i = x ]
所以我们知道了:
Y i ∗ = 1 a ∗ Y ( 1 ) i ∗ T i − 1 1 − a ∗ Y ( 0 ) i ∗ ( 1 − T i ) Y_i^* =\frac{1}{a}*Y(1)_i *T_i - \frac{1}{1-a}*Y(0)_i * (1-T_i) Y i ∗ = a 1 ∗ Y ( 1 ) i ∗ T i − 1 − a 1 ∗ Y ( 0 ) i ∗ ( 1 − T i )
又有:
Y i T i = Y ( 1 ) i T i & Y i ( 1 − T i ) = Y ( 0 ) i ( 1 − T i ) Y_i T_i = Y(1)_i T_i \quad \& \quad Y_i (1-T_i) = Y(0)_i (1-T_i) Y i T i = Y ( 1 ) i T i & Y i ( 1 − T i ) = Y ( 0 ) i ( 1 − T i )
所以:
Y i ∗ = 1 a Y i T i − 1 1 − a Y i ( 1 − T i ) = Y i T i − a a ( 1 − a ) \begin{aligned}
Y_i^* &= \frac{1}{a}Y_i T_i - \frac{1}{1-a}Y_i (1-T_i) \\
&=Y_i\frac{T_i-a}{a(1-a)}
\end{aligned} Y i ∗ = a 1 Y i T i − 1 − a 1 Y i ( 1 − T i ) = Y i a ( 1 − a ) T i − a
这样我们就推到了这个变换公式
所以对于之前的
E [ ( τ ( x ) i − τ ^ ( x ) i ) 2 ] = E [ ( Y i ∗ − τ ^ ( x ) i ) 2 ] E[(\tau(x)_i - \hat{\tau}(x)_i)^2] = E[(Y^*_i - \hat{\tau}(x)_i)^2] E [( τ ( x ) i − τ ^ ( x ) i ) 2 ] = E [( Y i ∗ − τ ^ ( x ) i ) 2 ]
我们可以用任何的回归机器学习模型预测 Y i ∗ Y_i^* Y i ∗ 模型输出的就是处理效应的预测。
那么让我们现在考虑不是随机分配 ,那么我们就会用到之前所说的倾向性得分 e ( X i ) e(X_i) e ( X i )
推导过程一样的,我们只需要:
Y i ∗ = Y i T i − e ( X i ) e ( X i ) ( 1 − e ( X i ) ) \begin{aligned}
Y_i^* &=Y_i\frac{T_i-e(X_i)}{e(X_i)(1-e(X_i))}
\end{aligned} Y i ∗ = Y i e ( X i ) ( 1 − e ( X i )) T i − e ( X i )
但需要注意的是,应用目标变换时,我们需要满足条件独立性假设 ( Y 0 , Y 1 ) ⊥ T ∣ X (Y_0,Y_1) \perp T|X ( Y 0 , Y 1 ) ⊥ T ∣ X
当我们用 Y i ∗ Y_i^* Y i ∗ 作为预测去进行机器学习时,实际上这个模型是在估计 τ ( x ) i \tau(x)_i τ ( x ) i ,换句话说,这个模型输出的是 τ ^ ( x ) i \hat{\tau}(x)_i τ ^ ( x ) i
这个看起来很完美,但其也有明显的缺陷:这个变换后的目标是个体处理效应的极其嘈杂的估计,噪声会传导到你的估计中,从而估计的方差很大。但实际应用里,当我们有足够大的样本量时,这个问题就会显得变小了。
多元离散变量
现在假设处理变量不再是二分类变量,而是有多个互斥 取值:
T i ∈ { 0 , 1 , 2 , ⋯ , K } T_i \in \{0,1,2,\cdots,K\} T i ∈ { 0 , 1 , 2 , ⋯ , K }
我们假设 0 0 0 作为控制组,1 , ⋯ , K 1,\cdots,K 1 , ⋯ , K 是不同处理。此时每一个处理都对应一个潜在结果:
Y i ( 0 ) , Y i ( 1 ) , ⋯ , Y i ( K ) Y_i(0),Y_i(1),\cdots,Y_i(K) Y i ( 0 ) , Y i ( 1 ) , ⋯ , Y i ( K )
对于每个处理相对于控制组的条件平均处理效应即:
τ k ( x ) = E [ Y i ( k ) − Y i ( 0 ) ∣ X i = x ] , k = 1 , ⋯ , K \tau_k(x)=E[Y_i(k)-Y_i(0)|X_i=x],\quad k=1,\cdots,K τ k ( x ) = E [ Y i ( k ) − Y i ( 0 ) ∣ X i = x ] , k = 1 , ⋯ , K
如果是处理分配是随机的,并且第 k k k 个处理的分配概率是 p k = P ( T = k ) p_k=P(T=k) p k = P ( T = k ) ,那么二元处理里的目标转换可以推广为:
Y i , k ∗ = Y i ( 1 ( T i = k ) p k − 1 ( T i = 0 ) p 0 ) Y^*_{i,k} =Y_i\left(\frac{\mathbb{1}(T_i=k)}{p_k} -\frac{\mathbb{1}(T_i=0)}{p_0}\right) Y i , k ∗ = Y i ( p k 1 ( T i = k ) − p 0 1 ( T i = 0 ) )
则CATE可以通过目标转化估计为:
E [ Y i , k ∗ ∣ X i = x ] = τ k ( x ) E[Y^*_{i,k}|X_i=x]=\tau_k(x) E [ Y i , k ∗ ∣ X i = x ] = τ k ( x )
如果不是随机分配的处理,则需要把固定概率 p k p_k p k 换成多元处理的倾向得分:
e k ( x ) = P ( T i = k ∣ X i = x ) e_k(x)=P(T_i=k|X_i=x) e k ( x ) = P ( T i = k ∣ X i = x )
此时:
Y i , k ∗ = Y i ( 1 ( T i = k ) e k ( X i ) − 1 ( T i = 0 ) e 0 ( X i ) ) Y^*_{i,k} =Y_i\left(\frac{\mathbb{1}(T_i=k)}{e_k(X_i)} -\frac{\mathbb{1}(T_i=0)}{e_0(X_i)}\right) Y i , k ∗ = Y i ( e k ( X i ) 1 ( T i = k ) − e 0 ( X i ) 1 ( T i = 0 ) )
我们需要满足条件独立性假设和重叠性:
( Y i ( 0 ) , Y i ( 1 ) , ⋯ , Y i ( K ) ) ⊥ T i ∣ X i (Y_i(0),Y_i(1),\cdots,Y_i(K))\perp T_i|X_i ( Y i ( 0 ) , Y i ( 1 ) , ⋯ , Y i ( K )) ⊥ T i ∣ X i
0 < e k ( x ) < 1 0<e_k(x)<1 0 < e k ( x ) < 1
于是跟二元处理变量一样,我们通过推理即可:
E [ Y i , k ∗ ∣ X i = x ] = E [ Y i ( 1 ( T i = k ) e k ( X i ) − 1 ( T i = 0 ) e 0 ( X i ) ) | X i = x ] = E [ Y i ( k ) ∣ X i = x ] − E [ Y i ( 0 ) ∣ X i = x ] = τ k ( x ) \begin{aligned}
E[Y^*_{i,k}|X_i=x] &=E\left[ Y_i\left(\frac{\mathbb{1}(T_i=k)}{e_k(X_i)} -\frac{\mathbb{1}(T_i=0)}{e_0(X_i)}\right) \middle|X_i=x\right]\\
&=E[Y_i(k)|X_i=x]-E[Y_i(0)|X_i=x]\\
&=\tau_k(x)
\end{aligned} E [ Y i , k ∗ ∣ X i = x ] = E [ Y i ( e k ( X i ) 1 ( T i = k ) − e 0 ( X i ) 1 ( T i = 0 ) ) X i = x ] = E [ Y i ( k ) ∣ X i = x ] − E [ Y i ( 0 ) ∣ X i = x ] = τ k ( x )
所以,多元离散变量的目标转换实际上是对每一个处理 k k k 都构造一个新的目标变量 Y i , k ∗ Y^*_{i,k} Y i , k ∗ ,然后分别训练模型:
τ ^ k ( x ) = E ^ [ Y i , k ∗ ∣ X i = x ] \hat{\tau}_k(x)=\widehat{E}[Y^*_{i,k}|X_i=x] τ ^ k ( x ) = E [ Y i , k ∗ ∣ X i = x ]
如果我们目标是为每个人选择最优处理,可以将控制组的效应定义为 0 0 0 ,然后选择:
d ^ ( x ) = arg max k ∈ { 0 , 1 , ⋯ , K } τ ^ k ( x ) \hat{d}(x)=\arg\max_{k\in\{0,1,\cdots,K\}}\hat{\tau}_k(x) d ^ ( x ) = arg k ∈ { 0 , 1 , ⋯ , K } max τ ^ k ( x )
如果不同处理有不同成本 c k c_k c k ,则更合理的是选择净收益最大的处理:
d ^ ( x ) = arg max k ∈ { 0 , 1 , ⋯ , K } { τ ^ k ( x ) − c k } \hat{d}(x)=\arg\max_{k\in\{0,1,\cdots,K\}}\{\hat{\tau}_k(x)-c_k\} d ^ ( x ) = arg k ∈ { 0 , 1 , ⋯ , K } max { τ ^ k ( x ) − c k }
如果我们没有一个明确的控制组,也可以做任意两个处理之间的配对效应(此时需要注意多重检验的问题以及高方差问题):
τ k , l ( x ) = E [ Y i ( k ) − Y i ( l ) ∣ X i = x ] \tau_{k,l}(x)=E[Y_i(k)-Y_i(l)|X_i=x] τ k , l ( x ) = E [ Y i ( k ) − Y i ( l ) ∣ X i = x ]
则对应的目标转换是:
Y i , k , l ∗ = Y i ( 1 ( T i = k ) e k ( X i ) − 1 ( T i = l ) e l ( X i ) ) Y^*_{i,k,l} =Y_i\left(\frac{\mathbb{1}(T_i=k)}{e_k(X_i)}-\frac{\mathbb{1}(T_i=l)}{e_l(X_i)}\right) Y i , k , l ∗ = Y i ( e k ( X i ) 1 ( T i = k ) − e l ( X i ) 1 ( T i = l ) )
需要注意的是,多元处理的目标转换会比二元处理更容易出现高方差 。因为当某个处理组很少时,e k ( X i ) e_k(X_i) e k ( X i ) 会很小,权重会变得很大,模型学到的目标变量就会非常嘈杂。所以在多元处理里,重叠性比二元处理更重要。
连续变量
连续处理变量的问题更麻烦。因为当 T T T 是连续变量时,我们不再是在比较“处理”和“不处理”,而是在比较处理强度发生微小变化时,结果会怎么变 (我们先假设是线性的,但显然这个假设在真实世界里很少满足)。
此时我们估计的是剂量反应函数的导数 :
m ( t , x ) = E [ Y i ( t ) ∣ X i = x ] m(t,x)=E[Y_i(t)|X_i=x] m ( t , x ) = E [ Y i ( t ) ∣ X i = x ]
τ ( t , x ) = ∂ m ( t , x ) ∂ t \tau(t,x)=\frac{\partial m(t,x)}{\partial t} τ ( t , x ) = ∂ t ∂ m ( t , x )
也就是说,连续处理的效应一般应该同时依赖于个体特征 x x x 和当前处理水平 t t t 。只有在处理效应对 t t t 是线性的 、或者我们只关心一个局部线性斜率 时,才可以写成τ ( x ) < s p a n c l a s s = " m d − m e t a " m d − i n l i n e = " s t r o n g " > < / s p a n > \tau(x)<span class="md-meta" md-inline="strong"></span> τ ( x ) < s p an c l a ss = " m d − m e t a " m d − in l in e = " s t r o n g " >< / s p an >
连续变量目标转换是:
Y i ∗ = ( Y i − Y ˉ ) T i − T ˉ σ T 2 Y_i^*=(Y_i-\bar{Y})\frac{T_i-\bar{T}}{\sigma_T^2} Y i ∗ = ( Y i − Y ˉ ) σ T 2 T i − T ˉ
对于这个转化,其适用范围较窄。它可以被理解为在估计一个条件线性模型中的斜率:
E [ Y i ∣ T i = t , X i = x ] = α ( x ) + β ( x ) t E[Y_i|T_i=t,X_i=x]=\alpha(x)+\beta(x)t E [ Y i ∣ T i = t , X i = x ] = α ( x ) + β ( x ) t
此时我们想估计的是
τ ( x ) = β ( x ) \tau(x)=\beta(x) τ ( x ) = β ( x )
如果 T T T 是随机分配的,并且在每个 X = x X=x X = x 的局部区域里都有相同的处理均值和方差,那么:
E [ Y i ∗ ∣ X i = x ] = E [ ( Y i − Y ˉ ) T i − T ˉ σ T 2 | X i = x ] = β ( x ) E[Y^*_i|X_i=x] = E\left[(Y_i-\bar{Y})\frac{T_i-\bar{T}}{\sigma_T^2}\middle|X_i=x\right]=\beta(x) E [ Y i ∗ ∣ X i = x ] = E [ ( Y i − Y ˉ ) σ T 2 T i − T ˉ X i = x ] = β ( x )
直觉上,这个式子就是把条件协方差转成条件斜率:
β ( x ) = C o v ( Y i , T i ∣ X i = x ) V a r ( T i ∣ X i = x ) = ∑ ( Y i − Y ˉ ) ( T i − T ˉ ) ∑ ( T i − T ˉ ) 2 \beta(x)=\frac{Cov(Y_i,T_i|X_i=x)}{Var(T_i|X_i=x)} = \frac{\sum(Y_i- \bar{Y})(T_i - \bar{T})}{\sum (T_i - \bar{T})^2} β ( x ) = V a r ( T i ∣ X i = x ) C o v ( Y i , T i ∣ X i = x ) = ∑ ( T i − T ˉ ) 2 ∑ ( Y i − Y ˉ ) ( T i − T ˉ )
所以,这个做法实际上是把每个样本变成一个局部斜率的嘈杂代理变量,再用机器学习去预测这个代理变量。
如果处理不是随机分配的,就不能直接用 T i − T ˉ T_i-\bar{T} T i − T ˉ 。更合理的写法应该是先残差化处理变量:
μ T ( x ) = E [ T i ∣ X i = x ] \mu_T(x)=E[T_i|X_i=x] μ T ( x ) = E [ T i ∣ X i = x ]
v T ( x ) = E [ ( T i − μ T ( X i ) ) 2 ∣ X i = x ] v_T(x)=E[(T_i-\mu_T(X_i))^2|X_i=x] v T ( x ) = E [( T i − μ T ( X i ) ) 2 ∣ X i = x ]
当然,这里仍然需要满足连续处理的条件独立性假设和重叠性:
Y i ( t ) ⊥ T i ∣ X i , ∀ t Y_i(t)\perp T_i|X_i,\quad \forall t Y i ( t ) ⊥ T i ∣ X i , ∀ t
f T ∣ X ( t ∣ x ) > 0 f_{T|X}(t|x)>0 f T ∣ X ( t ∣ x ) > 0
然后使用:
Y i ∗ = ( Y i − μ Y ( X i ) ) T i − μ T ( X i ) v T ( X i ) Y_i^*=(Y_i-\mu_Y(X_i))\frac{T_i-\mu_T(X_i)}{v_T(X_i)} Y i ∗ = ( Y i − μ Y ( X i )) v T ( X i ) T i − μ T ( X i )
其中:
μ Y ( x ) = E [ Y i ∣ X i = x ] \mu_Y(x)=E[Y_i|X_i=x] μ Y ( x ) = E [ Y i ∣ X i = x ]
那么对于这里的 μ Y ( x ) \mu_Y(x) μ Y ( x ) ,通常我们需要用一个模型去进行额外的估计。
因此,连续变量的目标转换可以作为一个直觉工具,但不能把它当成和二元处理一样标准的、普遍成立的公式。它更适合以下情况:
处理变量近似随机分配,或者混杂已经通过 X X X 控制;
处理效应对 T T T 近似线性;
只想得到 τ ( x ) \tau(x) τ ( x ) 的排序,而不是严格可解释的边际效应数值;
每个 X = x X=x X = x 附近都有足够的处理强度变化,也就是连续处理版本的重叠性。
如果处理效应是非线性的,比如价格从 1 增加到 2 和从 9 增加到 10 的影响完全不同,正如我们上面提到的,此时应该估计,我们不能忽略参数 t t t :
τ ( t , x ) = ∂ E [ Y i ( t ) ∣ X i = x ] ∂ t \tau(t,x)=\frac{\partial E[Y_i(t)|X_i=x]}{\partial t} τ ( t , x ) = ∂ t ∂ E [ Y i ( t ) ∣ X i = x ]
或者先估计完整的剂量反应函数 m ( t , x ) m(t,x) m ( t , x ) ,再对 t t t 求导。
除此之外,这里通过AI搜索文献去寻找更广泛用途的方式去进行目标转换
多元处理的倾向得分和广义倾向得分 。Imbens (2000) 、Imai and van Dyk (2004) 、Hirano and Imbens (2004) 把二元处理的 propensity score 推广到多值、连续或更一般的 treatment regime。核心思想是:二元处理里是一个概率 e ( x ) e(x) e ( x ) ,多元处理里是一组概率 e k ( x ) e_k(x) e k ( x ) ,连续处理里则变成条件密度或 propensity function。
多处理 uplift modeling。Zhao, Fang and Simchi-Levi (2017) 讨论了任意数量处理 和一般响应变量的 uplift 建模;Olaya, Coussement and Verbeke (2020) 系统比较了 multitreatment uplift 的方法;Zhao and Harinen (2020) 进一步把不同处理成本纳入决策。这个方向更关心个体层面的最优 treatment assignment,而不只是估计某一个处理效应。
Doubly robust pseudo-outcome。多元处理下可以先估计每个处理的结果模型 μ k ( x ) = E [ Y ∣ T = k , X = x ] \mu_k(x)=E[Y|T=k,X=x] μ k ( x ) = E [ Y ∣ T = k , X = x ] 和倾向得分 e k ( x ) e_k(x) e k ( x ) ,再构造:
ϕ k = μ ^ k ( X i ) + 1 ( T i = k ) e ^ k ( X i ) ( Y i − μ ^ k ( X i ) ) \phi_k =\hat{\mu}_k(X_i) +\frac{\mathbb{1}(T_i=k)}{\hat{e}_k(X_i)} (Y_i-\hat{\mu}_k(X_i)) ϕ k = μ ^ k ( X i ) + e ^ k ( X i ) 1 ( T i = k ) ( Y i − μ ^ k ( X i ))
然后用:
ϕ k − ϕ 0 \phi_k-\phi_0 ϕ k − ϕ 0
作为更稳健的伪结果去学习 τ k ( x ) \tau_k(x) τ k ( x ) 。它比单纯的目标转换更复杂,但通常方差和偏差性质更好。
R-Learner 和 Double Machine Learning。Nie and Wager (2021) 的 R-Learner 不是直接转换 Y Y Y ,而是先残差化结果和处理 ,再学习异质性处理效应:
min τ ∑ i ( ( Y i − m ^ ( X i ) ) − τ ( X i ) ( T i − e ^ ( X i ) ) ) 2 \min_{\tau}\sum_i\left((Y_i-\hat{m}(X_i))-\tau(X_i)(T_i-\hat{e}(X_i))\right)^2 τ min i ∑ ( ( Y i − m ^ ( X i )) − τ ( X i ) ( T i − e ^ ( X i )) ) 2
对于连续处理,e ^ ( X i ) \hat{e}(X_i) e ^ ( X i ) 可以理解为 μ ^ T ( X i ) \hat{\mu}_T(X_i) μ ^ T ( X i ) 。这个写法适合把连续处理效应理解为一个条件线性斜率;如果要估计完整的 τ ( t , x ) \tau(t,x) τ ( t , x ) ,还需要专门的 continuous-treatment 扩展。
Causal Forest、Generalized Random Forest 和 Orthogonal Random Forest。Athey, Tibshirani and Wager (2019) 的 Generalized Random Forest 可以把问题写成局部矩方程来估计,因此不只适用于二元处理,也可以处理条件平均偏导数等问题。Oprescu, Syrgkanis and Wu (2019) 的 Orthogonal Random Forest 则另外结合正交化思想,用来处理高维控制变量下的离散或连续处理异质性效应。
连续处理的剂量反应函数。Kennedy et al. (2017) 提出了连续处理下的 doubly robust kernel smoothing,用于估计 dose-response curve;Tübbicke (2023) 讨论了用 entropy balancing 估计连续处理的剂量反应函数及其导数;Zhang, Kong and Yang (2025 revision) 则讨论了 continuous treatment 下的 R-Learner。这个方向比简单目标转换更适合非线性连续处理效应。
非线性处理效应
我们在之前的例子都是假定处理效应是线性的,但这种假设往往不合理,处理效应通常会以某种形式呈现饱和(显然,容忍度不可能是无限的)。
这个问题在于弹性或处理效应会随处理水平而变化 。通常而言,我们会选用一些变量转换方法:
比如我们在Pearson关联性分析的时候,其变量需要满足正态分布,这时候我们往往可以通过对数转化来使得变量满足正态分布。这个思想也可以用于非线性处理效应。我们可以通过对数转化或平方根转化等函数转化的方式去分别拟合,通过绘制图像的方式去观察其趋势,最后根据AUUC或者Qini系数去评估模型的优劣。但无论如何,这一步需要做大量的尝试。