智能营销增益(Uplift Modeling)模型——模型介绍(一)
作者:互联网
文章目录
1 Uplift Modeling与reponse model模型的差异
Uplift Modeling在智能营销中非常重要,一般来说个性化营销人群中存在四类:
- persuadables不发券就不购买、发券才会购买的人群,即优惠券敏感人群
- sure thing:无论是否发券,都会购买,自然转化
- lost causes:无论是否发券都不会购买,这类用户实在难以触达到,直接放弃 sleeping
- dogs:与persuadables相反,对营销活动比较反感,不发券的时候会有购买行为,但发券后不会再购买。
还有一个比较搞笑的版本:
- 不管是否看广告都会买什么的人(Sure Things)
- 仅在有广告的情况下才购买的人(Persuadables)
- 无论如何都不买的人(Lost Causes)
- 本来买,但是看了广告后不买的人(Sleeping Dogs)
1.1 增益模型与响应模型的差异
在【智能营销增益模型(Uplift Modeling)的原理与实践】一文中提到:
购买转化导向(reponse model)的模型,目标人群为是否购买,但是该模型不能告诉我们:这批人是否因为发放优惠券而产生购买。
也就是无法区分persuadables
和sure things
人群,而且在这个建模过程中其实存在:
优惠券 -> 购买
,需要探讨因果关系的命题。
这里来看阿里文娱在 【阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践】一文中也提及两者的差异:
按照以往的经验和直觉,可能会向第二类用户群投放广告,因为其转换率 是最高的,但这个结论是对的吗?
经过进一步分析,除了广告曝光转化率 之外,我们还能知道这两类用户群体在没有广告触达情况下的自然转化率, 从而推算出广告所带来的增量。
比如第一类用户的广告转化率虽然低,但 在没有广告触达情况下的转化率更低,即广告所带来的增量反而是比第二 个用户更高的,而我们要最大化总体的转化率其实等价于最大化广告的增 量,按照这个逻辑,我们应该向第一个用户投放广告。
也就是说 Response Model 很有可能会误导我们做出错误的决策,Uplift Model 和 Response Model 之所以有差异,主要在于两个模型的预测目标不一样。
1.2 增益模型与响应模型的混淆
当然,现在也有非常多的做法,将两者混淆在一起。
在【智能营销增益模型(Uplift Modeling)的原理与实践】一文中提到 优惠券发放Demo的案例,简单来看看:
这是一次优惠券发放活动,对用户以短信方式发放5折优惠券,本次活动实验组(treatement,短信方式发送5折优惠券),对照组(不发券)37701名用户,注意到实验组和对照组不满足P ( T ) = P ( C ) = 1 /2 的条件。
本身实验组和对照组的数据是通过一个XGB模型预测出来的用户,该模型预测用户领取优惠券后是否会下单。根据模型预测结果,筛选一批高于某个阈值的用户,分成实验组和对照组。因此这次AB结果本身可以看出这个预测模型的uplift score。
这个预测模型的AB实验中,实验组转化率是2.69%,对照组转化率是2.28%,两组的转化率远高于以往运营随机筛选或根据条件筛选用户的转化率。但是,注意到这个预测模型的uplift score只有0.0041(2.69%-2.28%)。说明预测模型筛选出来的用户本身就有下单意愿,并不一定是因为发放优惠券而下单,所以实验组中的用户persuadable的比例应该不是很高。
在一个预测模型上再做uplift modeling相当于是在下单意愿高的用户中再筛选persuadable用户,其实实践上没有太大必要。
1.3 业务疑问与需求
1.3.1 多维度建模
在【智能营销增益模型(Uplift Modeling)的原理与实践】与 阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践都提及了多维度建模的情况:
干预策略只有一种,对于发券,相当于一个treatment只有一种折扣,对于广告push,一个treatment也只能有一种内容。而treatment可以用多种维度,如不同渠道发放不同折扣的优惠券,不同场景推送不同内容的push。
传统的response model以转化为多分类问题解决,但uplift modeling难以简单转化为多分类问题。
此外,个性化广告推送也依赖长期和短期的用户行为特征构建。不同营销场景下的用户特征可以共用,可以构建统一的线上线下特征平台。
同时维度的剧增会对样本的量级要求越来越高,样本的稀疏性问题会更加严重,针对这个问题阿里文娱团队有两个可能的解法:
-
❶ 可以采用多任务学习的方式,联合其他场景一起建模缓解单场景样本的压力,同时也可以通过人为构造无偏样本的方式增加整体的样本量。当然除了技术侧,整个营销上面还有非常多很有意思的研究方向,比如之前更多考虑的是单个营销场景,但其实多个场景下怎么去建模和刻画他们之间的相互影响也是非常有意思的课题;
-
❷ 我们之前uplift model建模更多考虑的是单次或者短期用户行为的增益,但实际上的营销往往是常态化或持续化的,用户的心智可能会不断发生变化,如何去建模长期的uplift也值得进一步去探讨。
1.3.2 一些使用场景
参考:【营销增益模型实战-Uplift Model原理及应用】
寻找高增益人群,如医学实验场景,寻找药物的有效人群。
或者广告,红包场景中因广告,红包而转化的人群,去掉不敏感人群以及自转化人群,从而提升活动效益。
还有:
- 政治运动:
提升模型已被用来识别那些政治立场摇摆不定的选民(Stedman 2013)。通过利用提升模型,政治营销可以避免推送给对立方的支持者,而只专注于Persuadables部分。
- 新的治疗方案:
Uplift Model不仅能评估整个治疗组和对照组的结果,还可以了解治疗对不同组的不同影响,及影响的具体差异。
- 交叉销售:
因为预算有限,有些人可能不需要或想要其他产品。并且假设他们不希望对整个客户群进行交叉销售。这时公司可以使用Uplift 模型精确的筛选用户群,进行更精准的交叉销售广告活动。
- 留存:
公司希望与将要流失并保存他们的客户接触,但他们不希望在与的活跃期发送营销内容骚扰客户,只专注于高流失风险的客户群,这时就可以使用Uplift模型
- 用户体验测试:
公司想了解网站或应用程序的更改是否导致了预期的结果。
1.3.3 实验室组和对照组 数据不均匀
参考文章【广告中增益模型理解】
实验室组和对照组流量数据不均匀时,分两种情况讨论:
- 一是如果数据量本身不大,再加上实验室组和对照组数据分布不均,则其中一组数据必然很少,这样再将每组进行十等份,每组的数据就更少,计算比例是会有很强的随机性,使整个评估指标失效。
- 二是如果数据量本身很大,即使分布不均,两个组的数据量分别还是很大,由于都是计算比例,所以计算结果还是可靠的。
2 uplift model的模型
2.1 差分响应模型(Two-Model Approach)
分别对AB实验的实验组和对照组数据独立建模,预测时分别实验组模型和对照组模型预测用户的分数,两个模型预测分数相减就得到了uplift score。
实验组是使用干预策略的用户(treatment),对照组是未使用干预策略的用户(control),正样本都是下单用户。
具体可以参考文章:【智能营销增益模型(Uplift Modeling)的原理与实践】
笔者画个简图:
uplift模型的核心,每一个用户会得到一个位于-1到1的lift score,用于指导用户人群的选择。
模型优缺点
优点:
- 这种建模方法的优点是比较简单容易理解,同时它可以套用我们常见的机器学习模型,如LR,GBDT,NN等,所以该模型的落地成本是比较低的
- 不过考虑到实现简单迅速,实践中可以作为baseline使用。
缺点:
- 两个独立的模型分开训练容易累积误差(两个独立模型的误差会累加传递到最终的uplift score)。
- 但是该模型最大的缺点是精度有限,这一方面是因为我们独立的构建了两个模型,这两个模型在打分上面的误差容易产生累积效应
- 第二是我们建模的目标其实是response而不是uplift,因此对uplift的识别能力比较有限。
2.2 差分响应模型升级版(One-Model Approach)
差分响应模型的训练数据和模型都是各自独立的,可以分别在训练数据层面上打通以及在模型层面上打通,得到升级版的差分响应模型。
在实验组和对照组的用户特征中,加入与Treatment有关的特征,实现数据层面的打通,即实验组和对照组合并,使用同一个模型训练。这是阿里文娱提到的一种方法,但我感觉这样无法满足用户特征样与条件策略独立的假设。
参考文章:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
它和上一个模型最大差别点在于,它在模型层面做了打通,同时底层的样本也是共享的,之所以能实现这种模型层面的打通,是因为我们在样本的维度上做了一个扩展,除了user feature之外,还引入了与treatment相关的变量T ( T如果是0,1的取值可以建模single treatment,T也可以扩展为0到N,建模multiple treatment,比如不同红包的面额,或者不同广告的素材 )
优点
- 训练样本的共享可以使模型学习的更加充分
- 同时通过模型的学习也可以有效的避免双模型打分误差累积的问题
- 从模型的层面可以支持multiple treatment的建模,具有比较强的实用性。
缺点 - 同时和Two Model版本类似,它的缺点依然是其在本质上还是在对response建模,因此对uplift的建模还是比较间接,有一定提升的空间。
2.3 Modeling Uplift Directly
参考文章:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
下面主要介绍它的思想,在传统的决策树构建中,最重要的环节是分裂特征的选择,我们常用的指标是信息增益或者信息增益比,
其背后的含义还是希望通过特征分裂之后下游节点的正负样本的分布能够更加的悬殊,也就代表类的纯度变得更高。
类似的,这种思想也可以引入到Uplift Model的建模过程中,虽然我们并没有用户个体的uplift直接的label,但是我们可以通过treatment组和control组转化率的差异来刻画这个uplift,以图中左下角的图为例,我们有T和C两组样本,绿色的样本代表正样本,红色的代表负样本,可以看到在分裂之前T和C两组正负样本的比例比较接近,但是经过一轮特征分裂之后,T和C组内正负样本的比例发生了较大的变化,左子树中T组全是正样本,C组全是负样本,右子树正好相反,C组的正样本居多,意味着左子树的uplift比右子树的uplift更高,即该特征能够很好的把uplift更高和更低的两群人做一个区分。
如何从数学上度量这种概率分布的差异的方式呢?一些文章提出了可行的方法,比如基于KL散度,欧式距离,卡方距离的等等
优点:
- 可以直接对uplift进行建模,因此它的精度理论上是更高的
缺点:
- 在应用层面我们需要做大量的改造和优化,除了前面介绍的分裂规则之外,我们还需要改造它的loss函数,后续的剪枝等一系列的过程,所以它的实现成本是比较高的。
2.4 Class Transformation Method模型
另外一种更严谨的可以实现实验组对照组数据打通和模型打通的方法叫做class transformation method
而P ( Z = 1 ∣ X ) 可以通过任何分类模型得到,所以这个方法称为Class Transformation Method. 实际上,Z = 1 Z=1Z=1就是实验组中下单的用户和对照组中未下单的用户,因此可以直接将实验组和对照组用户合并,使用一个模型建模,实现了数据层面和模型层面的打通。
预测时,模型预测的结果就是uplift score,这点与差分响应模型不同。
该方法有两个假设,
第一个假设很好理解,实践中保证用户特征与干预策略无关即可。第二个假设过于严格,难以在实践中每次都满足。
但是可以通过重采样使得数据满足该假设,即使不满足(经常会有对照组数量远远小于实验组的情况)如果模型结果有意义,并且如果在测试集和线上表现良好,那么也不一定非要满足
2.5 训练样本收集
增益模型建模强依赖于AB实验,数据要求很高。建模时要求实验组和对照组样本数量一样(实践中不一定有这个严格要求)。而且实验组和对照组的样本特征分布要一致,例如,训练数据不能是实验组预测后的结果、对照组随机选择的结果这样的组合,因为这样不满足干预策略与用户特征相互独立的假设(P(G∣X)=P(G))。
故实验组中还需要预留一部分随机选择的用户,与对照组中的用户作为模型迭代的数据,或者实验组与对照组都先经过某个策略或模型的筛选。
3 模型的评估指标
uplift评估最大的难点在于我们并没有单个用户uplift的ground truth,响应模型可以通过一个测试数据集来计算precision,recall和AUC,但因为增益模型中不可能同时观察到同一用户在不同干预策略下的响应,因此无法直接计算上述评价指标。
增益模型通常都是通过划分十分位数(decile)来对齐实验组和对照组数据,间接评估,而不是在一个测试集上直接评估。
解决的一个思路是通过构造镜像人群的方式来间接拿到uplift的ground truth,比如说经典的AUUC的指标就是这样去计算的,假设现在有两个满足CIA条件假设的样本组,我们可以对两群人分别预估他们的uplift score,之后将人群按照uplift score进行降序排列,通过score分数这一桥梁,可以把两组人群进行镜像人群的对齐,之后分别截取分数最高的比如10%的用户出来,计算这一部分人转化率的差异,这个差异就可以近似地认为是分数最高的这群人真实的uplift,类似地,我们可以计算前20%,40%一直到100%的点上面的值,连线就能得到uplift curve。
3.1 uplift 柱状图
测试集上,实验组和对照组的用户分别按照uplift由高到低排序,划分为十等份,即十分位(decile),分别是top 10%用户,top 20%用户……top 100%用户。
分别对实验组和对照组中每个十分位内的用户求期望,即预测分数的均值,然后相减,作为这个十分位bin内的uplift,绘制柱状图,如下图(这个图是由低到高排序,排序反了):
这种方法只能定性分析,无法计算出一个具体的值来整体评价模型的好坏。
3.2 Qini曲线(Qini curve)
可以在uplift bars的基础上绘制曲线,类似AUC来评价模型的表现,这条曲线称为Qini curve,计算每个百分比的Qini系数,最后将这些Qini系数连接起来,得到一条曲线。Qini系数计算如下:
ϕ是按照uplift score由高到低排序的用户数量占实验组或对照组用户数量的比例,如ϕ = 0.1 \phi = 0.1ϕ=0.1,表示实验组或对照组中前10%的用户。
如上图,横轴等于0.2时,对应的纵轴大概是0.0032(uplift score),表示当uplift score等于0.0032时,可以覆盖前20%的用户数量,从图上看,这部分用户就是persuadable用户。
图中虚线是随机的base曲线,Qini曲线与随机random曲线之间的面积作为评价模型的指标,面积越大越好,面积越大,表示模型结果远超过随机选择的结果,与AUC类似,这个指标称为AUUC(Area Under Uplift Curve)。
Qini系数分母是实验组和对照组的全体用户数,如果两组用户数量差别比较大,结果容易失真。另一种累积增益曲线可以避免这个问题。
3.3 Adjusted Qini
是为了避免实验组和对照组数据不均衡而导致Qini系数失真而设计的。计算方式如下:
3.4 累积增益曲线(Cumulative Gain curve)
累积增益曲线计算如下:
各符号含义与Qini系数符号含义相同。与Qini系数相比,累积增益的分母是百分比ϕ \phiϕ下的实验组或对照组人数,避免实验组和对照组用户数量不平衡导致的指标失真问题。
可以将累积增益曲线与random line之间的面积作为评价模型表现的指标。
4 实践案例
4.1 优惠券发放Demo
【智能营销增益模型(Uplift Modeling)的原理与实践】一文案例
这里有一个优惠券发放的例子 。这是一次优惠券发放活动,对用户以短信方式发放5折优惠券,本次活动实验组(treatement,短信方式发送5折优惠券),对照组(不发券)37701名用户,注意到实验组和对照组不满足P ( T ) = P ( C ) = 1/ 2 的条件。
差分响应模型
实验组和对照组分别建模,使用lightGBM模型,分别取80%数据为训练集,20%数据为测试集。两个模型在测试集上的表现如下(未调参):
方便起见,将实验组和对照组20%的测试数据合并作为整个uplift model的测试集,流程如下。使用的数据集是经过了response model预测后的结果,相当于先筛选了一批下单概率高的用户,因为实验组和对照组用户都来自于同一个response model,可以认为两组用户特征分布式相同的。实际应用时,要注意实验组和对照组的用户特征分布是否一致。
对uplift分数排序,得到uplift bar,如下图所示。横轴是测试集中每个用户uplift的十分位数(decile),共10个bin;纵轴是每个bin的uplift均值。由于uplift排序是从低到高,因此这个uplift bar看起来是反的(正常应该是从高到底排)。
Adjusted Qini曲线如下:
累积增益曲线如下:
在Qini曲线下,差分响应模型的总体效果要好一些。而在累积增益曲线下,Class Transformation模型的总体效果要好一些。实验组和对照组数据不平衡的情况下,Qini系数可能有偏差,但本次对比的实验数据两组用户数量是接近的,这个问题还在研究中。
4.2 Uplift Model在淘票票智能票补中的应用
参考:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
在该场景下,每个用户最多只能发放一个红包,同时面额有固定几个分档,因此问题就精细化到如何对用户进行个性化的面额发放上,这可以通过经典的背包问题来抽象,
如图所示,第一个公式是我们的目标,最大化的是红包撬动效率,下面的约束条件一个是ROI约束,一个是预算约束。
该问题的求解中有两个关键点:
- 一个是用户红包敏感度的建模,
- 第二是在敏感度已知的情况下怎么进行全局效用最大化的求解。
下面重点介绍uplift model模块。Uplift model的目标是预测每个用户在不同的红包金额下的转化率,从而构建出千人千面的敏感度曲线。
我们将建模的任务拆分成三个步骤:
❶ 收集训练样本
训练样本的收集和我们的实验是强相关的,我们采用的是随机化的分桶实验,它有两个好处,一是可以严谨公平地进行效果的评估,二是可以为uplift model的建模提供无偏的样本。
❷ 模型的构建和训练
收集到样本之后可以进行建模,考虑到业务迭代的周期,我们使用的是前面介绍的One Model的差分响应模型,特征层面,除了user维度的基础属性,还有历史的观影行为,以及历史红包的反馈
❸ 面向业务层的模型校准和优化
理论上到模型训练完成,就可以直接把模型放到线上去应用了,但是在离线调研时,我们发现一个问题,我们绘制的用户敏感度曲线和我们的预期不太一样,并不是严格的平滑递增的走势。我们分析有两个可能的原因:
- 一是与我们整体的样本规模比较有限有关,因为这种无偏样本目前大概只有几百万的量级;
- 二是由于用户行为的稀疏性,在这种场景下我们比较难收集到用户在不同面额下的历史数据,因此也会加剧这种不平滑性。
针对该问题,我们做了校准处理,把原始曲线做了一个函数的拟合,一方面可以让结果更加符合我们先验的假设,一方面经过这种函数化之后可以在后续支持更多面额的预测,但这种做法是否是最优的还值得进一步探讨。
4.3 Uplift-Model在贝壳业务场景中的实践
参考文章:【Uplift-Model在贝壳业务场景中的实践】
在贝壳新房业务场景下,我们希望当用户进入新房频道首页时,为用户发放带看券或者成交券,在保证ROI大于0的前提下,提升用户带看率和成交率,进而提升平台GMV。
我们将问题进行抽象,在进入到新房频道首页的用户中,精准识别出那些对于优惠券敏感的人群,进行优惠券发放。也就是我们需要对用户进行优惠券敏感度建模,这正是uplift model做的事情。
4.3.1 样本构造
目前新房业务场景下,已经做过很多优惠券相关的活动,但这些活动的运营对象时全部用户,也就是所有用户多会发,需要用户主动进行领取,这显然是不满足uplift model对于训练样本的要求的。
我们选择新房业务下最近的一个活动“618惠住季”来构建训练样本,为了更好的模拟随机A/B实验,按照是否浏览过活动领券页面将用户分为实验组用户和对照组用户(在这里我们认为用户没有浏览过活动领券页面,就可以认为对其没有发券)。
在房产交易场景中,用户决策周期很长,如果拿成交和带看来作为转化的目标可能对导致转化样本数过低,因此我们加入了委托,我们认为只要用户在领券后的未来7天内,发生委托或带看或成交任一种重行为的转化,即将其标定成为一条正样本,标定后的正负样本分布如下表:
可以看到实验组和对照组总人数数量之间差异巨大,为了后续可以使用标签转换方式训练模型,我们对对照组进行欠采样,最终实现对照组人数和实验组人数基本一致。
4.3.2 特征工程
在特征工程层面我们主要选取了用户行为特征、城市特征、偏好特征、时序特征等。
表3 样本特征信息表
我们分别将实验组和对照组各80%的数据作为训练集,20%数据为测试集来评估模型表现。为了方便起见,将对照组和实验组的测试集合并用来观测训练过程,在真正预测时在将其分开。
4.3.3 模型训练与评估
在模型选择上,我们以XGBoost模型作为基学习器,分别在Two Model差分响应模型、One Model差分响应模型(无标签转化+引入T/C特征)、One Model差分响应模型(引入标签转化)和One Model差分响应模型(引入个人倾向分)上进行了尝试。One Model差分响应模型(无标签转化+引入T/C特征)训练流程如下:
图6 One Model差分响应模型(无标签转化+引入T/C特征)流程图
在实验组和对照组分别取80%的用户合并成训练样本,然后引入干预策略相关特征进行模型训练,在实验组和对照组各20%的用户样本上将每个用户干预策略特征分别置1和0,预测两次,然后将预测结果相减即为uplift值。
在全部模型试验中,Two Model差分响应模型表现最差,One Model差分响应模型(无标签转化+引入T/C特征)和引入倾向分后的回归模型表现较好。
图7 two-model差分响应模型(无标签转化+引入T/C特征)Qini曲线
Two Model模型会导致误差累计,在具体实验中也得到了同样结论;
标签转化方法在逻辑上推导可行,实验结果显示并不尽如人意,分析其主要原因还是对于样本的要求太高,目前构造的数据虽然保证了实验组和对照组用户数量基本一致,但是完全随机基本无法保证。
相反,引入个人倾向分后,将其转化为回归问题,在一定程度上解决了这个问题,标签转化虽然逻辑上可以,但是还是需要一定解释成本。
在实验中表现最好的One Model差分响应模型(无标签转化+引入T/C特征),在结果输出上解释成本也是最低的,在对于每个用户预测时,分别加入T和C干预信号特征,然后预测值相减即得到用户的uplift score。
4.4 如何选择最佳的Uplift值
参考文章:用机器学习来提升你的用户增长:第八步,Uplift模型
使用文章数据:karamanbk/data.csv
在这个例子中,类别的映射如下,多分类模型:
0 -> Control Non-Responders
1 -> Control Responders
2 -> Treatment Non-Responders
3 -> Treatment Responders
计算uplift分数,uplift分数的公式为:
为了评估我们的模型,我们将创建两个不同的组,并将它们与我们的基准进行比较。这两个组是:
- 高Uplift分数:客户的uplift分数>3/4分位数
- 低Uplift分数:客户的uplift分数<1/2分位数
我们会对比:
- 转化的uplift
- 每个目标用户的收入uplift,看看我们的模型是不是让我们的活动更有效了
5 参考文献:
1 智能营销增益模型(Uplift Modeling)的原理与实践
2 阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
3 Uplift-Model在贝壳业务场景中的实践
4 用机器学习来提升你的用户增长:第八步,Uplift模型
5 【广告中增益模型理解】
6 【营销增益模型实战-Uplift Model原理及应用】
标签:对照组,实验组,模型,用户,Modeling,Uplift,uplift 来源: https://blog.csdn.net/sinat_26917383/article/details/113834367