因果推断学习笔记三——Uplift模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因果推断学习笔记三——Uplift 模型
⼀、Uplift 模型
因果推断在互联⽹界应⽤主要是基于Uplift model来预测额外收益提升ROI。
Uplift模型帮助商家计算⼈群营销敏感度,驱动收益模拟预算和投放策略制定,促成营销推⼴效率的最⼤化。
同时如何衡量和预测营销⼲预带来的“增量提升”,⽽不是把营销预算浪费在“本来就会转化”的那部分⼈⾝上,成为智能营销算法最重要的挑战。
举个例⼦ :对⽤户A和⽤户B都投放⼴告,投放⼴告后⽤户A的CVR(转化量/点击量)为5%,⽤户B的CVR为4%,那么是否就给⽤户A投⼴告呢?仅从投放⼴告后的结果来看是这样的。
但如果投放⼴告前⽤户A的CVR为4%,⽤户B的CVR为2%,那么我们就认为⼴告投放本⾝所带来的收益B要⽐A多,所以把⼴告投给⽤户B。
Uplift模型的作⽤就是计算⼈群营销敏感度,具体就是计算每个⽤户的增益,再根据⼴告主设置的预算以及其它限制看是否对该⽤户投放⼴
告。
persuadables: 不发券就不购买、发券才会购买的⼈群,即优惠券敏感⼈群sure thing:⽆论是否发券,都会购买,⾃然转化lost causes:⽆论是否发券都不会购买,这类⽤户实在难以触达到,直接放弃
sleeping dogs:与persuadables相反,对营销活动⽐较反感,不发券的时候会有购买⾏为,但发券后不会再购买。
建模时主要针对persuadables⼈群,并且要避免sleeping dogs⼈群。
如果使⽤reponse model,则难以区分这⼏类⼈群,因为模型只预测是否购买,可能转化的⽤户中persuadable的⽐例相当少,并不是营销中的target。
Uplift模型⽤于预测/估计某种⼲预对个体状态/⾏为的因果效应。
可以形式化为以下等式:
其中,表⽰潜在结果(⽐如转化率,点击率等),表⽰⽤户的特征,表⽰进⾏⼲预,表⽰不进⾏⼲预,应⽤在⼴告营销中就可以形象的表⽰为某⽤户在经过⼴告投放⾏为之后,⽤户发⽣某种⾏为(点击或购买)增加的概率。
τ=i p (Y ∣X ,T =i i i 1)−p (Y ∣X ,T =i i i 0)(1)
Y i X i T =i 1T =i 0
注意到,对于⼀个⽤户,我们只能对他进⾏⼲预或者不⼲预,即只能观测到或,所以对于⼀个个体的增益是观测不到的。
所以我们可以考虑总体的(⼈群的⼦⼈群,即⽤⼀个⼈群的因果效果来表⽰⼀个单个⼈的因果效果),即平均因果效应(Average treatment effect,简记为ATE):
表⽰是否进⾏⼲预,那么可有
详细介绍了在合理的假设下,即在⼀个确定的特征下,⽤户是随机分到treatment组和对照组的,那么式可化为
从⽽可以设计随机化的A/B Test。
⼆、建模
补贴活动提升的购买意愿为,由于我们得不到⼀个⽤户的,所以⽆法得到真正的label,造成监督学习⽆法进⾏。
在缺少真正的情况下,⼀般有三⼤类⽅法来评估:The Class Transformation Method、Meta-Learning Method、Tree-Based Method。
2.1 The Class Transformation Method
该⽅法应该归于Meta-Learning Method,这⾥为了不混淆单列出来。
该⽅法适⽤于Treatment和Outcome都是⼆类分类的情况,通过将预测⽬标做单类的转换,从⽽实现单模型预测。
⾸先,定义新的变量
由于Treatment和Outcome都是⼆类分类,所以,,所以当或时,。
那么对Uplift 有推导:由的定义可知,⽽根据假设有,所以
注意到,,所以倒数第三个等号成
⽴。
T =11T =10τi ATE =E (Y (1)−i Y (0))=i E (Y (1))−i E (Y (0))
i (2)T ∈i {0,1}Y =i obs T Y (1)+i i (1−T )Y (0)i i (3)
X i (2)ATE =E (Y ∣T =i i 1)−E (Y ∣T =i i 0)=E (Y ∣X =i
obs i x ,T =i 1)−E (Y ∣X =i obs i x ,T =i 0)(4)
τ(X )=i P (Y =i 1∣X ,T =i i 1)−P (Y =i 1∣X ,T =i i 0)τi τi τi Z =i Y T +i obs i 1−Y 1−T (i obs )(i )
(5)Y ∈i
obs {0,1}T ∈i {0,1}Y =i obs T =i 0Y =i obs T =i 1Z =i 1τ(X )i τ(X )=i 2P Z =1∣X −(i i )1
(6)
Z i P (Z =i 1∣X )=i P (Y =i 1,T =i 1∣X )+i P (Y =i 0,T =i 0∣X )i P (T =i 1∣X )=i P (T =i 0∣X )=i 21τ(X )=i P (Y =i 1∣X ,T =i i 1)−P (Y =i 1∣X ,T =i i 0)
=−
P (T =1∣X )i i P (Y =1,T =1∣X )i i i P (T =0∣X )i i P (Y =1,T =0∣X )
i i i =2[P (Y =i 1,T =i 1∣X )−i P (Y =i 1,T =i 0∣X )]
i =[P (Y =i 1,T =i 1∣X )−i P (Y =i 1,T =i 0∣X )]i +[−21P (Y =i 0,T =i 1∣X )−i +21
P (Y =i 0,T =i 0∣X )]
i =P (Z =i 1∣X )−i P (Z =i 0∣X )
i =2P (Z =i 1∣X )−i 1
P (Y =i 1,T =i 1∣X )=i P (T =i 1∣X )−i P (Y =i 0,T =i 1∣X )=i −21P (Y =i 0,T =i 1∣X )i
训练和测试过程如下图所⽰。
从实验组和对照组筛选出的⽤户作为正样本,其余的作为负样本。
实际上就是实验组中下单的⽤
户和对照组中未下单的⽤户,因此可以直接将实验组和对照组⽤户合并,使⽤⼀个模型建模,实现了数据层⾯和模型层⾯的打通。
2.2 Meta-Learning Method
Meta-Learning⽅法是指基于Meta-Learner进⾏Uplift预估,其中Meta-Learner可以是任意的既有预测算法,如LR、SVM、RF、GBDT 等。
根据Meta-Learner的组合不同,通常分为:S-Learner、T-Learner、X-Learner、R-Learner。
优点:利⽤了既有预测算法的预测能⼒,⽅便易实现
缺点:不直接建模uplift,效果打折扣
2.2.1 S-Learner
S即Single,S-Learner是指⽤⼀个模型来估计Uplift,即在实验组和对照组样本特征中加⼊⼲预有关的特征,将实验组和对照组的样本特征、Label 合并,训练⼀个模型。
具体步骤为:
1. Step1: 基于特征和⼲预训练预测模型
2. Step2: 分别估计⼲预和不⼲预时的得分,差值即为增量优点:
1. S-Learner简单直观、直接使⽤既有预测算法
2. 预测仅依赖⼀个模型,避免了多模型的误差累积
3. 更多的数据(利⽤了全量数据训练模型)和特征⼯程对预测准确率有利
缺点:
1. 该⽅法不直接建模uplift
2. 需要额外进⾏特征⼯程⼯作(由于模型拟合的是,所以若直接作为⼀个特征放进去,可能由于对的预测能⼒不⾜⽽未充分利⽤)
2.2.2 T-Learner
T即Two,T-Learner是指⽤两个模型来估计Uplift,即⽤两个模型分别建模⼲预、不⼲预的情况,取差值作为Uplift。
具体步骤为:Z =1Z =1T X T μ(x ,t )=E (Y ∣X =obs x ,T =t )
(7)
(x )=τ^S (x ,1)−μ^(x ,0)μ^(8)
Y T Y
1. Step1: 对treatment组数据和control组数据分别训练预测模型
2. Step2: 两个模型分别打分预测时,对每个待预测⽤户都分别⽤两个模型预测⼀下。
优点:
1. T-Learner⼀样简单直观、直接使⽤既有预测算法
2. 将不同的数据集中的增量效果转换为模型间的差异,不需要太多的特征⼯程⼯作
3. 当有随机试验的数据时该⽅法作为baseline很⽅便
缺点:
1. 该⽅法存在双模型误差累积问题
2. 同时当数据差异过⼤时(如数据量、采样偏差等),对准确率影响较⼤
3. 间接计算增量,⽆法对模型进⾏优化
2.2.3 X-Learner
X-Learner算法是在Two Model模型基础上提出的,基于利⽤观察到的样本结果去预估未观察到的样本结果的思想,对增量进⾏近似,同时还会对结果进⾏倾向性权重调整,以达到优化近似结果的⽬的。
具体步骤为:
1. Step1: 对treatment组数据和control组数据分别训练预测模型
2. Step2: ⽤treatment组模型预测control组数据,control组模型预测treatment组数据,分别做与Y的差值得到增量的近似
3. 以此为⽬标再训练两个预测模型,拟合uplift
4. 预测得到两个近似增量,做加权得到uplift结果,加权函数可⽤倾向性得分其中,,可以认为是样本数据集中的⽐例。
所以若的⽐例极⼩,则就很⼩,则的权重更⼤,即更倾向于使⽤control组数据训练的模型。
μ(x )=0E (Y (0)∣X =x )
(9)μ(x )=1E (Y (1)∣X =x )
(10)
(x )=τ^T (x )−μ^1(x )μ^0(11)
μ(x )=0E (Y (0)∣X =x )
(12)μ(x )=1E (Y (1)∣X =x )
(13)
D =0(X )−μ
^10Y 0(14)D =1Y −1(X )μ
^01(15)
τ(x )=0E (D ∣X =0x )
(16)τ(x )=1E (D ∣X =1x )
(17)
(x )=τ^g (x )(x )+τ^0(1−g (x ))(x )τ^1(18)
g (x )=P (T =1∣X =x )T =1T =1g (x )τ^1
优点:
1. 适合实验组和对照组样本数量差别较⼤场景
2. 对于增量的先验知识可以参与建模,并且引⼊权重系数,减少误差(在Step3中,我们得到了两个近似的增量值,并直接对其建模。
如果我们本⾝对业务有⾜够的了解,知道增量的⼀些相关先验知识(线性/⾮线性等),那么这些先验知识是可以参与建模过程并帮助我们提升模型精度的)
缺点:
1. 多模型造成误差累加
2. 流程相对复杂、计算成本较⾼
3. 并没有说明多⼤差别才适⽤X-Learner,我们在实际应⽤中的离线评估部分,X-Learner虽然偶尔表现优异,但并没有持续显著优于
其他模型
2.2.4 R-Learner
R-Learner算法思想不同于Two、Single和X-Learner。
其核⼼思想是通过 Robinson’s transfomation 定义⼀个损失函数,然后通过最⼩化损失函数的⽅法达到对增量进⾏建模的⽬的。
具体步骤为:
1. Step1:通过交叉验证的⽅式,每次预测⼀组,得到整个数据集的预测结果和倾向得分
2. Step2:最⼩化损失函数,估计增量,其中表⽰样本在CV的第⼏组具体实现时,将损失函数改为优点:
1. 灵活且易于使⽤
2. 损失函数可以接深度⽹络等
缺点:
1. 模型精度依赖于和的精度
2.3 Tree-Based Method
传统机器学习模型中,树模型主要的思路就是通过对特征点进⾏分裂,将X划分到⼀个⼜⼀个subspace中,这与补贴场景下,希望找到某⼀⼩部分增量很⾼的⽤户的想法⼏乎是完美重合。
传统分类树模型是希望通过信息理论(information theory)中的信息熵等思想,⽤计算信息增益的⽅法去解决分类问题。
⽽在uplift tree model中,其本质也还是想要通过衡量分裂前后的变量差值去决策是否分裂节点,不过这⾥的这个决策差值的计算⽅法不再是信息增益(information gain),⽽是不同的直接对增量uplift建模的计算⽅法,其中包括了利⽤分布散度对uplift建模和直接对uplift建模。
m ^e ^
e (x )=E [W =1∣X =x ]
(19)m (x )=E [Y =1∣X =x ]
(20)
q (i )i {τ(⋅)}=L n [{Y −n 1i =1∑n i (X )}−m ^(−q (i ))i {W −i (X )}τ(X )]e ^(−q (i ))i i 2
(21)
{τ(⋅)}=L n [−n 1i =1∑n {W −(X )}i e ^(−q (i ))i {Y −(X )}i m
^(−q (i ))i τ(X )]⋅i 2{W −i (X )}e ^(−q (i ))i 2(22)
m ^e ^
下⾯介绍三个Tree-Based算法,Uplift-Tree,CausalForest,CTS。
2.3.1 Uplift-Tree
分布散度是⽤来度量两个概率分布之间差异性的值,当两个分布相同时,两个离散分布的散度为⾮负且等于零。
我们可以把实验组和对照组理解为两个概率分布,然后利⽤分布散度作为⾮叶节点分裂标准,最⼤化实验组和对照组的样本类别分布之间的差异,减少样本不确定度。
计算分布散度,常见的分布散度有KL 散度 (Kullback-Leibler divergence)、欧式距离 (Squared Euclidean distance) 和卡⽅散度(Chi-squared divergence),对应着下⾯三种⽅式
其中表⽰treatment组,表⽰control组,表⽰取值,如是⼆分离问题,则上述三种分布散度有个共同点,当两个概率分布相同时,值为0;当两个概率分布差异越⼤时,值越⼤。
欧式距离的优点是对称,且值更稳定。
分布散度还有个特点:通过公式可以推导,当结点中对照组数据为空时,KL散度会退化为决策树分裂准则中的信息增益;欧式距离和卡⽅散度将会退化为基尼指数。
⽽当结点中实验组数据为空时,欧式距离将会化为基尼指数。
这也是该类分裂准则的优点之⼀。
D (P (Y ):T P (Y ))C KL (P :Q )=p log i ∑i q i p i (23)
E (P :Q )=p −q i ∑(i i )2(24)
χ(P :2Q )=i ∑q i p −q (i i )
2(25)
p q i i ∈{0,1}
其模型主要构造流程为:
举个例⼦ :
剪枝:
剪枝是为了使模型具有更好的泛化能⼒。
标准决策树的剪枝有多种⽅法,最简单的则是看剪枝前后对验证集准确率是否有帮助,但在增量建模中该⽅法不太好实现。
论⽂中提出了⼀个度量⽅法——maximum class probability difference,核⼼思想是看结点中Treatment组和Control组的差异,如果单独的根节点更⼤则剪枝。
具体步骤如下:Step1: 在训练阶段,对每个结点,记录其差异(绝对值)最⼤的类,以及正负号
Step2: 在验证阶段,利⽤Step1计算好的,,以及验证数据计算的概率值,计算叶结点和根节点的得分Step3: 最后,若,则进⾏剪枝y (t )=∗arg P y ∣t −P y ∣t y ∗max ∣∣T (∗)C (∗)∣∣(26)
s (t )=∗sgn P y ∣t −P y ∣t (T (∗)C (∗))
(27)
y ∗s ∗d (r )=1s l P y l ∣l −P y l ∣l i =1∑k N (r )N l (i )
∗(i )(T (∗(i )i )C (∗(i )i ))(28)
d (r )=2s (r )P y (r )∣r −P y (r )∣r ∗(T (∗)C (∗))
(29)
d (r )≤1d (r )2
2.3.2 CausalForest
顾名思义,类⽐RandomForest,CausalForest是指由多个CausalTree模型融合得到的Forest模型,⽽对于CausalForest,这⾥可以是任意单Tree-Based⽅法。
分层分到⾜够细,近似认为消除了Confounder,则指定叶⼦节点的Uplift为
基于不同的样本⼦集训练多个CausalTree,⽤均值作为最终的结果
2.3.3 CTS
CTS(Contextual Treatment Selection),是⼀种Tree-Based的uplift modeling⽅法,可⽤于MultiTreatment和General Response Type(分类或回归)的问题。
不同于分布散度,在该标准下,我们会直接最⼤化每个节点上实验组和对照组之间label期望的差值(可以理解为该节点上样本的Uplift值),并以此来分裂节点。
CTS树具体构造流程为:
相⽐于meta-learner,uplift下树模型由于往往是直接对uplift进⾏建模和利⽤特征直接对⼈群进⾏切分,因此模型精度往往⽐较⾼⼀些。
但是在实际应⽤中,还是需要要注意树模型的收敛性以及它的泛化能⼒。
三、评估
常⽤分类和回归算法,可以通过 AUC、准确率和 RMSE 等去评估模型的好坏。
⽽由于Uplift Model 中不可能同时观察到同⼀⽤户在不同⼲预策略下的响应,即⽆法获取⽤户真实增量, 我们也就⽆法直接利⽤上述评价指标去衡量模型的好坏。
因此,Uplift Model 通常都是通过划分⼗分位数来对齐实验组和对照组数据,去进⾏间接评估。
常⽤的评估⽅ 法有 Qini 曲线、AUUC 等。
3.1 Qini curve
Qini 曲线是衡量 Uplift Model 精度⽅法之⼀,通过计算曲线下的⾯积,类似 AUC 来评价模型的好坏。
其计算流程如下:
(x )=τ^−i :W =1,X ∈L ∣{i i }∣1i :W =1,X ∈L {i i }∑Y i i :W =0,X ∈L ∣{i i }∣1i :W =0,X ∈L {i i }∑Y i (30)
(x )=τ^B (x )−1b =1∑B τ^b (31)
(1)在测试集上,将实验组和对照组分别按照模型预测出的增量由⾼到底排序,根据⽤户数量占实验组和对照组⽤户数量的⽐例,将实验组和对照组分别划分为⼗份,分别是
Top10%, 20%, . . . , 100%。
(2) 计算Top10%,20%,…,100%的Qini系数,⽣成Qini曲线数据(Top10%,Q(Top10%)),
(…,…), (Top100%, Q(Top100%))。
Qini 系数定义如下:
其中,⽤户下单是指输出结果为1
可以看出,Qini 系数分母是实验组和对照组的总样本量,如果实验组和对照组⽤户数量差别⽐较⼤,结果将变得不可靠。
3.2 AUUC
AUUC(Area Under the Uplift Curve) 的计算流程与 Qini 曲线的计算流程⼀样,计算前 10%、20%、. . . 、100% 的指标,绘制曲线,
然后求曲线下的⾯积,衡量模型的好坏。
不同是 AUUC 指标计算⽅法与 Qini 指标计算不同,AUUC 指标定义如下:
与 Qini 指标含义相同,当 i 取10% 时,表⽰实验组前 10% ⽤户数量,表⽰对照组前 10% ⽤户数量。
可以看出,AUUC 指标计算⽅法可以避免实验组和对照组⽤户数量差别较⼤导致的指标不可靠问题。
值得注意的是,当分桶时,对照组边界点预估出的增量与实验组边界点的预估值有较⼤差别时候,以上的两个评估指标似乎都显得不那么可
靠了。
因此在实际中,我们使⽤的往往是AUUC 另外的⼀种计算⽅法:
3.3 如何理解离线指标AUUC ?
AUUC是⼀个很重要且奇怪的指标。
说重要,是因为它⼏乎是Uplift Model在离线阶段唯⼀⼀个直观的,可解释的评估模型优劣的指标。
说奇怪,是因为它虽然本质上似乎借鉴了分类模型评价指标AUC的⼀些思想,但是习惯了AUC的算法⼯程师们在初次接触的时候⼀定会被它搞得有点迷糊。
作为在分类模型评估上的标杆,AUC的优秀不⽤过多赘述。
其中最优秀的⼀点是它的评价结果稳定到可以超越模型和样本本⾝⽽成⽴,只要是分类问题,AUC0.5是随机线,0.6的模型还需要迭代⼀下找找提升的空间,0.6-0.8是模型上线的标准,⽽0.9以上的模型就需要考虑⼀下模型是否过拟合和是否有未知强相关特征参与了模型训练。
⼀法抵万法,我们可以抛开特征,样本和模型构建的细节⽽直接套⽤这套准则。
然⽽这个特点对于AUUC就完全是奢望了。
通过AUUC的公式可以看出,AUUC最终形成的指标的绝对值⼤⼩是取决于样本的⼤⼩的。
也就是说,在⼀套测试样本上,我们的AUUC可能是0到1W,⽽换了⼀套样本,这个值可能就变成了0到100W。
这使得不同测试样本之间模型的评估变为了不可能。
也使得每次模型离线的迭代的前提必须是所有模型都使⽤同⼀套测试样本。
当我们训练完⼀个新的模型,跑出⼀个40万的auuc,我们完全⽆从得知这个值背后代表着模型精度如何,我们只能拿出旧的模型在同样测试集上跑出auuc然后相互⽐较。
这⽆疑让整个训练迭代过程变得更痛苦了⼀点。
n (i )t n (i )c。