uplift建模之元学习器

1. 辛普森悖论

辛普森悖论描述的是,当我们尝试探究两种变量(比如新生录取率与性别)是否具有相关性的时候,会分别对之进行分组研究。然而,在分组比较中都占优势的一方,在总评中有时反而是失势的一方。

我们以新生录取率与性别的关系研究为例,美国一所大学在招生时进行了一项统计,结果如下

学院 女生申请人数 女生录取人数 女生录取率 男生申请人数 男生录取人数 男生录取率 合计申请 合计录取 合计录取率
商学院 100 49 49% 20 15 75% 120 64 53.3%
法学院 20 1 5% 100 10 10% 120 11 9.2%
总计 120 50 42% 120 25 21% 240 75 31.3%

可以发现,无论是在商学院还是在法学院,男生的录取率都是高于女生录取率的,但是在计算的总的录取率时,却发现,女生的录取率高出男生录取率一倍。这个现象就是统计上著名的辛普森悖论(Simpson’s Paradox)

2. 为什么要做因果推断

顾名思义,因果推断就是研究因果关系,通过当前的结果,来发现导致当前结果的原因。例如,在互联网广告场景中,我们在网页上投放了某个智能手机的广告,在接下来的一周时间里,发现该智能手机的流量得到了提升,但是该部分流量到底是不是由于投放了广告带来的,我们就需要通过因果推断来确定。另一个例子是,我们只有1000个购买智能手机的优惠券,要怎么找到对优惠券最敏感的1000个用户呢?即如何找到1000个这样的用户,使得他们在没有优惠券时的购买意愿较低,而在得到优惠券之后的购买意愿显著提高?这就是因果推断需要解决的问题。

3. uplift model

Uplift model是一种用于因果推断的模型,它能够通过分析不同组的用户,来判断哪个组的用户对施加的干预效应产生更明显的回应。uplift 中常用的元学习器(meta learner)方法有:S-learner,T-learner,X-learner,R-learner下面对他们进行逐一介绍。

首先我们假设有如下包含n个实例的数据集

IDID x1x_1 x2x_2 x3x_3 x4x_4 x5x_5 x6x_6 TT YY
00 x0,1x_{0,1} x0,2x_{0,2} x0,3x_{0,3} x0,4x_{0,4} x0,5x_{0,5} x0,6x_{0,6} 0 1
11 x1,1x_{1,1} x1,2x_{1,2} x1,3x_{1,3} x1,4x_{1,4} x1,5x_{1,5} x1,6x_{1,6} 0 0
22 x2,1x_{2,1} x2,2x_{2,2} x2,3x_{2,3} x2,4x_{2,4} x2,5x_{2,5} x2,6x_{2,6} 0 0
\vdots \vdots \vdots \vdots \vdots \vdots \vdots \vdots \vdots
k1k-1 xk1,1x_{k-1,1} xk1,2x_{k-1,2} xk1,3x_{k-1,3} xk1,4x_{k-1,4} xk1,5x_{k-1,5} xk1,6x_{k-1,6} 0 0
kk xk,1x_{k,1} xk,2x_{k,2} xk,3x_{k,3} xk,4x_{k,4} xk,5x_{k,5} xk,6x_{k,6} 1 1
k+1k+1 xk+1,1x_{k+1,1} xk+1,2x_{k+1,2} xk+1,3x_{k+1,3} xk+1,4x_{k+1,4} xk+1,5x_{k+1,5} xk+1,6x_{k+1,6} 1 0
k+2k+2 xk+2,1x_{k+2,1} xk+2,2x_{k+2,2} xk+2,3x_{k+2,3} xk+2,4x_{k+2,4} xk+2,5x_{k+2,5} xk+2,6x_{k+2,6} 1 1
\vdots \vdots \vdots \vdots \vdots \vdots \vdots \vdots \vdots
nn xn,1x_{n,1} xn,2x_{n,2} xn,3x_{n,3} xn,4x_{n,4} xn,5x_{n,5} xn,6x_{n,6} 1 0

其中x1,...,x6x_{1},...,x_{6}为协变量或称为混淆变量;TT为干预变量,即是否对该个体实施了策略干预;YY为因变量或称为响应变量,它反映了在当前策略下,该个体最后的行为结果。例如在前面发放优惠券的例子中,是否对个体发放优惠券就是我们的干预策略,而个体最后是否购买就是最后的行为结果,个体的性别、年龄、文化水平等特征构成混淆变量。

3.1 S-learner

S-learner 中的S是Single的意思,是指只使用一个模型来完成预测。其具体的操作步骤如下:

  • Step1:选择一个基模型(如逻辑回归、XGBoost等),将所有数据和特征(包括所有的协变量xix_{i}和干预变量TT)输入模型,得到预测模型

μ(x,T)=E[YX=x,T=t]\mu(x,T) = \mathbb{E} [Y|X=x,T=t]

  • Step2:将所有个体的干预变量的取值设为0,得到不进行干预时的数据集D0D_0;再将所有个体的干预变量的取值设为1,得到进行干预时的数据集D1D_1。分别将D0D_0D1D_1输入模型,得到两组预测结果μ(x,0)\mu(x,0)μ(x,1)\mu(x,1)。然后计算干预后和干预前的差值,这个值即为uplift增量

τ^S(x)=μ^(x,1)μ^(x,0)\hat\tau_S(x) = \hat\mu (x,1) - \hat\mu(x,0)

S-learner的优点如下:

    1. 简单易实施,S-learner只需要一个预测模型,使得它在实践中易于使用,且避免了多模型的误差累积。
    1. 可以灵活选择模型,S-learner可以与各种预测模型(如线性回归、决策树、神经网络等)配合使用,这使得它在处理各种类型的数据集(如连续、分类、高维度等)时具有很高的灵活性。
    1. 能处理非线性(通过选择模型)和交互效应(通过特征工程),由于S-learner可以使用非线性模型,因此它能够捕捉到处理效应与协变量之间的非线性关系和交互效应。

S-learner的缺点如下:

    1. 可能引入偏差,由于S-learner使用同一个模型来预测处理和对照条件下的结果,如果模型对处理变量的拟合不足或过度拟合,可能会引入偏差。
    1. 处理效应的估计可能不准确:S-learner通过预测每个个体在处理和对照条件下的潜在结果来估计处理效应。然而,由于我们无法同时观察到同一个个体的这两种潜在结果,因此这种估计可能存在不确定性。
    1. 可能忽视异质性处理效应:S-learner通常假设处理效应是均匀的,但在许多情况下,处理效应可能因个体或上下文的不同而有所不同。虽然可以通过添加交互项来部分解决这个问题,但这会增加模型的复杂性和计算负担。

3.2 T-learner

T-learner 中的T是Two的意思,是指使用两个模型来完成预测。其具体的操作步骤如下:

  • Step1:首先我们记原有数据集为DD,将DD分为两个子集D0D_0D1D_1,其中D0D_0包含所有的对照样本(即干预变量T取值为0的样本),D1D_1包含所有进行干预的样本(即干预变量T取值为1的样本)。然后,我们分别基于D0D_0D1D_1训练两个模型μ0(x)\mu_0(x)μ1(x)\mu_1(x),在分别训练模型时,不需要输入干预变量TT对应的列。

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

  • Step2:将原数据集去除干预变量列之后分别输入μ0\mu_{0}μ1\mu_{1}得到两组预测结果μ^0(x)\hat\mu_{0}(x)μ^1(x)\hat\mu_{1}(x),然后做差得到干预后相对干预前的增量

τ^T=μ^0(x)μ^1(x)\hat\tau_{T} = \hat\mu_{0}(x) - \hat\mu_{1}(x)

T-learner的优点:

    1. 可以处理异质性效应:T-Learner能够更好地捕捉异质性处理效应,因为它为每个组别分别建立模型,从而能够单独学习每个状态下的数据模式。
    1. 可以灵活选择模型,可以为实验组和对照组选择最适合其数据特征的模型,这意味着可以针对不同的数据分布选择不同的算法(例如决策树、随机森林、梯度提升机、神经网络等)。
    1. 易于理解和实施:T-Learner的概念直观且易于实施,因为它只需要按照处理状态分割数据集,并分别训练两个模型。

T-learner的缺点:

    1. 数据利用效率低,由于T-Learner为两个组别分别建立模型,每个模型只使用了一部分数据(实验组或对照组),这可能导致模型在数据较少的情况下表现不佳。
    1. 可能的过拟合风险,如果实验组和对照组的样本量不平衡,特别是当其中一组的样本量很小时,相应的模型可能会过拟合,影响处理效应的准确估计。
    1. 计算成本较高,与S-learner相比,T-Learner需要训练两个模型,特别是在使用复杂模型时,会增加计算成本和时间。
    1. 模型不一致,如果实验组和对照组使用了不同的模型类型或参数设置,可能导致两个模型的预测结果不具有可比性,从而影响干预效应估计的准确性。
    1. 协变量平衡问题,如果实验组和对照组在协变量上存在差异,单独建立模型可能无法充分控制这些差异,从而可能导致估计偏差。

3.3 X-learner

X-learner中的X是交叉的意思,它先将干预组的数据放到对照组的模型中,再将对照组的数据放到干预组的模型中,分别得到一组伪标签,然后基于伪标签再进行一次训练,最后利用倾向性得分加权后求平均得到平均干预效应的估计。具体的步骤如下:

  • Step1:首先我们记原有数据集为DD,混淆变量为XX,标签值为YY;现将D,X,YD, X, Y都按照干预变量TT的取值划分为两个子集D0D_0D1D_1X0X_{0}X1X_{1}Y0Y_{0}Y1Y_{1}

  • Step2:对treatment组和control组分别训练模型μ0(x)\mu_{0}(x)μ1(x)\mu_{1}(x)

μ0(x)=E[Y0X=x]μ1(x)=E[Y1X=x]\mu_{0}(x) = \mathbb{E}[Y_{0}|X=x] \\ \mu_{1}(x) = \mathbb{E}[Y_{1}|X=x]

  • Step3:将contro组的特征输入treatment组训练的模型中,即得到control组如果受到干预,会得到的结果;然后用预测结果减去真实标签值,得到uplift值的估计,其含义是control组如果受到干预,会比原来多出的期望值。

D0^=μ^1(X0)Y0\hat{D_{0}} = \hat\mu_{1}(X_{0})-Y_{0}

反之,将treatment组的特征输入control组训练的模型中,即得到treatment组如果没有受到干预,会得到的结果,再用真实标签值减去预测值,得到uplift值得估计,其含义是treatment组如果没有受到干预,会比原来少的期望值

D1^=Y1μ^0(X1)\hat{D_{1}} = Y_{1} - \hat\mu_{0}(X_{1})

  • Step4:然后以D0^\hat{D_{0}}D1^\hat{D_{1}}为目标值,再建立两个预测模型

τ0(x)=E[D0X=x]τ1(x)=E[D1X=x]\tau_{0}(x) = \mathbb{E}[D_{0}|X=x] \\ \tau_{1}(x) = \mathbb{E}[D_{1}|X=x]

  • Step5:利用倾向性得分加权计算最终的uplift估计值

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

这里x是所有个体的特征向量(同时包含对照组和实验组的个体),g(x)是倾向性得分函数。

注:倾向性得分的计算方法如下:

    1. 取出所有个体的特征矩阵XX,干预特征Treatment;选择预测模型,如Logistic和随机森林等。
    1. 将干预特征作为目标值,利用模型对特征矩阵进行预测,得到所有个体的预测得分,即预测的概率值,取值在0-1之间,这个概率值就是倾向性得分。

uplift建模之元学习器
https://www.lihaibao.cn/2024/03/06/uplift建模之元学习器/
Author
Seal Li
Posted on
March 6, 2024
Licensed under