因果推断笔记——数据科学领域因果推断案例集锦(九)

文章目录
- 1 腾讯看点:启动重置问题
- 2 滴滴的国际化外卖团队DiDi Food:智能补贴
- 3 QQ 浏览器:PUSH配额优化实践
- 4 腾讯
- 5 滴滴
- 6 优酷:推荐系统与因果推断
- 7 阿里飞猪:因果推断在广告算法中的实践
- 8 哈啰顺风车从推荐 -> 智能营销
- 9 阿里文娱:智能营销增益模型 ( Uplift Model ) 技术实践
- 10 快手因果推断与实验设计
- 11 腾讯广告:上线Uplift广告增效衡量
- 12 因果分析工具在快手的应用
这部分只是抛砖引玉贴一些看到的非常好的业内方案。 因果推断在很多领域都有很有意思的应用,值得收藏。
1 腾讯看点:启动重置问题
来自datafuntalk -【2-1观测数据因果推断应用-启动重置体验分析】
1.1 观测数据 、 实验数据的理论介绍

前提假设,用户是随机分配的; ATE是在实验数据中,Y(1)-Y(0) rubin potitential outcome -> 实验数据 DAG,因果图 -> 观测数据,不过观测数据比较麻烦

工具变量、IV变量、断点回归 -> 绕开了混杂银子,在业务层面更容易满足 -> 准实验方法 实在不行,才是PSM,IPTW


曝光天气与未曝光,本身就有有偏的,曝光的人本来要比未曝光要更容易接受,或者在有干预 所以,不能直接使用次留的结论, 那么,DID这里需要满足平行性,就可以进行对比 二次差分得到一个效应

为了因果效应的正确性,就是要看,天气内容之后的转化路径,就是次留提升不够, 还要看内容有没有配套的文章资讯,天气的点击率; 今天发了天气内容 -(验证的方式)> 第二天天气资讯内容的点击率如何

横轴是首章阅读时长,纵轴是次留数据; 115s连续邻域左右,混淆因子作用差别不大,如果这个点有很大的差异,那么说明确实是有因果关系的 提升 首章阅读时长 -> 提升次留 措施:
- 第一次推荐的,是比较容易读的
- 里面的广告啥的,都关掉
2.2 启动重置问题阐述:短期、长期、异质

浏览器里面,你刷起来APP里面去了,过了40分钟回来,又让你重新搜一遍, app里面,你离开了1min,又有闪屏 当然,有闪屏说明可以很好的有商业收入

分析框架:
- 短期表现捕捉方式:被打断之后,下一次使用的使用时长、跳出率等指标,是否会有波动
- 长期表现捕捉方式:一段时间的打开次数
- 是否存在一些人群(异质性人群),对广告不敏感,有or没有闪屏都无所谓
- 短期影响,访问间隔是在40min左侧,还是在右侧,那么可以使用断点回归
- 长期影响,有可能受很多混淆变量影响,PSM,混淆控制的方式去处理; 但是PSM,matching的方式,很容易被挑战,有很多混淆因子,那咋解决? 异质性用户,一般会用uplife的方法,但是Uplife方法是实验方法,那在观测数据中如何进行实验?
2.3 短期影响的解决

横轴,跳出时长;纵轴:session使用时长 、 session搜索时长 观察在跳出时长40min,前后是否有明显的差异
2.4 长期影响构造准实验

很难控制混杂因子,因为你可能不知道还有什么因子被遗漏了,PSM问题:
- 局部性,样本只代表一部分,不是整体
- 遗漏混杂因子
如果,我们控制了一段时间内,活跃度(访问次数一致),
- user1属于高频低日活,每次来访问,停留时长比较长,各种切换;但不是每天都来
- user2属于低频高日活,每天都来,但是每次就一会儿就走了
那么每天都来,但是来一会就走的人,有没有重置,没有关系

解决遗漏混杂因子的问题,这里构造了准实验变量, 如果我们在40min作为一个实验点来观察40min以内与40min以外, 用户是很难感知,这个40min是个什么时间段的,那就把40min这个点变成领域(时间段)
如果找领域范围呢? 越大,实验越多,但越不精准;所以这里考察了两个指标:
- 覆盖session数量:数量也比较多
- 特征平衡性:几个时间特征都差不多
这样用户行为落在[20,40] ,[40,60]是随机事件,可以构造一个长期时间变量rate(生存分析里面有时变函数,构造一个跟着时间走的变量) 这个准实验变量:Rate = (40-60min) / (0-60min)
现实含义是?
- 长时间跳出的比例(低使用时长)

特征平衡性检验,就是要看,这个IV变量 -> X是独立的,可以后续进行使用

Rate ~ 活跃天数Y的关系 rate ~Y的相关性就是因果性, 击中率Rate,经常长时间跳出的,越大;活跃天数越大 被启动重置打断的次数越多,那么活跃天数的比例就低
2.5 异质性用户

整个异质性的探究,其实是相当于对人群进行细分,然后针对不同的人群进行不同的策略; 这里每个人身上的行为标签非常多。 需要针对,不同行为下,是否主动打断,造成了最终活跃度/收入/信息流时长/搜索时长 有改变(多种行为 -(干预:打断)> 多结果 )

方法的调研,从四个方向去调研方法论,从下钻分析(从大区分析 -> 城市)与建模对比,肯定是建模好; 那么建模又分为mete-learner / direct uplift model / transform outcome / mr-uplift(不可逆),这里沿着transfrom outcome进行改造。

算法目标以及流程:
- 数据处理之后,tranform转化Y(时长)/G(使用天数)
- 两个模型:Y 、 G分别拟合模型,modelY~(X,Y*)
- 输出模型的重要特征top15
- 画出象限,得到定性的结论
- 根据定性,进行定量

评估准确性的方法,gini面积,catboost比线性好

搜索时长、总时长是两个模型,Y/G,根据两个模型的结果画出:搜索时长、总时长的象限, 四个象限其实就代表着不同人群分类,1-无影响人群,3-严重影响人群,2/4-分别影响人群 同时对四个象限进行下钻分析,找到不同象限的不同指标的差异,结论:
- 1~2象限对比,会减少搜索时长的因素里面,发现第二象限搜索占比指标高,说明在干预重置下,影响搜索时长的是搜索占比,也就是页面重置 会对搜索的人产生影响
- 1~3象限对比,第1象限打开方式多种,第三象限主要是主打打开,也就是如果是主动打开的人,重置会有影响
前面的看细粒度维度的指标是一种定性的方式,现在针对是否主动打开,可以跑出这些Outcome指标,看一下是否有均值统计量的差异(这里可以根据数据,构造一些简单的均值检验)
这里有人问,为什么要定性解释和定量解释? 演讲者解释的是,定性解释,会受异常值影响,毕竟象限分析比较粗粒度,有好的样本,有坏的样本;定量是辅助解释 + 排除定性解释的问题,并且定量可以更加准确 + 多维度的解释 这里,笔者觉得就是,估计效应有了,要具体计量出ATE估计量一样

得到了一些结论,异质性分析可以帮助拆分行为,进行精细化策略。 同时发现,重置对搜索用户影响非常大,如果搜索的用户,需要产品设计上进行改动,告诉用户,之前查看的内容放在了哪里。
1.6 总结

2 滴滴的国际化外卖团队DiDi Food:智能补贴
2.1 补贴问题的定义
与机器学习传统三大方向【推荐,搜索,广告】不同,补贴问题中最核心和最关键的一点是补贴这个行为需要付出【成本】。这个概念的引入使得我们必须要将对这部分【成本】的使用效率作为一个核心指标,也就是所谓的「ROI」。

也就是衡量增加的补贴【成本】所带来【增量】指标收益。
对于这个指标的优化,一个直观的解法就是随机AB实验,通过足够多的,设计逻辑严密的,随机性完美的AB实验,我们一定可以在这个指标的优化上取得令人满意的结果。但是这个方法在具体业务中的问题是它太过于奢侈了,无论是在预算还是在时间上。
因此,为了可以高效低廉地求解这个问题,我们可以将优化目标拆解为两个子问题:
- 预估干预的Action相比于没有干预时带来的【增量】
- 在存在多种干预【Action】和已预估了它们【增量】的情况下,如何为每个用户合理分配【Action】以期望达到全局最优
如何判定合理的用户,就需要区分:

补贴敏感: 没有补贴就不下单,有补贴才会下单;补贴敏感人群。 自然转化: 有没有补贴都会下单;自然转化人群。 无动于衷: 有没有补贴都不会下单; 无补贴时会下单,有补贴时反而不会下单;补贴活动带来反作用。
这块可参考: 智能营销增益(Uplift Modeling)模型——模型介绍(一)
2.2 如果进行因果推断建模
与智能补贴相关的工程架构如图:

使用方法是mete-model系列,具体可看:因 果推断笔记——uplift建模、meta元学习、Class Transformation Method(八) 补贴活动提升的购买意愿 = P(Y = 1|X,W = 1) − P(Y = 1|X,W = 0)
模型选择:LightGBM 在实践中使用的方法是用一个新的LightGBM去拟合离线评估最优模型产出的【预测增量】,并用这个新模型的特征重要度来近似评估各个维度特征的重要性,以此来决策是否加入和剔除特征。选择LightGBM的原因是我们对于这个模型的精度并没有太高的要求,相反我们希望它能够比较快速地在训练流程中对新加入特征的给出反馈。LightGBM高效地训练速度和不需要过多特征工程的优点比较契合我们的需求。
对于因果推断三大假设的思考:

其中,针对其中第二条假设,我们的个人理解是我们虽然允许有影响分配机制的特征存在,但是我们需要将这些特征也纳入我们的观察。在模型干预的数据样本中,影响干预分配机制的往往是模型产出的【预测增量】。这个特征我们没有也无法将其纳入我们的观察。因此,我们将这部分样本从训练和测试样本中剔除了。
这点在数据结果上也可以看出,对于同一个批次的样本,同一套参数同一套模型,评估样本中【干预后样本】的存在会导致离线评估的结果大相径庭,从而影响我们离线评估和判断模型优劣。
另外在同一个测试样本上,有该类【干预后样本】样本参与训练的模型的离线效果也出现了比较明显的下降。
这里有点疑惑,感觉有干预的人群有太多的混杂因素、人为规则判定是“有潜力的”;所以接下来是补贴实验都是基于无干预的人群。 从他们实验结果大概也看到,S-Learner比较好,且无干预比较准确

2.3 在干预下的全局最优解问题
这个部分很少有人提及,有点像是归因 -> 预算分配这样的,将模型的效用更大化。
对增量预估完毕后,接下来就需要具体地为用户池中用户分配补贴券。在基于增量预估的基础上,我们尝试了两种分发策略:
贪心分配
很多时候,运营对于使用的券类别和每个券类别的预算分配都有比较大的限制和约束。在这样的约束下,我们的做法是按照券值面额从低到高,为每个券类别计算可支配数量,然后对用户池所有用户按照预估出的Uplift值和计算出的可发放数量倒排截断,并将分配完毕的用户从备选用户池中移除。这样一个用户如果在各种券类别下uplift都很高时,我们将会优先为他/她配置券值较低的补贴券。这样做法的好处是简洁明了实现简单,在人工干预较强的时候对于运营的可解释性也比较强。缺点当然就是在自由度更高情况下,显然不能达到全局最优。
整数规划
而当我们对于预算和券种的设置拥有了更多的自主权时,我们也尝试了在预算约束下的最大化求解,具体的求解公式如下:

2.4 有意思的地方:如何定义业务指标
这里是我看到比较有意思的,业务 - 技术团队的博弈后的指标产物
在解决补贴问题时,时常会困惑如何能合理地解释策略干预的结果,尤其是在与前线运营同学交流的时候。ROI固然是正确且合理的指标,但是我们可以设想这样一个场景,客单价为100,空白组GMV为1000,补贴为0,策略组发放了一个抵扣面额为10的券,最终核销了2张,GMV为1200,补贴为20。那么通过ROI计算公式可得,策略组ROI为200/20=10。与此同时,运营同学发放了一个抵扣面额为20的券,最终核销了10张,GMV为1800,补贴为200,那么运营组的ROI就是800/200=4。从钱效角度出发,当然是策略组干预策略更优秀,但是对于运营同学而言,这次活动确实是他们的策略带来了更多的GMV和单量。

而且,运营同学会自然想到的一个原因是因为策略组使用的券种抵扣额度更低,所以ROI会更高,而一旦有了这样的思路,整个过程就不可避免的走向了设计更为复杂且需要运营侧策略侧高度配合的实验。这与我们想高效低廉的解决这个问题就完全背道而驰了。
因此,我们在这个问题上最后的结论是,ROI是一个非常优秀的业务指标,但为了保证策略的可解释性,它不能作为唯一指标。 我们锚定了运营同学更为关注的直接指标【规模:GMV,单量】【成本:补贴】,并通过加入约束条件和人工干预的手段,使其中一个维度与运营组策略对齐的同时,观察另一维度指标的提升,也既前面提到了两个大的目标方向【相同单量,更少补贴】和【相同补贴,更多单量】。 也就是说,我们只会在【相同补贴】或者【相同单量/GMV】这样的条件下,才去谈论ROI。 也只有在这样的情况下,ROI这个指标的说服力才会显得更加强大。
这里也是一种干预的思路,在券 -> ROI里面,单量/GMV是混杂因子,然后要控制住,进行分层。
2.5 有意思的地方:如何定义模型指标 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然后相互比较。这无疑让整个训练迭代过程变得更痛苦了一点。
我们也尝试了从多个角度去解决这个问题,希望在增量预估模型中建立一套类似auc的标准,但无一例外都没能成功。 包括像AUC那样除以曲线的理论最大面积,但是看公式就可以知道,这个理论的最大面积其实就是样本个数的平方而这么一除之后得到的AUUC也失去了比较的价值了。
2.6 他们接下来想优化啥
- 更好的模型指标 ,能否在增量预估模型中建立一套类似auc的标准
- 离线 -> 线上 ,把离线的决策模块部分推至线上并引入更多的实时特征和接入更多的发券场景(首页天降红包,进店未下单等等),并将其直接包装为一个简单可解释的运营工具
- 优化模型 ,在增量预估模块,我们会持续迭代优化模型。在尝试引入更多维度,信息更丰富的特征的同时,与深度学习模型融合,提高模型精度。
- 用户在其整个生命周期探索 ,当前框架下的算法策略几乎只是针对每一次活动希望求得全局的最优化。而在实际运营中,一个健康的补贴生态一定是去优化用户在其整个生命周期的收益的,所以对用户长期价值(LTV)的建模也是个值得规划和探索的方向
3 QQ 浏览器:PUSH配额优化实践
参考:基于Uplift-Model的QQ 浏览器PUSH配额优化实践

PUSH系统 -> uplife的使用,这里的干预是PUSH下发的条数,outcome 是转化增量收益

不同活跃度人群(1/2/3/4/7日活跃)在PUSH数量下的UTR,大致看到9条以上UTR会有所下降

这里使用的meta-learning模型,因果增强模型,比较少见的将偏序关系、metric learning增强用户特征表示用到模型之中。

这篇的来看,考察的业务指标还是CTR/UTR 这类的。
文章可以看:Push Notification Volume Optimization Based on Uplift Model at Tencent Mobile QQ Browser 笔者一时没找到,后续看到了再研读一下。
4 腾讯
4.1 腾旭看点:信息流实验分析
来自:【信息流实验分析实践】的演讲,其中少量章节提到了uplift modeling,这里简单贴一下相关的几页: 信息流的实验背景:




来仔细看一下分析角度:

将性别 、 年龄、城市进行拆分。
4.2 腾讯微视:数据算法驱动的用户增长
来自2020先行者大会:数据算法驱动的用户增长



5 滴滴
5.1 因果建模在滴滴的应用实践
来自演讲【大数据驱动的因果建模在滴滴的应用实践】 这篇主要偏科普因果推理知识为主。


观测数据和实验数据各有优劣


这里有一些表示学习的介绍。

5.2 网约车供需策略技术基础能力团队
来自文章: 滴滴是如何构造连续因果森林模型并应用在交易市场策略上的?
该篇主要是针对Uplift中,Tree-Based的因果森林模型,且主要就,干预从二分类 -> 多分类 -> 连续进行讨论: 连续因果树
目前市面上大多数流行的增益模型框架(如CausalML, pylift, grf),都很好地支持了二元处理变量(如发券或不发券,吃药或不吃药)的效应估计。 但在多元/连续处理变量方面,尚未有很好的支持。然而,在广大的应用场景中,多元或连续的处理变量更为普遍。在二元因果森林的基础上,我们扩展研发了连续因果森林
因果森林(Causal Forest)是由Susan Athey、Stefan Wager等人开发,专门估计异质处理效应的机器学习模型,是当前增益模型领域最为流行的算法之一。 因果森林以随机森林为基础,通过对特征空间进行重复划分(Recursive Partitioning),以达到局部特征空间的数据同质/无混淆。在一定的假设下[1],我们就可以得到各个维度上异质处理效应(Heterogeneous Treatment Effect)的无偏估计。
5.2.1 二元因果森林

即我们希望从协变量中,找到一个最优分裂节点,最大化子节点间处理效应差异。 在节点内,我们认为所有样本同质,因此可以应用公式(1)进行处理效应的计算。如此重复分裂,直到满足一些预设的停止条件(节点最小样本值、处理变量不平衡度、最小信息增益等),完成一棵树的构造。
二元因果森林的多元处理效应估计:

优点
- 易于实现,无需额外开发;所有二元处理效应模型均适用;
缺点
- 当处理变量值较多时,会产生大量模型,增加训练和部署成本;
- 数据利用不充分,单个模型只用到部分(2/(k+1))数据;
- 不同处理效应间无关联。这在部分场景中并不合理,例如我们认为价格和供需存在单调关系;
- 无法对未出现在数据集中的对照变量值进行推断。
5.2.2 连续因果森林
在定价策略中,所有的模型归根结底都在拟合价格曲线。在需求侧,我们可以合理假设价格曲线具有如下特征:
- 单调性:价格越高,需求越低 ;
- 局部线性:在局部价格区间内,价格与需求呈线性关系。

树模型的一个优点在于,在节点内部我们可以自定义统计量的计算方式。
利用价格需求曲线的特性,我们对节点内的样本(W1,Y1),(W2,Y2),…进行线性回归,然后以线性回归得到的斜率代表连续处理效应。
在模型的预估/推断阶段,为了跳脱出线性假设的约束, 在估计各个对照处理效应的时候,我们退回之前的定义,仅选取对应的对照/参照变量值样本计算对应的处理效应。
因此在我们的连续因果森林模型中,整体的CAPE仅被用作分裂,不会用于效应估计。
优点:
- 考虑了不同处理效应间的关系
- 充分利用数据,不同处理变量间可以互相学习
- 单一模型,减少训练/部署成本
缺点:
- 使用中需考察线性假设的合理性
5.3 数据驱动下经济学与因果推断
来自文章: 双边平台的增长,与因果推断的应用
这边主要从经济学以及整体数据驱动视角,来看因果推断如何在数据驱动中进行。 之前很少从经济学的角度来看数据科学、因果推断,所以值得一读。

** 一个新定义:多边平台 ** 经济学家把平台类商业模式,或者说撮合供需两(多)端交易的商业模式统称多边平台(Multisided Platform)。 科学的分析框架:KPI (主要是规模、体验)= f(供给量) + g(需求量) + u(匹配效率)。 现在平台,大部分精力会放在:需求量 + 匹配效率,供给量会次于前两者。
6 优酷:推荐系统与因果推断
6.1 面向用户增长的信息流分发机制
文章来源讲座【面向用户增长的信息流分发机制】
主要内容是信息流:

简单摘录一些跟因果推断相关的。

Youtube net的问题:user embedding average pooling导致本质上其实依然是item-based。 后续的诸多改进没有本质解决消偏问题。


全生命周期的因果推断这个概念蛮赞,找到使用户从低阶状态到高阶状态转化的干预因子(热点、兴趣等),可以优化的目标和场景也很多(内容采买、设计页面组织等)
两个用途:
- 单用户不可重复实验(Uplift model,可RCT):红包/券/激励 特定时期的头部内容/热点
- 单用户可重复实验(观测数据):用户长期兴趣推断
6.2 因果推断在阿里文娱用户增长中的应用
来自文章: 因果推断在阿里文娱用户增长中的应用
用户增长和智能营销算法的目标 刚刚已经介绍了优酷用户增长的业务打法和构思,其中已经提到,个性化的分发算法是实现用户增长的主战场。其中有两大目标:
- 目标1:用户状态建模。深度建模用户状态和行为,从大数据集中找到使用户从低阶状态到高阶状态转化的干预因子。
- 目标2:个性化算法的升级。将用户行为建模后,在多个场景将这些干预动作落地为个性化推荐算法和营销算法,满足和刺激用户的视频内容消费需求。
6.2.1 用户画像与状态表示法
传统的用户画像表示技术要么服务于运营可解释性,要么服务于推荐或广告系统的模型预估,通常建模成向量 ( 离散高维或低维稠密 )。而我们在深入研究在线视频和付费会员业务后,发现状态转移图是更有力地建模该业务下用户画像的数据结构,原因如下:
- 用户从非会员到购买会员并逐步进入高阶会员的阶段,本质属于一种强规则定义的状态。
- 在线视频,尤其是长视频领域具备长时间、连续型消费 ( 追剧、追网红 ) 等特点,对比传统的图文推荐系统、电商推荐系统和广告系统,用户的消费行为可以在连续的时间上进行切分,状态表示法是对向量表示法的有力补充。
- 新用户的承接和推荐策略是用户增长中"促留存",建立心智的重要阶段。

首先是多目标的排序机制,对于在不同状态下的用户,个性化算法的机制目标会不同 ( 跃迁至目标态 );其次启发我们从更前沿的算法高度来研究状态跃迁的干预手段问题,进而解决推荐系统中长期难解的"可解释性"、“幸存者偏差”、"兴趣探索"等问题。
针对干预手段的研究,在2019年用户增长 & 智能营销团队组建之后,对因果推断 ( Causal Inference ) 算法率先进行了研究和落地,目前在个性化推送、外投 DSP 应用了基于 matching 的无偏 user-cf 算法, 智能红包发放场景应用了 uplift model ,取得了显著的核心业务指标提升,并得到了业务方和兄弟团队的一致认可。
6.2.2 基于因果推断的无偏 user-cf 设计
因果推断的核心研究课题:
- 从众多观测到/未观测到的变量中找出致因 ( causes )
- 预估某个行为/因素的影响力/效益 ( causal effect )
① 构建 Counterfactual 镜像人: 利用无偏信息构造相似度量,构造低活 user 到高活 user 的 matching:
- 基础人口属性、安装的长尾 app 信息等
- 主动搜索行为 ( 非被动推荐 ),尤其是长尾 query
② 去除低活用户的 leave causes,推荐相似高活用户的 stay causes。对于推荐系统来说,这些 causes 包括:
- item 本身:但缺少泛化容易推出老内容
- item 的泛化特征:标签、时效性、质量

由于使用了 matching 方法,这里的算法非常类似传统的 user-cf 类算法,但是和传统 user-cf 核心的区别在于:
- matching 不使被动推荐数据,个性化推送、站内推荐、运营推荐的内容都不使用。
- 只匹配低活到高活,活跃度相同的用户之间不进行匹配。
该算法落地后,在两个 baseline 相对较高的算法场景中取得了较大的收益:其中个性化推送 ( push ),在沉默用户中获得了 50%+ ctr 和 50%+ click 的双增长,在外投 dsp 业务中,拉活量对比峰值接近翻倍。
7 阿里飞猪:因果推断在广告算法中的实践
来自文章: 因果推断在阿里飞猪广告算法中的实践
我们通过引入因果推断技术,将广告投放建模为对搜索产品的干预 ( intervention ),直接预测广告投放与否对业务目标产生的uplift效应,作为下游优化问题的线性奖励 ( rewards ) 或约束 ( constraints ),以支持各类线上策略。

7.1 三种解决CIA问题的方式

有3种方法可以解决这类问题:
① 随机实验
- 选取部分流量,线上广告随机投放,不采用任何策略
- 成本过高,难以落地
② 后采样
- 通过重采样方法,使两组样本分布一致
③ 特征工程
- 机器学习常用方法
- 假设X包含所有的confounders,则虽然两组样本的P(T,Y)不相同,但P(T,X,Y)相同
- 实际很难做到,且对样本也有较高要求
7.2 解决方式一:找到所有混杂因子
针对CIA假定,目标是捕捉到所有的confounders(即影响到广告是否投放,以及影响到我们的平台效率的所有特征)。 这里文章里面把消除假定的方法叫做:特征工程
例如广告的CTR/CVR预估模型;该类模型对广告效率的预估,会预先将原始的复杂特征做汇总。基于此,整体的思想就是基于原生的广告搜索模型做迁移学习。

除了刚刚详细介绍的CTR/CVR,特征工程还包括广告系统中常用的Search Rank Queue(原生产品队列)、用户画像等,在此不做赘述。
7.2 样本重采样 —— Matching
这里文章把matching叫做观测数据重采样

样本重采样常用的方法包括:
- ① Propensity Score Weighting/Matching(倾向评分加权/配比法)
- ② Original Space Matching(原始空间匹配法)等
7.3 uplift模型的评估——barplot + AUUC
因果效应模型的评估,和常见其他用户模型的评估相比,最大的难点在于,每个样本都没有相反label。 对于这类问题,业界常用分位数分析法进行评估,即对于每一类样本,按照广告效应的预测值,从大到小来进行分桶(上图左侧,分了十个桶);每个桶内聚集广告效应的预测值相近的样本(包含不同的label);将每组样本内的label的平均值相减,得到该组样本的uplift。

上图是个理想的情况:左侧贡献比较大,右侧贡献比较小,甚至是负的。基于柱状图做累计分布计算,得到下图:

这个图和常规预估模型中的ROC曲线形似;同样,曲线下的面积(AUC)越大,模型预估效果越好。
7.4 NN-Base的uplift 模型


将所有特征都连到一个DNN里面,采用了ResNets的思想,如上图所示:左侧网络对用户搜索请求预期的转换效率进行建模,右侧网络对“广告是否投放”产生的影响进行建模,最后通过线性模型加以合并。对于广告效应的推断方面,这种模型相比于DNN会有一定的提升(uplift Qini指数提升至0.6)。 还有几个不列了。。
7.5 飞猪:因果推断在广告预算分配
这一块不是特别感冒,就贴一下好了



8 哈啰顺风车从推荐 -> 智能营销
参考: 算法在哈啰顺风车中的实践应用
这篇里面提到了哈罗主要的ML平台架构,如下:

8.1 用户运营周期

对于平台的用户来说,一般都会经历拉新,促活,防流失,召回挽留等阶段。对于每个阶段来说,我们希望有对应的营销算法和触达手段来激发用户在平台的活跃度与忠诚度,同时也能提升公司的钱效,用好每一笔钱。
这里面涉及3个问题,
- 第1个问题是:给什么样的人发券,即圈人阶段;
- 第2个问题是:圈的人给什么样的权益,比如是5块钱还是10块钱;
- 第3个问题是:通过什么样的文案来触达用户,这里面就涉及智能文案的问题。
8.2 给什么样的人发券——Uplift model

整个模型迭代的三个版本:
- v1版本 ,是从response model开始。去预测用户的出行概率,然后根据出行概率来制定不同的发券策略。 这里面会出现自然转化的用户也发放了优惠券,导致钱效不高。
- v2版本 ,我们通过v1版本发券积累的数据,来尝试了uplift增益模型,对发券和不发券对用户带来的增量进行建模,然后根据这个增量来实施发券策略。 这里面有个缺点是,发券的金额仍然没有做到用模型cover住,钱效仍然不是很高。
- v3版本 ,我们通过预测不同券的核销概率,与使用不同券的增益值,来通过运筹优化的问题解决券金额发放千人千面的问题。
v2版本开始关注人群细分:
- 第一类是营销敏感的人群,这类人是下单犹豫不决,需要券来刺激一把。
- 第二类是自然转化的用户,不管发没发券,这个人第二天都是有出行需要的。
- 第三类是无动于衷,发不发券都没反应,
- 第4类是发券可能会起反作用,比如券可能是站内push的方式来发送,用户可能觉得太烦了,直接app关闭推送功能。 这4类人中我们要抓住的就是第一类人,营销活动的重点人群。
这里有针对uplift model有一些实验:

除了meta-learning外还尝试了Tree-Based,uplift model 下的树模型通过对增量直接建模,对特征点进行分裂, 将 X 划分到一个又一个 subspace 中,那划分准则与传统的决策树信息熵或者基尼系数不一样,这边主要是采用分布散度或者CTS分裂准则。
nn-based我们还没有尝试,他是将propensity score估计即倾向性得分和uplift score估计合并到一个网络实现。
8.3 圈的人给什么样的权益
v3版本有提到,要借由运筹学给不同人配不同券 :
比如xij 代表第i个用户是否发放第j种券,那约束条件是:每个用户至多发一种劵,以及所有用户的发券总和不能超过实际预算,优化目标可以是所有用户的增益值最大,也可以是gmv最大或者roi最大等
运筹优化的求解主要是整数规划,整数规划目前采用谷歌的ortools来求解。但是优化器当求解参数上千万时,性能就出问题了,要算十个小时左右,这是不能接受的。目前的解决方案是分而治之,通过分城市来求解优化器,因为每个城市间的用户相对来说是相互独立的,互不干扰。
9 阿里文娱:智能营销增益模型 ( Uplift Model ) 技术实践
一些细节也可参考: 智能营销增益(Uplift Modeling)模型——模型介绍(一) 文章来源: 阿里文娱智能营销增益模型 ( Uplift Model ) 技术实践
9.1 Uplift Model建模评估

uplift评估最大的难点在于我们并没有单个用户uplift的ground truth,因此传统的评估指标像AUC是无法直接使用的,解决的一个思路是通过构造镜像人群的方式来间接拿到uplift的ground truth,比如说经典的AUUC的指标就是这样去计算的,假设现在有两个满足CIA条件假设的样本组,我们可以对两群人分别预估他们的uplift score,之后将人群按照uplift score进行降序排列,通过score分数这一桥梁,可以把两组人群进行镜像人群的对齐,之后分别截取分数最高的比如10%的用户出来,计算这一部分人转化率的差异,这个差异就可以近似地认为是分数最高的这群人真实的uplift,类似地,我们可以计算前20%,40%一直到100%的点上面的值,连线就能得到uplift curve。理论上如果模型对uplift的识别比较准确,我们预测uplift比较高的区间段,真实的uplift也较高,uplift curve就会呈现上凸的形式,我们也可以计算曲线下的面积度量不同模型的表现差异。
9.2 Uplift Model在淘票票智能票补中的应用

该项目的目标是希望对进入到首页的用户个性化地发送红包,实现在预算和ROI的双重约束下提升平台总体购票转化率。我们的权益就是首页的红包,红包的使用规则、红包类型、预算和交互样式由产品运营设计,算法的作用是实现人和权益的精准匹配,我们需要确定应该给哪些用户发放以及发放哪种类型的权益。

因此问题就精细化到如何对用户进行个性化的面额发放上,这可以通过经典的背包问题来抽象,如图所示,第一个公式是我们的目标,最大化的是红包撬动效率,下面的约束条件一个是ROI约束,一个是预算约束。
9.3 如何uplift建模
建模中control组我们取的是随机化实验中的基准组,这部分用户是不进行红包发放的,而treatment组选用的是随机化实验中 专为uplift model建模预留的一小部分随机探测的流量 ,之所以没有用有算法干预下的样本是因为用户的发放的面额与用户的特征是强相关的,并不满足CIA条件,因此这一部分样本虽然量较大,但是不能用于训练。

One Model的差分响应模型,特征层面,除了user维度的基础属性,还有历史的观影行为,以及历史红包的反馈,同时也会引入线上实时的环境特征,最重要的是跟营销相关的特征T,目前T代表的是红包的金额。
实验最后出现了一些问题: 绘制的用户敏感度曲线和我们的预期不太一样,并不是严格的平滑递增的走势。
分析有两个可能的原因:
- 一是与我们整体的样本规模比较有限有关,因为这种无偏样本目前大概只有几百万的量级;
- 二是由于用户行为的稀疏性,在这种场景下我们比较难收集到用户在不同面额下的历史数据,因此也会加剧这种不平滑性。
解决但未完全解决: 做了校准处理,把原始曲线做了一个函数的拟合,一方面可以让结果更加符合我们先验的假设,一方面经过这种函数化之后可以在后续支持更多面额的预测,但这种做法是否是最优的还值得进一步探讨。

黄色区域是基于uplift model的实时预测的模块,当一条用户的请求过来的时候,我们会实时去数据库中取用户的特征以及影片的特征,同时结合当前的环境特征预测用户在当前状态下真实的敏感度,基于这个敏感度可以进行后续分发的面额决策等。

10 快手因果推断与实验设计
参考文章: 快手因果推断与实验设计
在 因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二) 提到了非常多快手的案例。
10.1 基于观测数据或实验数据的因果推断技术案例

双重差分适用于存在不可观测的个体固定效应场景,通过差分消除固定效应,其关键假设是,政策干扰前存在平行趋势,且实验干扰效应不随时间变化。双重差分可以用来消除那些对后期可能存在干扰因素,得到实验效果估计。

当treatment施加到一个群体或者地区上时,很难找到单一的对照组,这种时候采用合成控制方法构造虚拟对照组进行比较,原理是构造一个虚拟的对照组,通过treatment前的数据上学习的权重,拟合实验组在实验开始前的数据,模拟实验组用户在没有接受实验情况下的结果,构造合成控制组,实验开始后,评估实验组和合成控制组之间的差异。
10.2 因果推断与机器学习的异同

因果分析的语言,核心在于因果关系的识别,即合理的估计处理前和处理后现有条件期望的差异,也可以是一种处理缺失数据的问题,在因果推断上我们非常关心的是如何准确的估计结果以及结果的方差。而在机器学习中,我们使用准确度来衡量机器学习模型的好坏,其目标是在训练集上估计一个条件期望,使得测试集上MSE最小。 机器学习可以通过cross-validation(模型参数)的方法去数据驱动的选择一个最佳模型形式,与传统计量经济学方法相比不需要复杂的假设,例如function form的假设,从这种意义上机器学习能够更准确的预测。 但是在因果推断问题上,机器学习的局限性在于,无论用什么机器学习方法,因果识别的条件都不能被放松;同时在机器学习模型通常使用的正则化和过拟合处理,会带来有偏估计,因此我们需要消除这种估计的偏差; 在统计推断上,机器学习的局限性在于,有些模型不能直接计算方差,并且有时即使可以计算,方差的收敛速度也未必能够达到预期,所以针对这些问题,下面介绍了几种方法。
10.3 双重机器学习 Double Machine Learning (DML)
DML则是在进行HTE (Heterogenous Treatment Effect)研究中,通过残差估计矩(服从Neyman orthogonality),即使W估计有偏,依旧可以得到无偏ATE估计!

因果推断会遇到混淆变量的问题,比如想要去分析直播推荐多样性对用户活跃度的影响,但是这些都和用户历史相关。传统计量经济学方法可以解决这个问题,但是依赖很多强假设,强假设下,得到的估计不一定合理,双重机器学习为这个问题提供了解决的思路。
双重机器学习假设所有混淆变量都可以被观测,其正则化过程能够达到高维变量选择的目的,与Frisch-Waugh-Lovell定理相似,模型通过正交化解决正则化带来的偏差。 除了上面所描述的,还有一些问题待解决,比如在ML模型下存在偏差和估计有效性的问题,这个时候可以通过Sample Splitting 和 Cross Fitting的方式来解决,具体做法是我们把数据分成一个训练集和估计集,在训练集上我们分别使用机器学习来拟合影响,在估计集上我们根据拟合得到的函数来做残差的估计,通过这种方法,可以对偏差进行修正。在偏差修正的基础上,我们可以对整个估计方法去构造一个moment condition,得到置信区间的推断,从而得到一个有良好统计的估计。
10.4 因果随机森林模型
PSM评分法的树模型 升级版 可以回顾【3.4章节】 随机森林就相当于训练一棵预测treatment的树,然后在树的叶子结点做因果推断,如果大家仔细看了前面的倾向性得分的话,会发现其实这个思路其实就相当于propensity matching的树版,可能跟subclassification更相似。 整体思路:树进行分组,然后对于对于每个叶子内部,将E(处理组) - E(对照组)

我们通常探究策略对于不同用户异质性的影响,即哪些用户更容易被影响以及影响有多大,传统做法是多维分析,但是效率低,容易犯错。这时可以结合机器学习的方法,这里选择了决策树方法,因为决策树的分桶特性能够帮助解决异质性问题,相对于传统方法因果树做了两点改动:
把数据分成训练集和估计集,一部分训练集去构造树,另一部分估计集去估计因果效应和方差; 在树的分区方式上,使用各个节点的方差对目标函数加以修正。 通常情况下,我们结合实验来做分析。比如在实验中,通过因果树得到因果效应的分布,然后挑选出来那些实验效果显著的用户,去分析他们的特征,以及找到敏感用户,帮助我们了解策略的影响,作出下一步迭代。
10.5 快手:双边实验设计


在双边实验中,同时进行了主播侧和观众侧的分流,主播侧一部分是上了挂件,观众侧一部分能看到一部分看不到,双边实验的优点是可以同时检测两端的效果,同时可以帮助检测到组间的转移和溢出。在了解到组间溢出和干扰下,通过双边实验我们可以更加准确的测算处理效应,在挂件场景下,我们认为N3是代表完全没有处理过的效果,Y代表处理后的结果,N3和Y进行差分,计算产品功能推全后的影响,而且,双边实验能够更好的帮助我们归因。

然而双边实验只能描述简单的组间溢出,在个体和个体之间存在干扰的复杂情况下,双边实验是无法帮助我们判断实验效果,例如直播PK暴击时刻这种情况下,我们通过时间片轮转实验解决,即在一定实验对象上进行实验组策略和对照组策略的反复切换。
10.6 快手:时间片轮转实验

时间片轮转的核心在于:
- 时间片的选择
- 实验总周期选择
- 随机切换时间点是什么样子的 当时间粒度约粗糙,时间上的干扰造成的偏差会越小,但是方差会越大,影响实验的检验效果,针对这个问题,采取的方案是最优设计。

最优设计的核心假设是:
- Outcome有一个绝对上界
- 用户无法知晓下一个时间是否是实验组
- 如果时间片之间存在干扰,干扰的影响是固定且有限的
当我们不知道一个时间片实验时间节点如何设计时,通常采取的步骤是,预估一个时间,通过实验确定carry over的阶数下限是多少,根据阶数下限,找到最优切换时间点,再进行一次实验,通过实验组和对照组的选择来进行因果效应的估计。其缺点在于,实验周期长,没有办法观测到HTE (heterogeneous treatment estimation)。
10.7 快手:城市实验 + 合成控制

当treatment施加到一个群体或者地区上时,很难找到单一的对照组,这种时候采用合成控制方法构造虚拟对照组进行比较,原理是构造一个虚拟的对照组,通过treatment前的数据上学习的权重,拟合实验组在实验开始前的数据,模拟实验组用户在没有接受实验情况下的结果,构造合成控制组,实验开始后,评估实验组和合成控制组之间的差异。
11 腾讯广告:上线Uplift广告增效衡量
一个文档: Uplift广告增效衡量FAQ 一个文章: 国内独家!腾讯广告上线Uplift广告增效衡量
人群需要细分:

那么该如何找到这一部分用户,准确判断广告曝光对真实转化效果的催化作用呢?广告主通常采用的传统衡量方式有以下2种:
- 从衡量用户点击与转化的关系入手:只看真正点击了广告、进而发生转化行为的人有哪些。这种方式虽然可以找到确实和广告产生了互动的人,但会严重低估广告曝光带来影响。因为通常好的广告创意即使当下没被点击仍然也会产生潜在影响,根据腾讯广告既有研究数据:会购买你产品的消费者中,90%以上的人其实不会点击你的广告, 这意味着虽然消费者当下没有直接点击广告,却同样受到了广告的影响,之后在其他渠道完成了后续的转化行为。
- 直接从衡量广告曝光对转化的关系入手:这种衡量方式通常在投放后找到曝光和非曝光的两群人,对比二者的转化率和转化效果;或直接对比广告投放前和投放后,转化率、售卖率、搜索指数等指标是否有所提升。
以上两种对比方式在科学性上存在着不足:
- 首先,曝光人群与非曝光人群之间的真实差异不止“是否看了本次曝光广告”这一个变量:因为广告投放本身是带有选择性的,通过竞价胜出的广告,本身就会曝光给具有一定特质的人,这群人可能更容易发生点击、发生转化,或本身就是已经成为了品牌固定消费者的人,因此直接对比曝光人群和非曝光人群的转化率并不严谨。
- 其次,投放前和投放后所面临的市场情况存在不可测差异:市场无时无刻都在发生变化,品牌的销售曲线自然就会出现波动。在不投放广告时,销量增高或销量减少都可能频繁出现,用时序来看投放前后的对比,是无法屏蔽掉市场的天然变化
- 同时,由于二者都是采用后置分析,上述两种衡量方式仅能说明广告曝光与转化之间的相关关系,而非因果关系。
11.1 幽灵广告框架
腾讯广告系统内幽灵广告框架,推出了国内唯一可以科学衡量两者之间因果关系的技术——Uplift广告增效衡量。 通过严谨的系统控制,实现科学衡量曝光对转化的增效影响:

- 投放前:Uplift广告增效衡量将投放人群随机地分为Treatment Group(处理组)和Control Group(控制组)。以确保投放前两个组别在转化行为表现上没有显著差异。
- 投放中:Treatment Group和Control Group都会参与广告竞争,以确保这两个组别都经过竞争环境的选择,此时,Treatment Group和Control Group仍然没有任何显著差异。当Treatment Group竞争胜出, 广告将会成功曝光出去;当Control Group赢得曝光机会时,系统会通过内部替换曝光的技术方式,确保他们不会看到广告;基于此原理,确保了Treatment Group和Control Group的唯一差别为“是否看过本次在腾讯投放的广告”。
- 投放后:对比Treatment Group和Control Group的转化率,计算提升值。
通过以上严谨的控制操作,Uplift广告增效衡量实现了曝光对转化真实增效的科学衡量,做到了曝光与转化之间因果关系的探寻。

11.2 使用场景
Uplift衡量致力通过以下投放场景解决三大类问题:

12 因果分析工具在快手的应用
文章来源地址: 因果分析工具在快手的应用 2020年的一篇文章,总结了快手常见的一些计量因果推断的方法:
