因果推断笔记
快手因果推断与实验设计
匹配实际上是模仿RCT :在 RCT 中,理想情况下实验组与对照组中协变量的分布是类似的,因此我们可以直接比较两个组之间的结果。匹配方法也是基于这样的思想来减少或消除混杂因子的影响。
核心要义,就是为每个实验组(T=1)样本,找到一个相近的对照组(T=0)
方法:
最常用的匹配算法是「最近邻匹配」(NNM),基于相似度得分(如PS)选择对照组和实验组中最接近的单元进行匹配,实验组单元可以和一个对照组单元进行匹配,称为成对匹配或 1-1 匹配;也可以匹配到两个对照组,称为 1-2 匹配。
邻居数量的选择是一个权衡,高数量的邻居可能会导致估计的高偏差与低方差,而低数量的邻居会导致低偏差与高方差。
实际上最佳的结构应该是完全匹配的方式,即一个干预组可能对应多个对照组,而一个对照组可能对应一个或多个干预组。
IPTW
先构建X->T的模型,即propensity score
将 e ( x ) e(x) e(x)带入X->Y的模型中作为权重加权
τ ^ = 1 n 1 ∑ i ; t i = 1 y i e ^ ( x i ) − 1 n 0 ∑ i ; t i = 0 y i 1 − e ^ ( x i ) \hat{\tau}=\frac{1}{n_1} \sum_{i ; t_i=1} \frac{y_i}{\hat{e}\left(x_i\right)}-\frac{1}{n_0} \sum_{i ; t_i=0} \frac{y_i}{1-\hat{e}\left(x_i\right)} τ^=n11i;ti=1∑e^(xi)yi−n01i;ti=0∑1−e^(xi)yi
针对以上两个问题,有许多加强的权重定义算法,如Double robust。
1. S-learner
S-learner是将treatment作为特征,所有数据一起训练
该方法不直接建模uplift,X的high dimension可能会导致treatment丢失效果。
2. T-learner
T-learner分别对control和treatment组建模
每个estimator只使用部分数据,尤其当样本不足或者treatment、control样本量差别较大时,模型variance较大(对数据利用效率低);容易出现两个模型的Bias方向不一致,形成误差累积,使用时需要针对两个模型打分分布做一定校准;同时当数据差异过大时(如数据量、采样偏差等),对准确率影响较大。
3. X-learner
X-Learner在T-Learner基础上,利用了全量的数据进行预测,主要解决Treatment组间数据量差异较大的情况。
4. R-learner
5. Class Transformation Method
标签转换:
Z i = Y i T i + ( 1 − Y i ) ( 1 − T i ) Z_i=Y_i T_i+\left(1-Y_i\right)\left(1-T_i\right) Zi=YiTi+(1−Yi)(1−Ti)
假设
τ ( X ) = P T ( Y = 1 ∣ X ) − P C ( Y = 1 ∣ X ) = 2 P ( Z = 1 ∣ X ) − 1 \tau(X)=P^T(Y=1 \mid X)-P^C(Y=1 \mid X)=2 P(Z=1 \mid X)-1 τ(X)=PT(Y=1∣X)−PC(Y=1∣X)=2P(Z=1∣X)−1
优化P(Z=1|X)就相当于优化τ(X),而不再需要对实验组和对照组进行单独建模,这种方法之所以流行是因为它原理简单,并且效果优于差分响应模型。
第一个假设一直是我们强调的很好理解,第二个假设可以通过一些转换操作来解决实验组和对照组的个人倾向不同的问题。最简单的方式就是对数据进行重采样使得数据满足假设,即使不满足也可以通过引入用户倾向分来进行调整,调整后对于CATE的估计值转化为:
Y i ∗ = Y i ( 1 ) T i e ^ ( X i ) − Y i ( 0 ) ( 1 − T i ) ( 1 − e ^ ( X i ) ) Y_i^*=Y_i(1) \frac{T_i}{\hat{e}\left(X_i\right)}-Y_i(0) \frac{\left(1-T_i\right)}{\left(1-\hat{e}\left(X_i\right)\right)} Yi∗=Yi(1)e^(Xi)Ti−Yi(0)(1−e^(Xi))(1−Ti)
传统分类树模型是希望信息增益的方法去解决分类问题。而在uplift tree model中,决策差值的计算方法不再是信息增益,而是不同的对增量uplift建模的计算方法,其中包括了分布散度(KL散度,欧式距离,卡方散度)和CTS。
CIA假设,就是在叶子结点上控制住所有的confounder X后,treatment和outcome要独立。难点在于怎么建立满足CIA的causal tree?tree-based模型可以理解成另类的matching,叶子节点足够小使得两组X分布近似,(Y,T)近似RCT,消除了confounder的影响。
【Uplift】评估方法篇
弹性模型的评测指标AUUC
将实验组和对照组分别按照模型的uplift score降序排列,通过对比相应组内Treatment组和Control组的得分差异实现。
1. uplift curve
f ( t ) = ( Y t T N t T − Y t C N t C ) ( N t T + N t C ) f(t)=\left(\frac{Y_t^T}{N_t^T}-\frac{Y_t^C}{N_t^C}\right)\left(N_t^T+N_t^C\right) f(t)=(NtTYtT−NtCYtC)(NtT+NtC)
x轴为样本位序,y轴为累积增量数量。上方的每条曲线表示按照uplift score降序排列后,累积的增量效果;random直线表示随机排序(随机选择样本执行Treatment时)的增量效果;每条曲线终点相交,表示全量Treatment时的平均增量效果。
曲线中,越高拱的模型效果越好,数值化表示的话可以使用曲线下面积,称为AUUC(Area Under Uplift Curve),即 ∑ t N f ( t ) \sum_t^N f(t) ∑tNf(t)
Question:为什么random是一条直线?如何实现?
重复10次,将所有样本随机打乱,计算对应的累积增量数量。
2. Qini curve
上述Uplift Curve存在一个问题,当Treatment组和Control组样本不一致时,其表达的增量存在偏差。因此对上式做一个缩放修改,相当于以Treatment组的样本量为准,对Control组做一个缩放。
阿里文娱智能营销增益模型技术实践
Didi Food
分发策略
思考: