Uplift Modeling在智能营销中非常重要,一般来说个性化营销人群中存在四类:
还有一个比较搞笑的版本:
在【智能营销增益模型(Uplift Modeling)的原理与实践】一文中提到:
购买转化导向(reponse model)的模型,目标人群为是否购买,但是该模型不能告诉我们:这批人是否因为发放优惠券而产生购买。
也就是无法区分persuadables
和sure things
人群,而且在这个建模过程中其实存在:
优惠券 -> 购买
,需要探讨因果关系的命题。
这里来看阿里文娱在 【阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践】一文中也提及两者的差异:
按照以往的经验和直觉,可能会向第二类用户群投放广告,因为其转换率 是最高的,但这个结论是对的吗? 经过进一步分析,除了广告曝光转化率 之外,我们还能知道这两类用户群体在没有广告触达情况下的自然转化率, 从而推算出广告所带来的增量。 比如第一类用户的广告转化率虽然低,但 在没有广告触达情况下的转化率更低,即广告所带来的增量反而是比第二 个用户更高的,而我们要最大化总体的转化率其实等价于最大化广告的增 量,按照这个逻辑,我们应该向第一个用户投放广告。 也就是说 Response Model 很有可能会误导我们做出错误的决策,Uplift Model 和 Response Model 之所以有差异,主要在于两个模型的预测目标不一样。
当然,现在也有非常多的做法,将两者混淆在一起。 在【智能营销增益模型(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用户,其实实践上没有太大必要。
在【智能营销增益模型(Uplift Modeling)的原理与实践】与 阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践都提及了多维度建模的情况: 干预策略只有一种,对于发券,相当于一个treatment只有一种折扣,对于广告push,一个treatment也只能有一种内容。而treatment可以用多种维度,如不同渠道发放不同折扣的优惠券,不同场景推送不同内容的push。 传统的response model以转化为多分类问题解决,但uplift modeling难以简单转化为多分类问题。 此外,个性化广告推送也依赖长期和短期的用户行为特征构建。不同营销场景下的用户特征可以共用,可以构建统一的线上线下特征平台。 同时维度的剧增会对样本的量级要求越来越高,样本的稀疏性问题会更加严重,针对这个问题阿里文娱团队有两个可能的解法:
参考:【营销增益模型实战-Uplift Model原理及应用】 寻找高增益人群,如医学实验场景,寻找药物的有效人群。 或者广告,红包场景中因广告,红包而转化的人群,去掉不敏感人群以及自转化人群,从而提升活动效益。 还有:
提升模型已被用来识别那些政治立场摇摆不定的选民(Stedman 2013)。通过利用提升模型,政治营销可以避免推送给对立方的支持者,而只专注于Persuadables部分。
Uplift Model不仅能评估整个治疗组和对照组的结果,还可以了解治疗对不同组的不同影响,及影响的具体差异。
因为预算有限,有些人可能不需要或想要其他产品。并且假设他们不希望对整个客户群进行交叉销售。这时公司可以使用Uplift 模型精确的筛选用户群,进行更精准的交叉销售广告活动。
公司希望与将要流失并保存他们的客户接触,但他们不希望在与的活跃期发送营销内容骚扰客户,只专注于高流失风险的客户群,这时就可以使用Uplift模型
公司想了解网站或应用程序的更改是否导致了预期的结果。
参考文章【广告中增益模型理解】 实验室组和对照组流量数据不均匀时,分两种情况讨论:
优缺点: 双模型优点是简单直观,可以复用常见的机器学习模型(LR、Tree Model、NN)。 缺点是数据利用不充分,没有很好地拟合两个群体之间的差异(也即lift信号)且对模型误差容易被放大。假设单个模型准确率都是90%,那么最后预测lift的精度只有81%.
单模型的方式将处理变量T当做输入特征进行训练,预测时将同一样本特征进行多次输入,每次只是改变不同的T值。 一般而言, 表示对照组, 代表各个实验组。
单模型相比双模型的方式有以下几个优势:
X-Learner是对T-Learner和S-Learner进行了融合
随机森林的Uplift模型与普通的随机森林的主要的区别就是分裂指标的不同。
以下是几种常见的分裂指标:
几种模型:
分别对AB实验的实验组和对照组数据独立建模,预测时分别实验组模型和对照组模型预测用户的分数,两个模型预测分数相减就得到了uplift score。
实验组是使用干预策略的用户(treatment),对照组是未使用干预策略的用户(control),正样本都是下单用户。
具体可以参考文章:【智能营销增益模型(Uplift Modeling)的原理与实践】 笔者画个简图:
uplift模型的核心,每一个用户会得到一个位于-1到1的lift score,用于指导用户人群的选择。
模型优缺点 优点:
缺点:
差分响应模型的训练数据和模型都是各自独立的,可以分别在训练数据层面上打通以及在模型层面上打通,得到升级版的差分响应模型。
在实验组和对照组的用户特征中,加入与Treatment有关的特征,实现数据层面的打通,即实验组和对照组合并,使用同一个模型训练。这是阿里文娱提到的一种方法,但我感觉这样无法满足用户特征样与条件策略独立的假设。
参考文章:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
它和上一个模型最大差别点在于,它在模型层面做了打通,同时底层的样本也是共享的,之所以能实现这种模型层面的打通,是因为我们在样本的维度上做了一个扩展,除了user feature之外,还引入了与treatment相关的变量T ( T如果是0,1的取值可以建模single treatment,T也可以扩展为0到N,建模multiple treatment,比如不同红包的面额,或者不同广告的素材 )
优点
参考文章:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
下面主要介绍它的思想,在传统的决策树构建中,最重要的环节是分裂特征的选择,我们常用的指标是信息增益或者信息增益比, 其背后的含义还是希望通过特征分裂之后下游节点的正负样本的分布能够更加的悬殊,也就代表类的纯度变得更高。 类似的,这种思想也可以引入到Uplift Model的建模过程中,虽然我们并没有用户个体的uplift直接的label,但是我们可以通过treatment组和control组转化率的差异来刻画这个uplift,以图中左下角的图为例,我们有T和C两组样本,绿色的样本代表正样本,红色的代表负样本,可以看到在分裂之前T和C两组正负样本的比例比较接近,但是经过一轮特征分裂之后,T和C组内正负样本的比例发生了较大的变化,左子树中T组全是正样本,C组全是负样本,右子树正好相反,C组的正样本居多,意味着左子树的uplift比右子树的uplift更高,即该特征能够很好的把uplift更高和更低的两群人做一个区分。
如何从数学上度量这种概率分布的差异的方式呢?一些文章提出了可行的方法,比如基于KL散度,欧式距离,卡方距离的等等 优点:
缺点:
另外一种更严谨的可以实现实验组对照组数据打通和模型打通的方法叫做class transformation method
而P ( Z = 1 ∣ X ) 可以通过任何分类模型得到,所以这个方法称为Class Transformation Method. 实际上,Z = 1 Z=1Z=1就是实验组中下单的用户和对照组中未下单的用户,因此可以直接将实验组和对照组用户合并,使用一个模型建模,实现了数据层面和模型层面的打通。 预测时,模型预测的结果就是uplift score,这点与差分响应模型不同。
该方法有两个假设,
第一个假设很好理解,实践中保证用户特征与干预策略无关即可。第二个假设过于严格,难以在实践中每次都满足。 但是可以通过重采样使得数据满足该假设,即使不满足(经常会有对照组数量远远小于实验组的情况)如果模型结果有意义,并且如果在测试集和线上表现良好,那么也不一定非要满足
增益模型建模强依赖于AB实验,数据要求很高。建模时要求实验组和对照组样本数量一样(实践中不一定有这个严格要求)。而且实验组和对照组的样本特征分布要一致,例如,训练数据不能是实验组预测后的结果、对照组随机选择的结果这样的组合,因为这样不满足干预策略与用户特征相互独立的假设(P(G∣X)=P(G))。 故实验组中还需要预留一部分随机选择的用户,与对照组中的用户作为模型迭代的数据,或者实验组与对照组都先经过某个策略或模型的筛选。
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。
测试集上,实验组和对照组的用户分别按照uplift由高到低排序,划分为十等份,即十分位(decile),分别是top 10%用户,top 20%用户……top 100%用户。 分别对实验组和对照组中每个十分位内的用户求期望,即预测分数的均值,然后相减,作为这个十分位bin内的uplift,绘制柱状图,如下图(这个图是由低到高排序,排序反了):
这种方法只能定性分析,无法计算出一个具体的值来整体评价模型的好坏。
可以在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系数分母是实验组和对照组的全体用户数,如果两组用户数量差别比较大,结果容易失真。另一种累积增益曲线可以避免这个问题。
是为了避免实验组和对照组数据不均衡而导致Qini系数失真而设计的。计算方式如下:
累积增益曲线计算如下:
各符号含义与Qini系数符号含义相同。与Qini系数相比,累积增益的分母是百分比ϕ \phiϕ下的实验组或对照组人数,避免实验组和对照组用户数量不平衡导致的指标失真问题。 可以将累积增益曲线与random line之间的面积作为评价模型表现的指标。
【智能营销增益模型(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系数可能有偏差,但本次对比的实验数据两组用户数量是接近的,这个问题还在研究中。
参考:阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
在该场景下,每个用户最多只能发放一个红包,同时面额有固定几个分档,因此问题就精细化到如何对用户进行个性化的面额发放上,这可以通过经典的背包问题来抽象, 如图所示,第一个公式是我们的目标,最大化的是红包撬动效率,下面的约束条件一个是ROI约束,一个是预算约束。
该问题的求解中有两个关键点:
下面重点介绍uplift model模块。Uplift model的目标是预测每个用户在不同的红包金额下的转化率,从而构建出千人千面的敏感度曲线。
我们将建模的任务拆分成三个步骤:
❶ 收集训练样本
训练样本的收集和我们的实验是强相关的,我们采用的是随机化的分桶实验,它有两个好处,一是可以严谨公平地进行效果的评估,二是可以为uplift model的建模提供无偏的样本。
❷ 模型的构建和训练
收集到样本之后可以进行建模,考虑到业务迭代的周期,我们使用的是前面介绍的One Model的差分响应模型,特征层面,除了user维度的基础属性,还有历史的观影行为,以及历史红包的反馈
❸ 面向业务层的模型校准和优化
理论上到模型训练完成,就可以直接把模型放到线上去应用了,但是在离线调研时,我们发现一个问题,我们绘制的用户敏感度曲线和我们的预期不太一样,并不是严格的平滑递增的走势。我们分析有两个可能的原因:
针对该问题,我们做了校准处理,把原始曲线做了一个函数的拟合,一方面可以让结果更加符合我们先验的假设,一方面经过这种函数化之后可以在后续支持更多面额的预测,但这种做法是否是最优的还值得进一步探讨。
参考文章:【Uplift-Model在贝壳业务场景中的实践】 在贝壳新房业务场景下,我们希望当用户进入新房频道首页时,为用户发放带看券或者成交券,在保证ROI大于0的前提下,提升用户带看率和成交率,进而提升平台GMV。
我们将问题进行抽象,在进入到新房频道首页的用户中,精准识别出那些对于优惠券敏感的人群,进行优惠券发放。也就是我们需要对用户进行优惠券敏感度建模,这正是uplift model做的事情。
目前新房业务场景下,已经做过很多优惠券相关的活动,但这些活动的运营对象时全部用户,也就是所有用户多会发,需要用户主动进行领取,这显然是不满足uplift model对于训练样本的要求的。
我们选择新房业务下最近的一个活动“618惠住季”来构建训练样本,为了更好的模拟随机A/B实验,按照是否浏览过活动领券页面将用户分为实验组用户和对照组用户(在这里我们认为用户没有浏览过活动领券页面,就可以认为对其没有发券)。
在房产交易场景中,用户决策周期很长,如果拿成交和带看来作为转化的目标可能对导致转化样本数过低,因此我们加入了委托,我们认为只要用户在领券后的未来7天内,发生委托或带看或成交任一种重行为的转化,即将其标定成为一条正样本,标定后的正负样本分布如下表:
可以看到实验组和对照组总人数数量之间差异巨大,为了后续可以使用标签转换方式训练模型,我们对对照组进行欠采样,最终实现对照组人数和实验组人数基本一致。
在特征工程层面我们主要选取了用户行为特征、城市特征、偏好特征、时序特征等。
表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。
参考文章:用机器学习来提升你的用户增长:第八步,Uplift模型
使用文章数据:karamanbk/data.csv
在这个例子中,类别的映射如下,多分类模型:
0 -> Control Non-Responders
1 -> Control Responders
2 -> Treatment Non-Responders
3 -> Treatment Responders
计算uplift分数,uplift分数的公式为:
为了评估我们的模型,我们将创建两个不同的组,并将它们与我们的基准进行比较。这两个组是:
我们会对比:
20210714笔记
因为该方法在贝壳测试文章【Uplift-Model在贝壳业务场景中的实践】中,是效果最好的,而且可行性 + 可解释性比较强,适合多维度因素,来看一下具体实现过程,首先:
Uplift建模对样本的要求是比较高的,需要服从CIA ( Conditional Independence Assumption ) 条件独立假设,要求X与T是相互独立的。什么样的样本有这样的特征,又如何获取呢?最简单的方式就是随机化实验A/B Test,因为通过A/B Test拆分流量得到的这两组样本在特征的分布上面是一致的,也就是X和T是相互独立的。因此随机化实验是Uplift Model建模过程中非常重要的基础设施,可以为Uplift Model提供无偏的样本。
那么此时的训练集就是:80% treatment组 + 80% control组样本,同时在特征中新增一个T(干预)特征, 这里一定程度解决【1.3.1 多维度建模】,如果这里的干预只有,发/没发券,那就是0/1; 如果这里是不同红包面额,那就是0/1/2/3等。
然后训练一个模型,训练完了之后,需要预测两次,同一个模型,将T(干预)特征变化一下,如果是多个维度,就是多个样本,同个模型,预测多次: 然后相减得到uplife value
这里很容易混淆的是,增益模型和响应模型,能否在响应模型之上,进行实验?
文章阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践提到的是: 之所以没有用有算法干预下的样本是因为用户的发放的面额与用户的特征是强相关的,并不满足CIA条件,因此这一部分样本虽然量较大,但是不能用于训练。
要么就是各管各的,相互独立,也就是高潜人群也有可能是发/不发 红包的; 要么分开切流实验,是最省心的。
1 智能营销增益模型(Uplift Modeling)的原理与实践 2 阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践 3 Uplift-Model在贝壳业务场景中的实践 4 用机器学习来提升你的用户增长:第八步,Uplift模型 5 【广告中增益模型理解】 6 【营销增益模型实战-Uplift Model原理及应用】