用因果推断解决的四类分析难题

共 8100字,需浏览 17分钟

 ·

2022-06-21 13:38

一、背景


目前我们能看到因果推断相关的资料更多的聚焦在逻辑方法本身,公式非常繁杂导致较难理解与应用。有的时候虽然看似理解了一些,但是真正应用的时候还是不太清楚什么场景应该选择什么方法。


基于此种背景,笔者梳理一些目前业界的通用业务问题场景,按照不同分析场景类型分为四大类,分别对应不同的适用因果推断解决方法,并辅以通俗易懂的语言去解释其原理与案例。当遇到某类问题的时候,我们能快速明确的知道用什么方法可解此类问题。


二、四类分析场景与对应解决方法概览



三、分析场景与适用方法


场景一:非实验场景策略效果评估


策略、功能以及活动的效果评估,几乎是每个产品、运营、分析师日常工作的一大重点。大到重要功能上线,小到一个文案修改,都可以去衡量这个策略的效果,比之前提升了多少,对整体数据贡献了多少。不仅衡量了工作产出,也为之后的优化方向提供沉淀与依据。AB实验是回答这个问题的最优解,但是当无法做实验时,研究如何利用历史数据进行因果分析评估也变的非常重要。


非实验场景的策略评估方式的核心思想就是:人为创造一个虚拟对照组与策略上线数据做比较估计策略真实效果


效果回归本质上属于统计学中的因果推断问题。在统计科学中,因果推断要解决的问题本质是剥离我们所不关心的外部变量对结果的影响,从而精准估计到我们所关心的策略因素对结果的单一影响。在不能做AB实验的场景下,通常有两种完成这件事情的思路:


  • 构造相似群体(Matching):这种思路假设在未被实验策略影响的样本中存在一些样本和被实验策略影响的样本存在同质性。只要我们想办法找到这些相似的样本作为虚拟对照组,就可以控制外生因素。这种思想最经典的方法是PSM(倾向得分匹配法);

  • 构造虚拟现实(Synthetic Control):这种思路认为策略的影响其实是策略上了之后的指标表现和“假设策略没上”的平行时空中指标表现的diff。因此,只要通过建模方法构建出假设策略没上的虚拟时空的指标水平,即可评估实验策略收益。典型的方法包括合成控制法、Causal Impact等;


PSM


PSM的思路是对策略命中的每一个用户,都在策略未命中用户中找到和他近似的一个用户。通过这种方式,策略命中用户和近似找到的对照用户就有了可比性。PSM 作为一种 matching 方法,最大的目的就是控制实验组和控制组的观测变量。举个简单例子,我们想对比吸烟的人和不吸烟的人的健康状况,我们观察了两组人群作为样本,可能会出现以下两种情况:

  • 恰好我们选取的吸烟的人群更年轻,身体本身就更健康,而不吸烟的人群整体年龄偏大,或者身体本身比较虚弱,最后观察一段时间得出吸烟无害的结论。

  • 吸烟的人群也喜欢喝酒,吸烟的人群本身也不注重自己的健康等等一系列其他因素干扰,导致得出吸烟有害健康的结论。

这两种结论都是不够科学的,因此用 matching 的思路可以缓解上面的情况,而 PSM是 matching 最常用的方法。具体应用可以分为以下几个步骤:


  • 计算未被策略影响的每个用户倾向性得分:这一步本质是建模问题,因变量为是否被干预Treatment,自变量为用户特征变量。做一个建模预测策略发生概率(逻辑回归/XGB/RF等);

  • 得分匹配:有了每个用户的倾向性得分,针对目前的被策略命中的用户,匹配得到一个近似相同的用户,组成对照组。

    • 修剪:筛选掉倾向性得分极值。常见的做法是保留得分在某个区间的用户,例如实验组和对照组用户得分区间的交集,只保留区间中部的 90% ,可能原始得分在0.05-0.95的用户。

    • 匹配:实验组对对照组根据得分进行匹配的时候,比较常见的有几种方法。knn: 进行 1 对 K 有放回或无放回匹配。radius: 对每个策略影响用户,匹配上所有得分差异小于指定 radius 的用户。

    • 设置得分差异上限:匹配用户的时候,要求每一对用户的得分差异不超过指定的上限min(delta(score))<caliper。



  • 平衡性检验:看倾向性得分在匹配前后的分布、以及特征在匹配前后的 QQ-Plot。匹配后的实验组和对照组的倾向性得分分布更加接近,变量分布也更接近。

  • 因果效应估计(策略效果):我们的目标是推断策略组用户的平均处理效应 ATT (Average Treatment Effect on the Treated)。现在我们已经构造出了一对接近同质的实验组和对照组了,我们可以直接比较匹配后的实验组和对照组。

举个🌰,业务在上线‘主播连麦PK功能’后,发现使用连麦PK功能的用户比未使用此功能的用户开播率高4.3%,于是认为该功能提高了主播开播率。这个场景该如何做效果评估?特征选取:

  • 自变量:用户基础画像、行为特征

  • 因变量:是否使用该功能


按照1:1的匹配比例,最终匹配上26w对用户数据。其中策略组用户开播率13.1%,对照组为11.2%,两组diff为1.9%,假设检验通过。因此从数据角度证明该功能确实能提高开播率,但提升效果为1.9%而不是4.3%。



SCM(合成控制法)


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


假设我们想要衡量疫情对于上北京某类商品的GMV的影响。若按照传统的matching方法,我们需要选择一个和北京疫情前的dau、gmv等最相似的非疫情城市作对比。但用合成控制法的话,我们需要从全国所有的非疫情城市中进行筛选,用同样的疫情前一段时间的各类维度数据与北京进行拟合匹配,使得合成后的「虚拟北京」在各个维度上尽可能真的接近「真北京」。最终选取拟合效果好的:北京=0.1城市A+0.2城市B+0.3城市C+P ;


概括的说,我们要找到策略干预单元在不被策略干预情况下的反事实时间序列曲线:


在合成控制中,我们没有很多样本但是我们有很多时间点信息。所以我们可以做回归拟合,将每个数据点翻转输入矩阵,然后样本会成为变量,我们将结果表示为样本的加权平均值,就像下面的矩阵乘法:京=0.1上海+0.2天津+0.3广州


我们尝试评估疫情对北京的某品类GMV影响,我们为其找了其他30个非疫情城市。现在,我们可以将因变量定义为北京GMV,将自变量定义为其他城市GMV进行回归


注意几个点,首先策略干预后,合成控制的虚拟北京GMV超过了真实北京GMV,这表明疫情降低了北京的销售数据。其次,疫情前的时期是完美拟合的,这表明我们的合成控制可能发生过拟合。因为我们的对照组用了30个城市,所以我们的线性回归模型有30个参数可以使用,这给模型提供了过多灵活性,产生过拟合风险。此时可以使用Ridge或者Lasso回归来解决此问题,这里不过多赘述。


有了合成控制的虚拟北京后,我们就可以将策略效果估计为策略结果与合成控制结果之间的差距,即 真北京-虚拟北京:



由于合成控制法的样本量通常较小,因此在确定我们的结果是否具有统计学意义时,可以使用cross validation交叉检验方法。每次我们置换我们的策略组和对照组,由于我们只要一个策略城市,这意味着对于每个城市,我们要假装它是被疫情影响过的,其他则是对照。


通过对所有城市应用合成控制,我们可以估计所有城市的合成状态和真实状态之间的差距。对于北京来说,这就是策略效果。对于其他非疫情城市,这就像安慰剂效应。如果将所有安慰剂效应与北京的疫情干预效果一起绘制,根据所有城市策略干预效果的分布,我们可以计算北京效应量的p值。在我们估算的所有其他30种安慰剂效应中,没有一个高于北京的效应量,所以p值为非常接近于0,具有统计显著意义。




场景二:实验场景下的正向用户下探


在做策略时,我们需要探究策略对于不同用户的异质性影响(HTE),哪些用户对策略更敏感更容易被影响以及影响有多少,更好的归因和理解不同的用户群。通常情况下,我们结合实验来做分析。比如在实验中,我们需要挑选出来那些实验效果显著的用户,去分析他们的特征,以及找到敏感用户,帮助我们了解策略的影响,作出下一步迭代


针对这类问题,之前常用的方法是去针对用户做维度下钻,但是效率极低且并不自动化很难遍历所有特征组合去分析。


Causal Tree基本原理


这时我们可以结合机器学习的方法去解决此类问题,这里选择因果决策树(Causal Tree)方法。Causal Tree是一种直接对目标进行建模的方式,它改进了传统决策树的优化目标和指标分桶方式,以达到最大化分桶的异质性因果效应,同时调整误差的效果。


首先,它会把数据分成训练集和估计集,一部分训练集去构造树,另一部分估计集去估计因果效应和方差。其次,在树的分区方式上,使用各个节点的方差对目标函数加以修正。给定训练集Str= {(Xi,Di,Yi)},其中Di=1代表实验组,Di=0代表对照组,目标是预测E( (Yi(1) - Yi(0)) | Xi)。其中

本种方法须满足条件独立假设(CIA)即给定特征,用户是否在处理组和我们关心的结果是互相独立的。本模型的结果易于理解,可以得到某一个叶子(用户群)的因果效应结果,但是如果需要处理高维变量的话能力相对较差,最终分桶效果可能相对较,且无法检验,所需要模型使用者真正了解问题和数据的产生过程。在实际应用时,ab实验分析通常是满足CIA的,且一般不需要处理过于高维变量,所以本方法在实验异质性因果效应探究问题应用较为广泛。


Causal Tree🌰


某业务做了产品优化实验,但实验各项消费数据表现较差,以APP平均使用时长为例,我们能否用Casual Tree找出一些群体的消费者,使得我们在这些消费者身上有正向实验收益?


特征选取:

  • 自变量:性别、年龄、新老用户、是否安装竞品、是否是创作者

  • 因变量:实验后两周每日APP平均时长(取log)


通过建模,我们发现Causal Tree的第一个分裂点是用户是否是创作者,说明创作者受到了更大的实验负向影响。最终树将用户分为了10个节点(10个桶),负向因果效应最大的组为第10组(非创作者+未安装竞品+0-23岁),APP平均时长降低了16%。负向因果效应最小的组为第4组(创作者+未安装竞品+0-12岁),APP平均时长上涨了7%;


我们将每个组的分群因果效应均画出,没有找到正向收益置信的用户组。但是有些用户群体,实验没有对他们造成很大的负向影响。





场景三:策略敏感人群探究


目前业界流量竞争已经进入白热化,个性化策略已经渗透到了生活中的方方面面,不论是识别营销敏感人群去推送刺激其消费的优惠券,还是为某类视频爱好者针对性推送其所爱的垂类内容。而如何找到真正的策略敏感人群,将更多的预算/资源投入到可以带来‘增量’的用户上,以提升整体roi,成为了后时代精细化运营的关键,Uplift Model可以尝试解决这一类问题。


Uplift Model基本原理


用简单的例子来介绍此模型,假设我们是个电商平台,一件标价300元的商品,用户的购买率为6%。现有一批预算可以给用户发放10元的优惠券以提升用户购买率,那么这批优惠券应该发送给平台的哪些用户呢?

此时我们脑海中有四类用户:

  • Persuadables:不发送优惠券则不买,发送优惠券则购买;

  • Sure things:不论是否发送优惠券均会购买;

  • Lost causes: 不论是否发送优惠券均不会购买;

  • Sleeping Dogs: 不发送优惠券会购买,发送优惠券反而不买;


左上的Persuadables(说服型)类用户被发券干预后购买率得以提升,是我们真正想要进行干预的营销敏感用户。Uplift模型要解决的问题就是通过建模预测的方法精准的去对这四类用户进行分群


对于单个用户来说,无法同时观测到在有干预和没有干预两种情况下的表现,这也是因果推断中的反事实的问题。这时可以从用户的角度来对平均因果效应做估计,假如我们有两组同质用户,对其中一组用户发券另外一组不发券。之后统计这两群人在购买转化率上的差值就可以被近似认为是平均因果效应。


Uplift建模需要服从CIA条件独立假设,因为样本在特征上分布需要较为一致,因此AB实验是Uplift Model建模过程中非常重要的前置条件。


  • 首先,我们选取部分用户(小流量实验,样本量足够建模)随机分为实验组和对照组,对照组不发优惠券,实验组发放优惠券,用户最终是否购买为一个0-1变量;

  • 然后,对整体实验数据用户购买行为进行建模;

  • 最后,再用小流量实验训练得到模型对我们需要预测的全量用户进行条件平均处理效应估计,预测其发放优惠券所带来的增益值;

    假设有N个用户,用户i在没有优惠券的购买结果为Yi(0),在有优惠券时购买结果为Yi(1),此时发送优惠券对该用户的增益就是uplift score (i)=Yi(1)-Yi(0)。当uplift score为正值时,说明干预项对用户有正向增益作用,也就是上文所提到的Persuadables(说服型)用户。


    此外,Uplift模型通常有几种建模方式:S-Learner、T-Learner、Class Transformation等等。模型评估方法有Uplift柱状图、QINI曲线等方式。针对几种建模及评估方式可详细参考该把优惠券发送给哪些用户?一文读懂Uplift模型


    最后,我们总结一下Uplift模型可能的应用场景:

    • 精准定位策略敏感人群:我们希望找出来一些对干预项(例如发券、投放、内容推荐等)比较敏感的用户,继而对其进行精准策略/营销;

    • 测算收益空间:Uplift模型可以帮助我们测算如果对策略做一些人群向优化,业务收益将会提升多少;

      Uplift Model🌰


      例如我们做了短剧类视频屏蔽Holdout实验,整体大盘DAU下降-0.5%,但大盘用户结构却未看清哪些用户是短剧核心用户,哪些用户的短剧类视频推荐分发的提升空间比较大,我们需要对大盘用户进行分层。


      特征选取:

      • 自变量:用户基础画像、行为特征、整体视频消费行为、短剧消费行为、短剧内容偏好等;

      • 因变量:用户是否是短剧核心用户会反映在短剧屏蔽前后的活跃度变化上,因此需要用活跃度这个指标来定义用户正负样本。正样本:策略上线后一个时间周期 相比策略上线前一个时间周期,活跃天数差值>0,负样本反之;


      训练好模型后我们对大盘所有用户进行短剧增益预测,得出了每个用户的基于短剧分发的策略增益分数Uplift Score,然后对其进行分桶观测:



      场景四:因果影响指标分析


      很多时候因果推断会遇到混淆变量的问题,比如我们想要去分析直播推荐多样性(指标D)对用户活跃度(指标Y)的影响,但此时存在很多变量X既与D相关又与Y相关。


      解决这类问题传统的方法是用X对Y做线性回归,X的参数就是影响效应,或者是上XGboost看Shap值等。但传统的方法会依赖很多强假设例如不能多重共线性等,强假设下得到的估计不一定合理。所以这种场景下传统的指标影响分析方法将不满足业务需求,双重机器学习(Double Machine Learning)为这个问题提供了解决的思路。


      Double Machine Learning基本原理


      在介绍DML之前我们先用最简单的例子来讲讲它所解决的问题:我们要估计冰淇淋价格与其销量间的因果效应。我们的数据集中特征X包括温度、成本和一周中的周几三个变量,Treatment T为价格,outcome Y为销售量。其中,T影响Y,X影响T和Y,即存在混淆。通过可视化,我们可以很明显看到,在周末(weekday=1和7)的时候,价格比平常要高很多,即星期几这个特征就是价格与销量之间的混淆变量。



      一种简单的去偏方法就是线性回归,我们拟合一个线性回归模型,然后固定其他变量不变,去估计平均因果效应(ATE):


      但特征X与Y的关系可能是非线性的,如温度temp,当温度升高时,人们可能都去沙滩玩耍,买冰淇淋吃,销量Y升高,但当温度过高时,人们可能只想呆在家,这时销量Y就下降了。因此,我们不可以直接做线性回归,而需要用残差建模的方式去建立因果模型,残差的思想就是DML的理论基础。


      DML是一种处理基于观测数据进行因果建模的方法,可以去除偏差。根据Frisch-Waugh-Lovell定理,假设我们要估计Y = β·X+ θ·D+ E 中D的系数θ项:

      • 先直接用X对Y做回归,得到X估计Y得到的残差,即剔除控制量X对Y的影响;

      • 再用X对D做回归,得到X估计D得到的残差,即剔除控制变量X对D的影响;

      • 最后用上面D的残差对Y的残差做回归,就可以得到最终想估计的系数θ项,也就是ATE(D对Y的因果效应参数);

        虽然DML可以去混淆,让我们可以只关注T对Y的影响。但是在T和Y残差化后,我们仍然使用的是线性模型。当价格只需在小范围内变化时,这种方法可能还适用。然而通常情况是,在价格较低的时候,价格增加1元,需求量可能减少2个,而在价格较高的时候,价格增加1元,需求量可能只减少1个,边际效应会逐渐递减


        显然,这是一种非线性关系。这时,我们可以通过对目标函数进行转换,实现非线性建模。在非线性CATE估计时,DML估计的是CATE的局部线性近似(导数)。举个例子,假设我们通过模型对一个顾客估计出CATE=2,说明价格减少一个单位,销量会多出2个单位。但我们不能据此就做出决策直接在价格上减少10个单位。因为当价格过低时,CATE可能就就会从2变成0.5。因此在处理非线性的CATE的时候,需要注意不同Treatment下的CATE可能是不同的。


        双重机器学习假设所有混淆变量(既影响D又影响Y的变量)都可以被观测,所以在做特征选择时要格外注意尽量将这些特征加入模型。同时,机器学习自带的正则化可以达到高维变量选择的效果,我们可以通过拆分训练集和测试集的方式来解决过拟合带来的偏差,提高估计准确性。


        Double Machine Learning🌰


        用户APP消费时长一直是优化视频推荐的主要目标,但随着消费需求的多样化,优化用户时长对用户活跃度的边际效应逐渐递减。

        目标:

        1. 我们需要探索还有哪些潜在的用户行为或者哪些内容对用户活跃度有正向因果影响;

        2. 这些潜在抓手的因果效应都是多少,以判断其优先级;


        由于用户活跃度和非常多指标都存在相关性(混淆变量较多),因此不能直接回归,需要用DML来计算潜在抓手指标对用户活跃度的因果效应,比较因果效应大小来判断优先级;

        特征选取:

        • X:统计第一个时间周期的用户消费行为特征(习惯偏好、消费行为、互动行为、消费内容垂类、作者相关画像信息等)

        • D:统计第二个时间周期的用户消费应为特征(D为需要计算因果效应的特征)

        • Y:第三个周期的用户活跃天数


        建模步骤:

        • 随机选取第二个时间周期的活跃用户,拆分训练集和测试集,关联第一个时间周期的特征指标及第三个时间周期的因变量;

        • 用训练集数据,用XGB将X对Y做回归,在测试集上得到X对Y的残差,这步可以剔除控制变量X对Y的影响;

        • 用训练集数据,用XGB将X对D做回归,在测试集上得到X对D的残差,这步可以剔除控制变量X对D的影响;

        • 用测试集数据,对每个待评估指标D,用线性回归模型拟合上面的D残差~Y残差,得到每个D特征的因果效应系数θ,θ表示D指标每增加1%,用户的周活跃度将提升θ%;


          剔除不显著的特征,整体来看按照提升用户活跃情况的边际效应大小的逻辑来确认优化手段的优先级,优化内容的分发垂类结构>提升用户的内容互动量>优化内容生产者结构。



           觉得文章好看不要忘记点赞、在看、转发支持一下博主

          ·················END·················

          推荐阅读

          1. 我在字节做了哪些事

          2. 写给所有数据人。

          3. 从留存率业务案例谈0-1的数据指标体系

          4. 数据分析师的一周

          5. 超级菜鸟如何入门数据分析?


          欢迎长按扫码关注「数据管道」

          浏览 61
          点赞
          评论
          收藏
          分享

          手机扫一扫分享

          分享
          举报
          评论
          图片
          表情
          推荐
          点赞
          评论
          收藏
          分享

          手机扫一扫分享

          分享
          举报