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个实例的数据集
0 | 1 | |||||||
0 | 0 | |||||||
0 | 0 | |||||||
0 | 0 | |||||||
1 | 1 | |||||||
1 | 0 | |||||||
1 | 1 | |||||||
1 | 0 |
其中为协变量或称为混淆变量;为干预变量,即是否对该个体实施了策略干预;为因变量或称为响应变量,它反映了在当前策略下,该个体最后的行为结果。例如在前面发放优惠券的例子中,是否对个体发放优惠券就是我们的干预策略,而个体最后是否购买就是最后的行为结果,个体的性别、年龄、文化水平等特征构成混淆变量。
3.1 S-learner
S-learner 中的S是Single的意思,是指只使用一个模型来完成预测。其具体的操作步骤如下:
- Step1:选择一个基模型(如逻辑回归、XGBoost等),将所有数据和特征(包括所有的协变量和干预变量)输入模型,得到预测模型
- Step2:将所有个体的干预变量的取值设为0,得到不进行干预时的数据集;再将所有个体的干预变量的取值设为1,得到进行干预时的数据集。分别将和输入模型,得到两组预测结果和。然后计算干预后和干预前的差值,这个值即为uplift增量
S-learner的优点如下:
-
- 简单易实施,S-learner只需要一个预测模型,使得它在实践中易于使用,且避免了多模型的误差累积。
-
- 可以灵活选择模型,S-learner可以与各种预测模型(如线性回归、决策树、神经网络等)配合使用,这使得它在处理各种类型的数据集(如连续、分类、高维度等)时具有很高的灵活性。
-
- 能处理非线性(通过选择模型)和交互效应(通过特征工程),由于S-learner可以使用非线性模型,因此它能够捕捉到处理效应与协变量之间的非线性关系和交互效应。
S-learner的缺点如下:
-
- 可能引入偏差,由于S-learner使用同一个模型来预测处理和对照条件下的结果,如果模型对处理变量的拟合不足或过度拟合,可能会引入偏差。
-
- 处理效应的估计可能不准确:S-learner通过预测每个个体在处理和对照条件下的潜在结果来估计处理效应。然而,由于我们无法同时观察到同一个个体的这两种潜在结果,因此这种估计可能存在不确定性。
-
- 可能忽视异质性处理效应:S-learner通常假设处理效应是均匀的,但在许多情况下,处理效应可能因个体或上下文的不同而有所不同。虽然可以通过添加交互项来部分解决这个问题,但这会增加模型的复杂性和计算负担。
3.2 T-learner
T-learner 中的T是Two的意思,是指使用两个模型来完成预测。其具体的操作步骤如下:
- Step1:首先我们记原有数据集为,将分为两个子集和,其中包含所有的对照样本(即干预变量T取值为0的样本),包含所有进行干预的样本(即干预变量T取值为1的样本)。然后,我们分别基于和训练两个模型和,在分别训练模型时,不需要输入干预变量对应的列。
- Step2:将原数据集去除干预变量列之后分别输入和得到两组预测结果和,然后做差得到干预后相对干预前的增量
T-learner的优点:
-
- 可以处理异质性效应:T-Learner能够更好地捕捉异质性处理效应,因为它为每个组别分别建立模型,从而能够单独学习每个状态下的数据模式。
-
- 可以灵活选择模型,可以为实验组和对照组选择最适合其数据特征的模型,这意味着可以针对不同的数据分布选择不同的算法(例如决策树、随机森林、梯度提升机、神经网络等)。
-
- 易于理解和实施:T-Learner的概念直观且易于实施,因为它只需要按照处理状态分割数据集,并分别训练两个模型。
T-learner的缺点:
-
- 数据利用效率低,由于T-Learner为两个组别分别建立模型,每个模型只使用了一部分数据(实验组或对照组),这可能导致模型在数据较少的情况下表现不佳。
-
- 可能的过拟合风险,如果实验组和对照组的样本量不平衡,特别是当其中一组的样本量很小时,相应的模型可能会过拟合,影响处理效应的准确估计。
-
- 计算成本较高,与S-learner相比,T-Learner需要训练两个模型,特别是在使用复杂模型时,会增加计算成本和时间。
-
- 模型不一致,如果实验组和对照组使用了不同的模型类型或参数设置,可能导致两个模型的预测结果不具有可比性,从而影响干预效应估计的准确性。
-
- 协变量平衡问题,如果实验组和对照组在协变量上存在差异,单独建立模型可能无法充分控制这些差异,从而可能导致估计偏差。
3.3 X-learner
X-learner中的X是交叉的意思,它先将干预组的数据放到对照组的模型中,再将对照组的数据放到干预组的模型中,分别得到一组伪标签,然后基于伪标签再进行一次训练,最后利用倾向性得分加权后求平均得到平均干预效应的估计。具体的步骤如下:
-
Step1:首先我们记原有数据集为,混淆变量为,标签值为;现将都按照干预变量的取值划分为两个子集和,和,和。
-
Step2:对treatment组和control组分别训练模型和
- Step3:将contro组的特征输入treatment组训练的模型中,即得到control组如果受到干预,会得到的结果;然后用预测结果减去真实标签值,得到uplift值的估计,其含义是control组如果受到干预,会比原来多出的期望值。
反之,将treatment组的特征输入control组训练的模型中,即得到treatment组如果没有受到干预,会得到的结果,再用真实标签值减去预测值,得到uplift值得估计,其含义是treatment组如果没有受到干预,会比原来少的期望值
- Step4:然后以和为目标值,再建立两个预测模型
- Step5:利用倾向性得分加权计算最终的uplift估计值
这里x是所有个体的特征向量(同时包含对照组和实验组的个体),g(x)是倾向性得分函数。
注:倾向性得分的计算方法如下:
-
- 取出所有个体的特征矩阵,干预特征Treatment;选择预测模型,如Logistic和随机森林等。
-
- 将干预特征作为目标值,利用模型对特征矩阵进行预测,得到所有个体的预测得分,即预测的概率值,取值在0-1之间,这个概率值就是倾向性得分。