uplift model的理论与实践

文章目录

    • Models
      • Matching
      • Weighting
      • Meta-learner
      • Tree-based
      • DML
      • NN-based
    • 模型评估
      • 离线
      • 线上AB实验
    • 工业实践
      • 业务背景
      • 实践步骤


因果推断笔记
快手因果推断与实验设计

Models

Matching

匹配实际上是模仿RCT :在 RCT 中,理想情况下实验组与对照组中协变量的分布是类似的,因此我们可以直接比较两个组之间的结果。匹配方法也是基于这样的思想来减少或消除混杂因子的影响。

核心要义,就是为每个实验组(T=1)样本,找到一个相近的对照组(T=0)

方法:

  • 利用PS倾向性得分( e ( x ) = Pr ⁡ ( T = 1 ∣ X = x ) e(x)=\operatorname{Pr}(T=1 \mid X=x) e(x)=Pr(T=1X=x)),直接用欧式距离进行计算,PS + Matching,即PSM
  • 利用一些用户属性信息,找到T=1下,用户属性比较接近的T=0的人群

最常用的匹配算法是「最近邻匹配」(NNM),基于相似度得分(如PS)选择对照组和实验组中最接近的单元进行匹配,实验组单元可以和一个对照组单元进行匹配,称为成对匹配或 1-1 匹配;也可以匹配到两个对照组,称为 1-2 匹配。

邻居数量的选择是一个权衡,高数量的邻居可能会导致估计的高偏差与低方差,而低数量的邻居会导致低偏差与高方差。

实际上最佳的结构应该是完全匹配的方式,即一个干预组可能对应多个对照组,而一个对照组可能对应一个或多个干预组。

Weighting

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=1e^(xi)yin01i;ti=01e^(xi)yi

  • 问题1: IPTW 估计的正确性高度依赖于倾向评分估计的正确性,倾向评分的轻微错误会导致 ATE 的较大偏差
  • 问题2:当估计的倾向评分较小时,估计器可能会不稳定,如果任意一项干预分配的可能性较小,则用于估计倾向评分的逻辑回归模型可能会在尾部附近不稳定,从而导致 IPW 估计器的不稳定

针对以上两个问题,有许多加强的权重定义算法,如Double robust。

Meta-learner

1. S-learner

S-learner是将treatment作为特征,所有数据一起训练

  • step1: μ ( T , X ) = E [ Y ∣ T , X ] \mu(T, X)=E[Y \mid T, X] μ(T,X)=E[YT,X]
  • step2: τ ^ = 1 n ∑ i ( μ ^ ( 1 , X i ) − μ ^ ( 0 , X i ) ) \hat{\tau}=\frac{1}{n} \sum_i\left(\hat{\mu}\left(1, X_i\right)-\hat{\mu}\left(0, X_i\right)\right) τ^=n1i(μ^(1,Xi)μ^(0,Xi))

该方法不直接建模uplift,X的high dimension可能会导致treatment丢失效果。

2. T-learner

T-learner分别对control和treatment组建模

  • step1: μ 1 ( X ) = E [ Y ∣ T = 1 , X ] μ 0 ( X ) = E [ Y ∣ T = 0 , X ] \mu_1(X)=E[Y \mid T=1, X] \quad \mu_0(X)=E[Y \mid T=0, X] μ1(X)=E[YT=1,X]μ0(X)=E[YT=0,X]
  • step2: τ ^ = 1 n ∑ i ( μ ^ 1 ( X i ) − μ 0 ^ ( X i ) ) \hat{\tau}=\frac{1}{n} \sum_i\left(\hat{\mu}_1\left(X_i\right)-\hat{\mu_0}\left(X_i\right)\right) τ^=n1i(μ^1(Xi)μ0^(Xi))

每个estimator只使用部分数据,尤其当样本不足或者treatment、control样本量差别较大时,模型variance较大(对数据利用效率低);容易出现两个模型的Bias方向不一致,形成误差累积,使用时需要针对两个模型打分分布做一定校准;同时当数据差异过大时(如数据量、采样偏差等),对准确率影响较大。

3. X-learner

X-Learner在T-Learner基础上,利用了全量的数据进行预测,主要解决Treatment组间数据量差异较大的情况。

  • step1: 对实验组和对照组分别建立两个模型 μ ^ 1 \hat \mu_1 μ^1 μ ^ 0 \hat \mu_0 μ^0
    D 0 = μ ^ 1 ( X 0 ) − Y 0 D 1 = Y 1 − μ ^ 0 ( X 1 ) \begin{aligned} &D_0=\hat{\mu}_1\left(X_0\right)-Y_0 \\ &D_1=Y_1-\hat{\mu}_0\left(X_1\right) \end{aligned} D0=μ^1(X0)Y0D1=Y1μ^0(X1)
  • step2: 对求得的实验组和对照组增量D1和 D 0 D 0 D0 建立两个模型 τ ^ 1 \hat{\tau}_1 τ^1 τ ^ 0 \hat{\tau}_0 τ^0
    τ ^ 0 = f ( X 0 , D 0 ) τ ^ 1 = f ( X 1 , D 1 ) \begin{aligned} &\hat{\tau}_0=f\left(X_0, D_0\right) \\ &\hat{\tau}_1=f\left(X_1, D_1\right) \end{aligned} τ^0=f(X0,D0)τ^1=f(X1,D1)
  • step3: 引入倾向性得分模型 e ( x ) e(x) e(x) 对结果进行加权,求得增量。
    e ( x ) = P ( W = 1 ∣ X = x ) τ ^ ( x ) = e ( x ) τ ^ 0 ( x ) + ( 1 − e ( x ) ) τ ^ 1 ( x ) \begin{aligned} &e(x)=P(W=1 \mid X=x) \\ &\hat{\tau}(x)=e(x) \hat{\tau}_0(x)+(1-e(x)) \hat{\tau}_1(x) \end{aligned} e(x)=P(W=1X=x)τ^(x)=e(x)τ^0(x)+(1e(x))τ^1(x)

4. R-learner

5. Class Transformation Method

uplift model的理论与实践_第1张图片

标签转换:
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+(1Yi)(1Ti)

假设

  • 用户特征和干预策略相互独立, X ⊥ T X \perp T XT
  • 用户被分到实验组和对照组的概率一致,P(T)=P©=0.5

τ ( 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=1X)PC(Y=1X)=2P(Z=1X)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)TiYi(0)(1e^(Xi))(1Ti)

Tree-based

传统分类树模型是希望信息增益的方法去解决分类问题。而在uplift tree model中,决策差值的计算方法不再是信息增益,而是不同的对增量uplift建模的计算方法,其中包括了分布散度(KL散度,欧式距离,卡方散度)和CTS

uplift model的理论与实践_第2张图片

CIA假设,就是在叶子结点上控制住所有的confounder X后,treatment和outcome要独立。难点在于怎么建立满足CIA的causal tree?tree-based模型可以理解成另类的matching,叶子节点足够小使得两组X分布近似,(Y,T)近似RCT,消除了confounder的影响。

DML

NN-based

TARNet
uplift model的理论与实践_第3张图片

模型评估

【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)=(NtTYtTNtCYtC)(NtT+NtC)
uplift model的理论与实践_第4张图片
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组做一个缩放。

线上AB实验

工业实践

阿里文娱智能营销增益模型技术实践
Didi Food

业务背景

  1. 目的:识别我们想要的营销敏感人群,从而在成本有限的情况下最大化营销的总产出
    uplift model的理论与实践_第5张图片
  • 左上角人群的购买状况在干预后发生了正向变化,这类人群是我们真正想要触达的用户,即营销敏感人群
  • 第2类和第3类,在干预前后的购买状况没有变化,所以预算花费可能是浪费
  • 右下角比较特殊,对营销是反感的,所以我们应该极力避免触达
  1. Response model和Uplift model的区别是什么?
  • response model:预测X和Y的correlation,即看到广告后的行为,无法区分自然转化和营销敏感人群
  • uplift model:估计X和Y的causation,即因为广告的行为,定位营销敏感人群
  1. 指标:补贴问题中最核心和最关键的一点是补贴这个行为需要付出【成本】,其使用效率作为一个核心指标,也就是所谓的「ROI」。
    在这里插入图片描述

实践步骤

分发策略

  • 贪心策略:按照券值面额从低到高,为每个券类别计算可支配数量,然后对用户池所有用户按照预估的Uplift值和可发放数量倒排截断,并将分配完毕的用户从备选用户池中移除。这样一个用户如果在各种券类别下uplift都很高时,我们将会优先为他/她配置券值较低的补贴券。简单明了,解释性强,但在自由度更高情况下,显然不能达到全局最优。
  • 整数规划
    uplift model的理论与实践_第6张图片

思考

  • 多场景联合?多任务学习?
  • 长期利益?

你可能感兴趣的:(推荐系统,python,开发语言)