技术标签: 营销科学 ATC 腾讯看点 异质性 因果推断 双重差分
这部分只是抛砖引玉贴一些看到的非常好的业内方案。
因果推断在很多领域都有很有意思的应用,值得收藏。
来自datafuntalk -【2-1观测数据因果推断应用-启动重置体验分析】
前提假设,用户是随机分配的;
ATE是在实验数据中,Y(1)-Y(0)
rubin potitential outcome -> 实验数据
DAG,因果图 -> 观测数据,不过观测数据比较麻烦
工具变量、IV变量、断点回归 -> 绕开了混杂银子,在业务层面更容易满足 -> 准实验方法
实在不行,才是PSM,IPTW
曝光天气与未曝光,本身就有有偏的,曝光的人本来要比未曝光要更容易接受,或者在有干预
所以,不能直接使用次留的结论,
那么,DID这里需要满足平行性,就可以进行对比
二次差分得到一个效应
为了因果效应的正确性,就是要看,天气内容之后的转化路径,就是次留提升不够,
还要看内容有没有配套的文章资讯,天气的点击率;
今天发了天气内容 -(验证的方式)> 第二天天气资讯内容的点击率如何
横轴是首章阅读时长,纵轴是次留数据;
115s连续邻域左右,混淆因子作用差别不大,如果这个点有很大的差异,那么说明确实是有因果关系的
提升 首章阅读时长 -> 提升次留
措施:
浏览器里面,你刷起来APP里面去了,过了40分钟回来,又让你重新搜一遍,
app里面,你离开了1min,又有闪屏
当然,有闪屏说明可以很好的有商业收入
分析框架:
短期表现捕捉方式:被打断之后,下一次使用的使用时长、跳出率等指标,是否会有波动
长期表现捕捉方式:一段时间的打开次数
是否存在一些人群(异质性人群),对广告不敏感,有or没有闪屏都无所谓
短期影响,访问间隔是在40min左侧,还是在右侧,那么可以使用断点回归
长期影响,有可能受很多混淆变量影响,PSM,混淆控制的方式去处理;
但是PSM,matching的方式,很容易被挑战,有很多混淆因子,那咋解决?
异质性用户,一般会用uplife的方法,但是Uplife方法是实验方法,那在观测数据中如何进行实验?
横轴,跳出时长;纵轴:session使用时长 、 session搜索时长
观察在跳出时长40min,前后是否有明显的差异
很难控制混杂因子,因为你可能不知道还有什么因子被遗漏了,PSM问题:
如果,我们控制了一段时间内,活跃度(访问次数一致),
那么每天都来,但是来一会就走的人,有没有重置,没有关系
解决遗漏混杂因子的问题,这里构造了准实验变量,
如果我们在40min作为一个实验点来观察40min以内与40min以外,
用户是很难感知,这个40min是个什么时间段的,那就把40min这个点变成领域(时间段)
如果找领域范围呢? 越大,实验越多,但越不精准;所以这里考察了两个指标:
这样用户行为落在[20,40] ,[40,60]是随机事件,可以构造一个长期时间变量rate(生存分析里面有时变函数,构造一个跟着时间走的变量)
这个准实验变量:Rate = (40-60min) / (0-60min)
现实含义是?
特征平衡性检验,就是要看,这个IV变量 -> X是独立的,可以后续进行使用
Rate ~ 活跃天数Y的关系
rate ~Y的相关性就是因果性,
击中率Rate,经常长时间跳出的,越大;活跃天数越大
被启动重置打断的次数越多,那么活跃天数的比例就低
整个异质性的探究,其实是相当于对人群进行细分,然后针对不同的人群进行不同的策略;
这里每个人身上的行为标签非常多。
需要针对,不同行为下,是否主动打断,造成了最终活跃度/收入/信息流时长/搜索时长 有改变(多种行为 -(干预:打断)> 多结果 )
方法的调研,从四个方向去调研方法论,从下钻分析(从大区分析 -> 城市)与建模对比,肯定是建模好;
那么建模又分为mete-learner / direct uplift model / transform outcome / mr-uplift(不可逆),这里沿着transfrom outcome进行改造。
算法目标以及流程:
评估准确性的方法,gini面积,catboost比线性好
搜索时长、总时长是两个模型,Y/G,根据两个模型的结果画出:搜索时长、总时长的象限,
四个象限其实就代表着不同人群分类,1-无影响人群,3-严重影响人群,2/4-分别影响人群
同时对四个象限进行下钻分析,找到不同象限的不同指标的差异,结论:
前面的看细粒度维度的指标是一种定性的方式,现在针对是否主动打开,可以跑出这些Outcome指标,看一下是否有均值统计量的差异(这里可以根据数据,构造一些简单的均值检验)
这里有人问,为什么要定性解释和定量解释?
演讲者解释的是,定性解释,会受异常值影响,毕竟象限分析比较粗粒度,有好的样本,有坏的样本;定量是辅助解释 + 排除定性解释的问题,并且定量可以更加准确 + 多维度的解释
这里,笔者觉得就是,估计效应有了,要具体计量出ATE估计量一样
得到了一些结论,异质性分析可以帮助拆分行为,进行精细化策略。
同时发现,重置对搜索用户影响非常大,如果搜索的用户,需要产品设计上进行改动,告诉用户,之前查看的内容放在了哪里。
与机器学习传统三大方向【推荐,搜索,广告】不同,补贴问题中最核心和最关键的一点是补贴这个行为需要付出【成本】。这个概念的引入使得我们必须要将对这部分【成本】的使用效率作为一个核心指标,也就是所谓的「ROI」。
也就是衡量增加的补贴【成本】所带来【增量】指标收益。
对于这个指标的优化,一个直观的解法就是随机AB实验,通过足够多的,设计逻辑严密的,随机性完美的AB实验,我们一定可以在这个指标的优化上取得令人满意的结果。但是这个方法在具体业务中的问题是它太过于奢侈了,无论是在预算还是在时间上。
因此,为了可以高效低廉地求解这个问题,我们可以将优化目标拆解为两个子问题:
如何判定合理的用户,就需要区分:
补贴敏感:
没有补贴就不下单,有补贴才会下单;补贴敏感人群。
自然转化:
有没有补贴都会下单;自然转化人群。
无动于衷:
有没有补贴都不会下单;
反作用:
无补贴时会下单,有补贴时反而不会下单;补贴活动带来反作用。
这块可参考:智能营销增益(Uplift Modeling)模型——模型介绍(一)
与智能补贴相关的工程架构如图:
使用方法是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比较好,且无干预比较准确
这个部分很少有人提及,有点像是归因 -> 预算分配这样的,将模型的效用更大化。
对增量预估完毕后,接下来就需要具体地为用户池中用户分配补贴券。在基于增量预估的基础上,我们尝试了两种分发策略:
贪心分配
很多时候,运营对于使用的券类别和每个券类别的预算分配都有比较大的限制和约束。在这样的约束下,我们的做法是按照券值面额从低到高,为每个券类别计算可支配数量,然后对用户池所有用户按照预估出的Uplift值和计算出的可发放数量倒排截断,并将分配完毕的用户从备选用户池中移除。这样一个用户如果在各种券类别下uplift都很高时,我们将会优先为他/她配置券值较低的补贴券。这样做法的好处是简洁明了实现简单,在人工干预较强的时候对于运营的可解释性也比较强。缺点当然就是在自由度更高情况下,显然不能达到全局最优。
整数规划
而当我们对于预算和券种的设置拥有了更多的自主权时,我们也尝试了在预算约束下的最大化求解,具体的求解公式如下:
这里是我看到比较有意思的,业务 - 技术团队的博弈后的指标产物
在解决补贴问题时,时常会困惑如何能合理地解释策略干预的结果,尤其是在与前线运营同学交流的时候。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是混杂因子,然后要控制住,进行分层。
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也失去了比较的价值了。
参考:基于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
笔者一时没找到,后续看到了再研读一下。
来自:【信息流实验分析实践】的演讲,其中少量章节提到了uplift modeling,这里简单贴一下相关的几页:
信息流的实验背景:
来仔细看一下分析角度:
将性别 、 年龄、城市进行拆分。
来自2020先行者大会:数据算法驱动的用户增长
来自演讲【大数据驱动的因果建模在滴滴的应用实践】
这篇主要偏科普因果推理知识为主。
观测数据和实验数据各有优劣
这里有一些表示学习的介绍。
来自文章:滴滴是如何构造连续因果森林模型并应用在交易市场策略上的?
该篇主要是针对Uplift中,Tree-Based的因果森林模型,且主要就,干预从二分类 -> 多分类 -> 连续进行讨论: 连续因果树
目前市面上大多数流行的增益模型框架(如CausalML, pylift, grf),都很好地支持了二元处理变量(如发券或不发券,吃药或不吃药)的效应估计。
但在多元/连续处理变量方面,尚未有很好的支持。然而,在广大的应用场景中,多元或连续的处理变量更为普遍。在二元因果森林的基础上,我们扩展研发了连续因果森林
因果森林(Causal Forest)是由Susan Athey、Stefan Wager等人开发,专门估计异质处理效应的机器学习模型,是当前增益模型领域最为流行的算法之一。
因果森林以随机森林为基础,通过对特征空间进行重复划分(Recursive Partitioning),以达到局部特征空间的数据同质/无混淆。在一定的假设下[1],我们就可以得到各个维度上异质处理效应(Heterogeneous Treatment Effect)的无偏估计。
即我们希望从协变量中,找到一个最优分裂节点,最大化子节点间处理效应差异。
在节点内,我们认为所有样本同质,因此可以应用公式(1)进行处理效应的计算。如此重复分裂,直到满足一些预设的停止条件(节点最小样本值、处理变量不平衡度、最小信息增益等),完成一棵树的构造。
二元因果森林的多元处理效应估计:
优点
缺点
在定价策略中,所有的模型归根结底都在拟合价格曲线。在需求侧,我们可以合理假设价格曲线具有如下特征:
树模型的一个优点在于,在节点内部我们可以自定义统计量的计算方式。
利用价格需求曲线的特性,我们对节点内的样本(W1,Y1),(W2,Y2),…进行线性回归,然后以线性回归得到的斜率代表连续处理效应。
在模型的预估/推断阶段,为了跳脱出线性假设的约束, 在估计各个对照处理效应的时候,我们退回之前的定义,仅选取对应的对照/参照变量值样本计算对应的处理效应。
因此在我们的连续因果森林模型中,整体的CAPE仅被用作分裂,不会用于效应估计。
优点:
缺点:
来自文章:双边平台的增长,与因果推断的应用
这边主要从经济学以及整体数据驱动视角,来看因果推断如何在数据驱动中进行。
之前很少从经济学的角度来看数据科学、因果推断,所以值得一读。
** 一个新定义:多边平台 **
经济学家把平台类商业模式,或者说撮合供需两(多)端交易的商业模式统称多边平台(Multisided Platform)。
科学的分析框架:KPI (主要是规模、体验)= f(供给量) + g(需求量) + u(匹配效率)。
现在平台,大部分精力会放在:需求量 + 匹配效率,供给量会次于前两者。
文章来源讲座【面向用户增长的信息流分发机制】
主要内容是信息流:
简单摘录一些跟因果推断相关的。
Youtube net的问题:user embedding average pooling导致本质上其实依然是item-based。
后续的诸多改进没有本质解决消偏问题。
全生命周期的因果推断这个概念蛮赞,找到使用户从低阶状态到高阶状态转化的干预因子(热点、兴趣等),可以优化的目标和场景也很多(内容采买、设计页面组织等)
两个用途:
来自文章:因果推断在阿里文娱用户增长中的应用
用户增长和智能营销算法的目标
刚刚已经介绍了优酷用户增长的业务打法和构思,其中已经提到,个性化的分发算法是实现用户增长的主战场。其中有两大目标:
传统的用户画像表示技术要么服务于运营可解释性,要么服务于推荐或广告系统的模型预估,通常建模成向量 ( 离散高维或低维稠密 )。而我们在深入研究在线视频和付费会员业务后,发现状态转移图是更有力地建模该业务下用户画像的数据结构,原因如下:
针对干预手段的研究,在2019年用户增长 & 智能营销团队组建之后,对因果推断 ( Causal Inference ) 算法率先进行了研究和落地,目前在个性化推送、外投 DSP 应用了基于 matching 的无偏 user-cf 算法,智能红包发放场景应用了 uplift model,取得了显著的核心业务指标提升,并得到了业务方和兄弟团队的一致认可。
因果推断的核心研究课题:
① 构建 Counterfactual 镜像人:
利用无偏信息构造相似度量,构造低活 user 到高活 user 的 matching:
② 去除低活用户的 leave causes,推荐相似高活用户的 stay causes。对于推荐系统来说,这些 causes 包括:
该算法落地后,在两个 baseline 相对较高的算法场景中取得了较大的收益:其中个性化推送 ( push ),在沉默用户中获得了 50%+ ctr 和 50%+ click 的双增长,在外投 dsp 业务中,拉活量对比峰值接近翻倍。
来自文章:
因果推断在阿里飞猪广告算法中的实践
我们通过引入因果推断技术,将广告投放建模为对搜索产品的干预 ( intervention ),直接预测广告投放与否对业务目标产生的uplift效应,作为下游优化问题的线性奖励 ( rewards ) 或约束 ( constraints ),以支持各类线上策略。
有3种方法可以解决这类问题:
① 随机实验
② 后采样
③ 特征工程
针对CIA假定,目标是捕捉到所有的confounders(即影响到广告是否投放,以及影响到我们的平台效率的所有特征)。
这里文章里面把消除假定的方法叫做:特征工程
例如广告的CTR/CVR预估模型;该类模型对广告效率的预估,会预先将原始的复杂特征做汇总。基于此,整体的思想就是基于原生的广告搜索模型做迁移学习。
除了刚刚详细介绍的CTR/CVR,特征工程还包括广告系统中常用的Search Rank Queue(原生产品队列)、用户画像等,在此不做赘述。
这里文章把matching叫做观测数据重采样
样本重采样常用的方法包括:
因果效应模型的评估,和常见其他用户模型的评估相比,最大的难点在于,每个样本都没有相反label。
对于这类问题,业界常用分位数分析法进行评估,即对于每一类样本,按照广告效应的预测值,从大到小来进行分桶(上图左侧,分了十个桶);每个桶内聚集广告效应的预测值相近的样本(包含不同的label);将每组样本内的label的平均值相减,得到该组样本的uplift。
上图是个理想的情况:左侧贡献比较大,右侧贡献比较小,甚至是负的。基于柱状图做累计分布计算,得到下图:
这个图和常规预估模型中的ROC曲线形似;同样,曲线下的面积(AUC)越大,模型预估效果越好。
将所有特征都连到一个DNN里面,采用了ResNets的思想,如上图所示:左侧网络对用户搜索请求预期的转换效率进行建模,右侧网络对“广告是否投放”产生的影响进行建模,最后通过线性模型加以合并。对于广告效应的推断方面,这种模型相比于DNN会有一定的提升(uplift Qini指数提升至0.6)。
还有几个不列了。。
这一块不是特别感冒,就贴一下好了
这篇里面提到了哈罗主要的ML平台架构,如下:
对于平台的用户来说,一般都会经历拉新,促活,防流失,召回挽留等阶段。对于每个阶段来说,我们希望有对应的营销算法和触达手段来激发用户在平台的活跃度与忠诚度,同时也能提升公司的钱效,用好每一笔钱。
这里面涉及3个问题,
整个模型迭代的三个版本:
v2版本开始关注人群细分:
这里有针对uplift model有一些实验:
除了meta-learning外还尝试了Tree-Based,uplift model 下的树模型通过对增量直接建模,对特征点进行分裂, 将 X 划分到一个又一个 subspace 中,那划分准则与传统的决策树信息熵或者基尼系数不一样,这边主要是采用分布散度或者CTS分裂准则。
nn-based我们还没有尝试,他是将propensity score估计即倾向性得分和uplift score估计合并到一个网络实现。
v3版本有提到,要借由运筹学给不同人配不同券 :
比如xij 代表第i个用户是否发放第j种券,那约束条件是:每个用户至多发一种劵,以及所有用户的发券总和不能超过实际预算,优化目标可以是所有用户的增益值最大,也可以是gmv最大或者roi最大等
运筹优化的求解主要是整数规划,整数规划目前采用谷歌的ortools来求解。但是优化器当求解参数上千万时,性能就出问题了,要算十个小时左右,这是不能接受的。目前的解决方案是分而治之,通过分城市来求解优化器,因为每个城市间的用户相对来说是相互独立的,互不干扰。
公众号:打造哈啰自动化增⻓算法闭环(上)
所以对因果效应的建模是我们的一个重点,我们用的是Uplift model。
第一版我们建了两种Uplift model,它适用的场景不同。第一种是基于Tree构建的,原始的Uplift Tree相当于是做一个增量转化率的预估。增量转化为什么选Tree,第一它是对Uplift进行直接建模的,而不是说建两个不同的模型,它的建模精度会比较好。另外Tree的可解释性是相对强的,我们知道Tree基本上是通过分裂准则来模拟目标最大化的一个过程。我们可以对比一下普通的分裂准则和Uplift Tree的分裂准则有什么区别,普通分裂准则就是信息增益最大化,Uplift Tree最原始的方式是通过分布散度最大,来让我们的干预组和被干预组,所谓干预组也就是发券组,这两个组的分布差异最大,从而达到Uplift最大的效果。下面是一个示意图,通过Uplift Tree的分裂,我们最终可以把人群真正区分成4类不同类型的人群,最后只对营销敏感的这部分人群进行真正的营销,而其他三类并不需要营销。
当然这个原始的Uplift Tree,它是针对转化率做增量的,而我们现实的业务中大部分场景目标是收益,而不是转化率。所以我们进行一个改进,把分裂准则改进成一种新的方式来做收益的最大化。
假设分裂前数据集是θ,我们就可以计算分裂前的收益是多少,也就是发券组和不发券组人均效益进行一个差,然后乘以一个平方,它其实是对欧氏距离分布散度最大化的一个扩展的改进。然后是根据某个特征对当前节点进行分裂,得到一个分裂后的因果效应,分裂前和分裂后的因果效应的差,其实就代替了我们之前的信息增益的最大化。通过分裂前和分裂后因果效应差值的最大化,来作为我们的一个分裂准则,就这样不断选择新的特征,这是第一层的分裂。第二层就选另一个特征接着分裂,不断选择这种迭代递归的过程,最终整个构建出来。这就是一个TreeLift的过程。
TreeLift的难点是怎么构造样本,因为现实中不存在平行时空,我们不可能对一个人同时发券又不发券。那怎么样让模型学习发券相比不发券的增量收益呢?我们想到是用群体来代替个体,如果是两个同质的群体,其实可以学习发券群体和不发券群体之间的增量收益。这就通过构造随机实验的方式,也是现在Uplift领域的一个主流方法。最终的效果,我们在自有的数据集和业界的公开数据集及传统的经典方法做了一个对比,发现它的Uplift曲线是最大的,相比我们自己的响应模型,在场景下的收益大概有4.7%的提升。
另一个是我们的DeepLift的模型,DeepLift模型是我们在DragonNet的基础上进行改进的。DragonNet有几个优点,它不需要用随机实验,随机实验的构造成本是很高的,你的模型后面基本上没有办法做自动的更新。我们用DragonNet通过向量化模拟了一个随机实验,同样它又构造了一个倾向分的子网络,能够做一个样本筛选,可以把因果无关的一些特征变量筛掉,而大量的特征其实和因果并没有关系。我们在DragonNet基础上做了一些改进,第一是增加了模型的复杂度,第二是改变它的loss,更加的贴近业务。因为原始的DragonNet其实和原始的Uplift Tree一样,并没有以收益为目标,而是以转化率为目标。因此我们各种loss增加了新的G的网络,以及改变了它基础的loss的方式。我们DeepLift模型的网络结构可以看右边,DeepLift我们更多使用在一些需要自动更新的场景。
一些细节也可参考:智能营销增益(Uplift Modeling)模型——模型介绍(一)
文章来源:阿里文娱智能营销增益模型 ( 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就会呈现上凸的形式,我们也可以计算曲线下的面积度量不同模型的表现差异。
该项目的目标是希望对进入到首页的用户个性化地发送红包,实现在预算和ROI的双重约束下提升平台总体购票转化率。我们的权益就是首页的红包,红包的使用规则、红包类型、预算和交互样式由产品运营设计,算法的作用是实现人和权益的精准匹配,我们需要确定应该给哪些用户发放以及发放哪种类型的权益。
因此问题就精细化到如何对用户进行个性化的面额发放上,这可以通过经典的背包问题来抽象,如图所示,第一个公式是我们的目标,最大化的是红包撬动效率,下面的约束条件一个是ROI约束,一个是预算约束。
建模中control组我们取的是随机化实验中的基准组,这部分用户是不进行红包发放的,而treatment组选用的是随机化实验中专为uplift model建模预留的一小部分随机探测的流量,之所以没有用有算法干预下的样本是因为用户的发放的面额与用户的特征是强相关的,并不满足CIA条件,因此这一部分样本虽然量较大,但是不能用于训练。
One Model的差分响应模型,特征层面,除了user维度的基础属性,还有历史的观影行为,以及历史红包的反馈,同时也会引入线上实时的环境特征,最重要的是跟营销相关的特征T,目前T代表的是红包的金额。
实验最后出现了一些问题:
绘制的用户敏感度曲线和我们的预期不太一样,并不是严格的平滑递增的走势。
分析有两个可能的原因:
解决但未完全解决:
做了校准处理,把原始曲线做了一个函数的拟合,一方面可以让结果更加符合我们先验的假设,一方面经过这种函数化之后可以在后续支持更多面额的预测,但这种做法是否是最优的还值得进一步探讨。
黄色区域是基于uplift model的实时预测的模块,当一条用户的请求过来的时候,我们会实时去数据库中取用户的特征以及影片的特征,同时结合当前的环境特征预测用户在当前状态下真实的敏感度,基于这个敏感度可以进行后续分发的面额决策等。
参考文章: 快手因果推断与实验设计
在因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二) 提到了非常多快手的案例。
双重差分适用于存在不可观测的个体固定效应场景,通过差分消除固定效应,其关键假设是,政策干扰前存在平行趋势,且实验干扰效应不随时间变化。双重差分可以用来消除那些对后期可能存在干扰因素,得到实验效果估计。
当treatment施加到一个群体或者地区上时,很难找到单一的对照组,这种时候采用合成控制方法构造虚拟对照组进行比较,原理是构造一个虚拟的对照组,通过treatment前的数据上学习的权重,拟合实验组在实验开始前的数据,模拟实验组用户在没有接受实验情况下的结果,构造合成控制组,实验开始后,评估实验组和合成控制组之间的差异。
因果分析的语言,核心在于因果关系的识别,即合理的估计处理前和处理后现有条件期望的差异,也可以是一种处理缺失数据的问题,在因果推断上我们非常关心的是如何准确的估计结果以及结果的方差。而在机器学习中,我们使用准确度来衡量机器学习模型的好坏,其目标是在训练集上估计一个条件期望,使得测试集上MSE最小。
机器学习可以通过cross-validation(模型参数)的方法去数据驱动的选择一个最佳模型形式,与传统计量经济学方法相比不需要复杂的假设,例如function form的假设,从这种意义上机器学习能够更准确的预测。
但是在因果推断问题上,机器学习的局限性在于,无论用什么机器学习方法,因果识别的条件都不能被放松;同时在机器学习模型通常使用的正则化和过拟合处理,会带来有偏估计,因此我们需要消除这种估计的偏差;
在统计推断上,机器学习的局限性在于,有些模型不能直接计算方差,并且有时即使可以计算,方差的收敛速度也未必能够达到预期,所以针对这些问题,下面介绍了几种方法。
DML则是在进行HTE (Heterogenous Treatment Effect)研究中,通过残差估计矩(服从Neyman orthogonality),即使W估计有偏,依旧可以得到无偏ATE估计!
因果推断会遇到混淆变量的问题,比如想要去分析直播推荐多样性对用户活跃度的影响,但是这些都和用户历史相关。传统计量经济学方法可以解决这个问题,但是依赖很多强假设,强假设下,得到的估计不一定合理,双重机器学习为这个问题提供了解决的思路。
双重机器学习假设所有混淆变量都可以被观测,其正则化过程能够达到高维变量选择的目的,与Frisch-Waugh-Lovell定理相似,模型通过正交化解决正则化带来的偏差。
除了上面所描述的,还有一些问题待解决,比如在ML模型下存在偏差和估计有效性的问题,这个时候可以通过Sample Splitting 和 Cross Fitting的方式来解决,具体做法是我们把数据分成一个训练集和估计集,在训练集上我们分别使用机器学习来拟合影响,在估计集上我们根据拟合得到的函数来做残差的估计,通过这种方法,可以对偏差进行修正。在偏差修正的基础上,我们可以对整个估计方法去构造一个moment condition,得到置信区间的推断,从而得到一个有良好统计的估计。
PSM评分法的树模型 升级版
可以回顾【3.4章节】
随机森林就相当于训练一棵预测treatment的树,然后在树的叶子结点做因果推断,如果大家仔细看了前面的倾向性得分的话,会发现其实这个思路其实就相当于propensity matching的树版,可能跟subclassification更相似。
整体思路:树进行分组,然后对于对于每个叶子内部,将E(处理组) - E(对照组)
我们通常探究策略对于不同用户异质性的影响,即哪些用户更容易被影响以及影响有多大,传统做法是多维分析,但是效率低,容易犯错。这时可以结合机器学习的方法,这里选择了决策树方法,因为决策树的分桶特性能够帮助解决异质性问题,相对于传统方法因果树做了两点改动:
把数据分成训练集和估计集,一部分训练集去构造树,另一部分估计集去估计因果效应和方差;
在树的分区方式上,使用各个节点的方差对目标函数加以修正。
通常情况下,我们结合实验来做分析。比如在实验中,通过因果树得到因果效应的分布,然后挑选出来那些实验效果显著的用户,去分析他们的特征,以及找到敏感用户,帮助我们了解策略的影响,作出下一步迭代。
在双边实验中,同时进行了主播侧和观众侧的分流,主播侧一部分是上了挂件,观众侧一部分能看到一部分看不到,双边实验的优点是可以同时检测两端的效果,同时可以帮助检测到组间的转移和溢出。在了解到组间溢出和干扰下,通过双边实验我们可以更加准确的测算处理效应,在挂件场景下,我们认为N3是代表完全没有处理过的效果,Y代表处理后的结果,N3和Y进行差分,计算产品功能推全后的影响,而且,双边实验能够更好的帮助我们归因。
然而双边实验只能描述简单的组间溢出,在个体和个体之间存在干扰的复杂情况下,双边实验是无法帮助我们判断实验效果,例如直播PK暴击时刻这种情况下,我们通过时间片轮转实验解决,即在一定实验对象上进行实验组策略和对照组策略的反复切换。
时间片轮转的核心在于:
时间片的选择
实验总周期选择
随机切换时间点是什么样子的
当时间粒度约粗糙,时间上的干扰造成的偏差会越小,但是方差会越大,影响实验的检验效果,针对这个问题,采取的方案是最优设计。
最优设计的核心假设是:
Outcome有一个绝对上界
用户无法知晓下一个时间是否是实验组
如果时间片之间存在干扰,干扰的影响是固定且有限的
当我们不知道一个时间片实验时间节点如何设计时,通常采取的步骤是,预估一个时间,通过实验确定carry over的阶数下限是多少,根据阶数下限,找到最优切换时间点,再进行一次实验,通过实验组和对照组的选择来进行因果效应的估计。其缺点在于,实验周期长,没有办法观测到HTE (heterogeneous treatment estimation)。
当treatment施加到一个群体或者地区上时,很难找到单一的对照组,这种时候采用合成控制方法构造虚拟对照组进行比较,原理是构造一个虚拟的对照组,通过treatment前的数据上学习的权重,拟合实验组在实验开始前的数据,模拟实验组用户在没有接受实验情况下的结果,构造合成控制组,实验开始后,评估实验组和合成控制组之间的差异。
一个文档:Uplift广告增效衡量FAQ
一个文章:国内独家!腾讯广告上线Uplift广告增效衡量
人群需要细分:
那么该如何找到这一部分用户,准确判断广告曝光对真实转化效果的催化作用呢?广告主通常采用的传统衡量方式有以下2种:
以上两种对比方式在科学性上存在着不足:
腾讯广告系统内幽灵广告框架,推出了国内唯一可以科学衡量两者之间因果关系的技术——Uplift广告增效衡量。
通过严谨的系统控制,实现科学衡量曝光对转化的增效影响:
通过以上严谨的控制操作,Uplift广告增效衡量实现了曝光对转化真实增效的科学衡量,做到了曝光与转化之间因果关系的探寻。
Uplift衡量致力通过以下投放场景解决三大类问题:
来自202205-datafun因果推断峰会
双边实验按照实验设计进行分类:
广告流量的四格表:
实际发生外溢效果,以下是几种解决方式:
全新的排序实验:
列联表联合采样:
模拟系统:
文章来源地址:因果分析工具在快手的应用
2020年的一篇文章,总结了快手常见的一些计量因果推断的方法:
DID:
DID与固定效应模型:
合同控制法与矩阵补全:
DML:
这篇比较好的是实际业务中使用,比较接地气
核心是在说,智能客源维护方向,客源管理平台论证可行性
论证,干预是否显著:
是否有客源管理平台工具 影响显著?
使用DID进行论证
设置了两类实验组:
论证三:反事实
人群分组的弊端,会有混杂因子
先是自我发掘了一个混杂因子:经纪人优质情况,
优质的经纪人可能会偏向使用工具
随机实验,可以很好的消除混杂因子
实验组和对照组的人均成交量近似相等,而上线之后实验组明显高于对照组,大约提升2.5%。结论:工具可以提升成交。
顶部是即接近成交的优质客户,
中部是质量较好的客户,底部是大量储备客户。
我们希望对于顶部客户快速去化,中部客户向上催熟
观察三个分数段的客户在工具上线之后是否产生了成交量的上升。如上图所示,通过对比明显发现,上线之后高分客户的成交量有明显上升,而中低分客户的成交量没有明显变化。所以,我们认为智能客源管理工具确实促进了高分客户的更多成交,进而促进了整体的成交。
2022-1-29更新:
这篇是datafun的讲座笔记
主要是快手在推荐中如何使用因果推断
二分类的情况下:
以上是讲座老师分享的PS计算过程,其中平衡检验是KS检验。
多分类的情况
这里提到的是,采用类似带权重的聚类方式;
第二种特征匹配
这个标题,就很有意思
包括:
用户留存的HTE图:
这张HTE图解读的角度有些特别,跟下图类似:
跟Uplift中的图类似
这个章节突兀,有点奇怪,笔者还没品出深意。。
WWW21发表的DICE。DICE这一方法是基于causal embedding的解决方案。论文认为用户的交互行为可以被拆解为两部分:
我们可以进一步抽象为基于interest和基于conformity的两部分表征。那么问题就转化为如何构建不同的数据集来分别学习interest和conformity的embedding。
在构造数据集时可以使用<user,pos_item,neg_item>三元组。当用户点击了一个postive item且它的流行度比negative item更小,就认为交互行为是基于兴趣的;如果点击的item的流行度大于negative item,那么这次交互是由从众心理和用户兴趣叠加而成的。
构造因果图的时候将点击行为分为K->Y的用户兴趣匹配、I->Y的物品流行度以及U->Y的用户从众心理。
第四个工作和第三个工作解决方案相同,它解决的是“标题党”问题。当一个用户点击一个视频,他可能是被标题吸引进来,但实际上他对视频内容不感兴趣。
当平台上这类视频特别多时是非常影响用户体验的。因此为了解决这个问题,文章构建了如上因果图,e代表标题,t代表视频的内容表征,u是用户表征,Y是交互表征。我们的目标是去除标题e对Y的边,使得user与item的匹配是基于纯兴趣匹配的。类似第三个工作,文章使用TE减NDE的方式进行推导,得到unbias的输出结果。另外,这篇工作也使用了多目标建模方式。
下面介绍的工作使用了第三类解决方案,即采用后门机制结合贝叶斯概率模型来解决纠偏问题。这篇文章发表在SIGIR21上,解决的是传统流行度偏差问题。在推荐系统中,流行度会影响物品是否曝光,也会影响用户是否交互。作者认为流行度高代表的内容质量通常比较高,所以流行度到点击的边需要被保留。但是物品是否被曝光应该基于用户的真实兴趣,而与该物品的流行度无关,所以流行度到物品的边不应该存在,这条边是一个bias。文章的解决方案是使用了后门机制,使得最终的交互条件概率与流行度对内容是否曝光的条件概率无关。我们基于这个工作做了一些改进并落地,之后会详细介绍算法的原理。
首先是流行度debias的工作。流行度偏差在推荐系统中十分常见,我相信大家在各个业务中也面临了同样的问题。头部效应严重就会导致热门内容曝光量较大,进而导致训练日志被热门内容主导,这对于长尾内容非常不友好。
工业界有三种解决方案。
这里干货很多,特别是对几种方式尝试下来的一些心得,比如
- IPW,方差很大,训练很难收敛
- causal embedding方案,无偏数据很贵,但人为划分数据也会引入其他一些偏差
流行度偏差的核心问题是流行度偏差确实不利于学习用户真实兴趣,但流行度较高的视频其内容质量较好;
我们的解决方案是在训练时去除流行度偏差对模型的负向影响,对应于因果图就是去掉Z到I的这条边。又由于流行度高的内容质量其实是不错的,因此在infer 时会保留Z到C这条边。
接下来具体看一下训练的时候如何去消除流行度对模型的负向影响。结合上图的因果图来看,我们基于后门机制,使用一个do算子来表示消除流行度影响。具体推到过程如上图,在公式中,第一步到第二步利用了贝叶斯概率公式,第二步到第三步是源于我们使用do算子消除了I与Z的关系,所以U和I与Z是独立的,第三步到第四步是因为流行度的先验在两个因果图中是不变的。
另外我们将用户、视频与视频流行度进行解耦,将P(C|U,I,Z)条件概率转化为匹配分与流行度的乘积。建模的数学公式如上图所示,其中ELU’是一个激活函数,流行度部分引入了γ参数进行控制,并引入了pair loss对模型进行训练。
进一步,我们可以将P(C|U,I,Z)的解藕结果带入引入do算子的条件概率公式继续进行推导,最终的表达式如上图所示。我们可以发现最终的结果只与流行度的期望有关,而流行度这个单变量的期望是一个常数,对排序不产生影响。所以通过这个方法,我们已经将流行度对模型的影响消除了。
在infer阶段,我们也使用了do算子,将流行度作为变量引入条件概率。具体地,我们针对流行度考虑了其变化趋势对推荐的影响。这么做是希望模型与item的生命周期进行结合,因为item的流行度变化是呈现从逐渐增加到逐渐降低的过程。最终的模型infer得分是匹配得分与流行度的乘积。
我们对比了干预后流行度对item的影响变化,上图左侧是没有进行纠偏的推导,右侧是进行纠偏的推导。它们的主要差别在于因果图中Z对I的条件概率,进行纠偏操作后U,I与Z式独立的,进而就去除了流行度对item的曝光影响。
从实验结果来看,曝光提升或者下降的case是符合预期的。具体地,曝光下降最快的case大多是一些猎奇的或者低质量的内容。从实验结果图来看,上图横轴从左至右分别代表的是曝光区间,越往右的曝光区间的曝光量越大。从图中可以看出,对比各曝光区间的曝光item数量,中长尾的曝光item数是增多的;对比各曝光区间的曝光量,中长尾item的曝光量也是提升的,而头部视频或者流行度较高视频的曝光量提升主要是因为infer的时候我们特意引入流行度导致。另外我们还针对效率进行可视化,发现中尾部的视频对应的pxtr的提升更大,这也符合我们的预期。
来自2022datafunSummit数据科学峰会:
ATE -> HTE:
问题一:如何估计规模效应:
问题二:如何做统计检验:
快手里面有写一个py的开源库,给别人使用
问题三:如何进行应用:
如果涨粉为手段,给每个作者涨多少粉才能最大化他未来一周的生产数?
应用二:push消息
总结:
整个方法论:
验证3D化价值成为了当务之急。通过对价值指标体系,受益方进行拆分,结合业务理解确立了如下的分析框架,并选择了用因果推断来验证不同3D化产品的价值,因为它可以真正回答‘XX产品导致了加购率/成交率提升Y%’这类问题:
倾向性得分匹配法:一句话概括,就是匹配分数相同的‘同质’用户。由于在观察研究中,混杂变量较多,无法一一匹配,因此将多个混淆变量用一个综合分数作为表征。通过分数对用户进行匹配,最终得到两组‘同质’人群。
双重差分法:在满足基线期平行趋势假设的基础上,估计策略影响的平均处理效应。以下图为例,两家开在不同地区的店铺A/B,假设店铺A,B 满足平行趋势假设,且A家参与了大促(打广告),B家没有。考虑到时间变量对于两个店铺带来的共同影响,需要求两次差值才能正确估计广告对A带来的效益提升,即所谓双重差分。DID = (A2-A1)-(B2-B1),也可以用模型来拟合DID。
在真实业务场景中,有时很难直接进行A/B Test或者A/B Test成本过高,这时随机化实验分析方法不再适用,需要诉诸其他分析方法,如观察性研究(observational studies)。在BIGO的业务中,类似场景主要是基于两方面的原因:
Bigo Live是海外最大的直播社交平台,在为用户提供高质量的直播服务外,Bigo Live还为用户提供了不少休闲游戏。
Running-Bigo是Bigo Live在2020年自研的一款休闲类游戏,面世后深受Bigo Live用户的喜爱。笔者带领的团队基于仿真与贝叶斯优化 (bayesian optimization) 等技术,与产品等部门共同设计核心的游戏玩法与数值机制,并设计了基于贝叶斯优化的地图生成器,为用户提供多样化的地图场景。
在产品上线后的一个多月, 针对Running用户增长的时长数据,业务部门的领导们提出了如下问题:
很显然,这不单是在BIGO,而是任何互联网产品都会遇到的问题,当我们引入一个新功能产品,如增加一个 tab,或引入一个功能模块,一方面新的功能模型吸引用户的时长和注意力,另一方面该新增的功能模块也会挤压其他模块的用户时长和核心营收数据, 特别是休闲游戏,我们知道休闲游戏的替代效应一般都比较强。那我们该如何评估该模块引入对整体休闲游戏生态的影响呢?
我们基于工具变量法对这些问题进行回答, 首先我们对该业务的相关核心数据做了整体的探索性分析。在基于对业务理解与数据分析后,我们把问题定义为如下因果推断问题:
量化用户在Running的道具消耗对用户在整体休闲类游戏道具消耗的影响的因果效应值。
如上定义一个因果推断问题是直接基于业务部门提出的问题: 如果Running的引入对整体生态与营收是负向的,我们可以很容易通过对用户力度引入前后的数据进行观察性研究建模得到一个负向置信的因果效应值。
Uplift Modelling的建模方案,找出来策略能最高效转化的用户,这样可以把钱花在刀刃上,也是可以提高我们后续的运营活动的效率。
所以结合这个案例,我们这边给到的实验分析的建议如下:
一般来讲,推荐类的实验,常常都会存在一些人群的异质性效果,所以我们建议对于每个推荐类实验分析,在实验完成之后都要产出一个实验效果地图。如上图所示,这样的效果地图可以反映出来当前这样的策略对于维度组合下的用户影响。同时,每一个实验都可以产出这样一个地图,而每个实验的地图其实是可以叠加的,通过对一系列实验效果的叠加可以很直观的了解到近期发布的推荐实验到底是对那些用户群体效果比较好,哪些用户一直没有触达到。
来自datafun数据科学峰会:【2-1 因果推断在游戏中的应用】
由于双重稳健估计的最初设计是针对连续结果问题(例如学⽣的分数、⼯⼈的收⼊等),使⽤倾向
值得分的倒数进⾏加权,权重很⼤的时候⽅差也⼤。对于⼆元结果场景会存在以下问题:
• 双重稳健估计没有均⼀化(Uniformization )的过程,对于倾向值得分的倒数较⼤的场景,会导致⼤量⼩于-1或者⼤于1的ATE出现.
仿真数据来源 Louizos et al. (2018) “Causal Effect Inference with Deep Latent-Variable Models
节选datafun的《6-2 图网络数据在跟风拍摄中的实践与应用》
人们在重复看到某种特定属性的内容后,会深刻影响其后续的行为,其追随“潮流”生产类似视频的概率大幅增加
回到刚才讨论的问题,用户重复看到特定主题、玩法的视频后生产类似风格视频,此时我们能将该作品的生产归因到重复推荐导致用户形成频率错觉上吗?
在做因果推断时,筛选混淆变量X是至关重要,这决定着我们能否将T(同素材作品重复分发次数)对Y的因果影响计算的更纯净。
来自datafun数据科学峰会的《如何在存量竞争的内容消费行业借力数据科学驱动的供需策略破局业务增长》
创作引导与激励技术方案,策略核心:高效匹配创作者核心诉求和平台自身发展规划,合理利用平台现有资源,结构性优化平台内容生态和流转效率。
这里使用因果推断主要在激励,补贴的场景:
节选datafun数据科学峰会:《9-3 电商搜索场景下的数据科学实践》
京东内部的因果推断基础框架整理:
内容来源2022 DataFunSummit 数据科学在线峰会
假设前提:
三种切断方法:
HTE模型的两种方向的模型:
uplift model,反事实结果:
因果森林 vs 随机森林:
模型评估:
模型可视化:
稳健性分析:
广告投放流量调控:
广告主激励个性化发券:
来自DataFunSummit 2022数据科学峰会:
复购策略:
参考:重复事件(表现形态:活跃、留存、复购)建模的案例学习笔记
用户行为增量的估量,PSM + DID:
内容来自:
诊断系统:
因果发现的归因方法:
提到了DAGs with No Tears的模型来做因果发现归因的方法:
DAGs with No Tears 模型中不能用常规的归一化、标准化来做,因为会学不到好的图;
比较合适用t-1的变化量,花了飞猪团队非常多的时间:
会有一个增量训练,第四天的data4再次进行训练:
No Tears的缺点:
No Tears + 贝叶斯网络,升级因果模型:
详细也可以参考:文章:董彦燊:因果推断在哈啰出行的实践探索
因果推断在智能营销中的技术介绍:
这里是以收益为Y,与其他用销量,有些不同:
红包补贴:
这部分应用主要是在酒店营销场景中的红包补贴模块,属于整个算法链路中的一环。前面已经提到过,我们的目标是使补贴效用最大化。主要看的指标是人均效用,即总效用除以人群的人数。
我们的模型是基于Tree-based的Uplift模型做了一些改进。
随机试验
但是根据需求考虑到,我们需要验证因果推断方法的业务效果,最终还是选择了小流量随机实验来获取符合要求的数据。如右图所示,我们通过分流平台做了两次分流,第一次分流是切除随机实验用的小流量,第二次分流则是随机将用户分到实验组(发券组)和对照组(不发券组)。
实时决策
接下来是红包补贴模块的核心部分,分为离线和线上两部分。
线上部分,依然是通过流量分配时请求进入算法组、运营组或者是随机补贴组。其中:
运营组是人工策略;
随机补贴组是前面提到的小流量随机实验,从小流量随机实验得到的训练数据用来建模,可以得到Treelift模型,进行一键评估,最后部署到线上;
算法组的流量由模型来决策发券。
模型的离线评估部分测试了不同的模型,最后得到的结果是我们经过改进后的Treelift模型的AUUC是最优的。可以看一下右上角不同模型之间的对比,我们对比了T-model、S-model,还有Treelift模型,以及我们在正则方面的一些尝试的模型对比。从线上效果来看,Treelift模型相比人工策略有4.7%的提升,相对于我们之前用过的Response模型也有2.3%的提升。从结果来看,优势是非常明显的,Uplift模型在智能补贴场景的应用前景还是比较广阔的。
为什么AUUC能反映反事实转化效果?
我们可以看一下Uplift曲线是怎么计算的。首先它的变量是t,t是根据Uplift Score降序排序之后,进行分桶得到的。以图为例,0.2就代表20%,根据排序之后,我们取前20%的数据,取出来这样的数据,来计算后面的公式。
左边因子这部分YT除以NT这一部分是代表的是实验组(发券组)的转化率,YC除以NC代表的是对照组(不发券组)的转化率,差值是发券相对不发券带来的转化率的提升的幅度差值,再乘上总的样本数量,就比较清楚了。假设所有人都发券,和所有人都不发券相比,额外提升的幅度就是对于增量的预估。
因果树模型:
有一个python的代码:
几个好的因果学习的会议:
https://mp.weixin.qq.com/s/aCylZ_QJeR1DvAa01Mi8Gg在小红书偏内容型社区的场景中,作品质量是用户留存率的关键。当干预定义为作品 id 这一类型无限 Treatment 时,无法进行实验,也无法使用 PSM的 思想解决。首先,我们使用因果推断思想,基于用户 t-1 时刻的行为数据预测用户 t+1 时刻的行为,并将用户的行为变化归结到 t 时刻的干预变化,可使用 Delta DAU 或 IPW 方法获得权重值。即如果用户天然留存率高,则其留存行为与干预相关的可能性较低;相反,若用户天然留存率低,则其留存行为应与干预高度相关。
文章浏览阅读1w次,点赞2次,收藏27次。来源:机器人小妹 很多时候企业拥有重复,乏味且困难的工作流程,这些流程往往会减慢生产速度并增加运营成本。为了降低生产成本,企业别无选择,只能自动化某些功能以降低生产成本。 通过数字化..._人工智能平台
文章浏览阅读2.2k次。热加载能够在每次保存修改的代码后自动刷新 electron 应用界面,而不必每次去手动操作重新运行,这极大的提升了开发效率。安装 electron 热加载插件热加载虽然很方便,但是不是每个 electron 项目必须的,所以想要舒服的开发 electron 就只能给 electron 项目单独的安装热加载插件[electron-reloader]:// 在项目的根目录下安装 electron-reloader,国内建议使用 cnpm 代替 npmnpm install electron-relo._electron-reloader
文章浏览阅读942次。在11.0 进行定制化开发,会根据需要去掉recovery模式的一些选项 就是在device.cpp去掉一些选项就可以了。_android recovery 删除 部分菜单
文章浏览阅读3.7k次。https://www.yuque.com/mnn/cn/cvrt_linux_mac基础依赖这些依赖是无关编译选项的基础编译依赖• cmake(3.10 以上)• protobuf (3.0 以上)• 指protobuf库以及protobuf编译器。版本号使用 protoc --version 打印出来。• 在某些Linux发行版上这两个包是分开发布的,需要手动安装• Ubuntu需要分别安装 libprotobuf-dev 以及 protobuf-compiler 两个包•..._mnn 编译linux
文章浏览阅读1.8k次。CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致。利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态效果,由CSS3来驱动产生动画效果。下面讲解一下如何利用CSS3制作淡入淡出的动画效果。具体实例可参考刚进入本站时的淡入效果。1. 定义动画,名称为fadeIn@-webkit-keyf_css3入场效果淡入淡出
文章浏览阅读2.8k次。计算机系统应包括硬件和软件两个子系统,硬件和软件又必须依次分别包括中央处理器和系统软件。按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。计算机是脑力的延伸和扩充,是近代科学的重大成就之一。计算机系统由硬件(子)系统和软件(子)系统组成。前者是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统赖以工作的实体。后者是各种程序和文件,用于指挥全系统按指定的要求进行..._计算机系统包括硬件系统和软件系统 软件又必须包括
文章浏览阅读7.9k次,点赞3次,收藏22次。一 定义这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。这里,我_进程调度fifo算法代码
文章浏览阅读133次。rownum是oracle才有的写法,rownum在oracle中可以用于取第一条数据,或者批量写数据时限定批量写的数量等mysql取第一条数据写法SELECT * FROM t order by id LIMIT 1;oracle取第一条数据写法SELECT * FROM t where rownum =1 order by id;ok,上面是mysql和oracle取第一条数据的写法对比,不过..._mysql 替换@rownum的写法
文章浏览阅读790次,点赞3次,收藏4次。官网下载下载链接:http://www.eclipse.org/downloads/点击Download下载完成后双击运行我选择第2个,看自己需要(我选择企业级应用,如果只是单纯学习java选第一个就行)进入下一步后选择jre和安装路径修改jvm/jre的时候也可以选择本地的(点后面的文件夹进去),但是我们没有11版本的,所以还是用他的吧选择接受安装中安装过程中如果有其他界面弹出就点accept就行..._ecjelm
文章浏览阅读245次。原文链接:https://linux.cn/article-7801-1.htmlifconfigping <IP地址>:发送ICMP echo消息到某个主机traceroute <IP地址>:用于跟踪IP包的路由路由:netstat -r: 打印路由表route add :添加静态路由路径routed:控制动态路由的BSD守护程序。运行RIP路由协议gat..._ifconfig 删除vlan
文章浏览阅读224次。reduxredux里要求把数据都放在公共的存储区域叫store里面,组件中尽量少放数据,假如绿色的组件要给很多灰色的组件传值,绿色的组件只需要改变store里面对应的数据就行了,接着灰色的组件会自动感知到store里的数据发生了改变,store只要有变化,灰色的组件就会自动从store里重新取数据,这样绿色组件的数据就很方便的传到其它灰色组件里了。redux就是把公用的数据放在公共的区域去存..._redux redis
文章浏览阅读2.2k次,点赞3次,收藏6次。unzip版本不支持4G以上的压缩包所以要使用p7zip:Linux一个高压缩率软件wget http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2tar jxvf p7zip_9.20.1_src_all.tar.bz2cd p7zip_9.20.1make && make install 如果安装失败,看一下报错是不是因为没有下载gcc 和 gcc ++(p7_linux 7za解压中文乱码