从因果推断到 Uplift

209 阅读16分钟

什么是因果

因果性指的是一个事件(因)直接致使另一个事件(果)产生的关系。在因果推断的研究范畴中,我们认为原因会对结果产生一定影响,结果也在一定程度上依赖于原因。比如,喝酒会致使第二天头痛,在这里,喝酒就是因,第二天头痛就是果。

相关性不等于因果性

在日常生活中,我们常常会将相关性错认为是因果性。就拿上面喝酒的例子来说,我们再额外引入一个干扰因素:睡觉。喝酒之后,很有可能不洗澡就睡觉,第二天早上醒来也很有可能会头疼,有人或许就会觉得是因为不洗澡睡觉才导致第二天早上头疼,但实际上它们只是相关性关系,也就是说它们两者之间存在着某种一致变化的趋势。在这个例子中,头疼的次数会随着不洗澡次数的增加而增加,所以我们称它们为相关关系。然而它们并没有因果关系,这是由于不洗澡睡觉和第二天早上头疼的原因都是喝酒,喝酒才与头疼/不洗澡存在因果关系,即喝酒这个因直接造成了不洗澡和头疼的结果。

image.png

什么是因果推断

因果推断(Causal Inference)是统计学和科学方法中的一个重要概念,涉及确定和估计变量之间的因果关系,而不仅仅是相关关系。因果推断旨在通过有针对性的研究设计和分析方法,确定一个变量(自变量或处理)是否对另一个变量(因变量或结果)有直接的因果影响。也就是说,因果推断的目标是回答诸如“如果处理发生了,会导致什么样的结果变化?”或“如果没有处理,结果会如何?”这样的问题。

为什么要做因果推断

在日常生活中,人们常常会将相关性误认作因果性,就像上述例子中不洗澡和头疼的关系,其实只要我们稍加深入思考,就能发现喝酒才是导致头疼的原因。然而,现实中存在许多更为复杂、难以理清的情况,最典型的就比如辛普森悖论。在这个悖论中,某种趋势会在几组数据中显现,但当这些组被合并后,趋势却消失或反转。举个例子,对于某种疾病,有治疗方案 A 和治疗方案 B 两种,我们想知道哪种治疗方案效果更佳,下面是统计数据

Treatment ATreatment B
mild cases234 out of 270 recovered (87%)81 out of 87 recovered (93%)
severe cases55 out of 80 recovered (69%)192 out of 263 recovered (73%)
total289 out of 350 recovered (83%)273 out of 350 recovered (78%)

查看数据会发现以下两点事实:

  • 若看整体数据,治疗方案 A 的存活率优于治疗方案 B 的存活率。
  • 但我们从不同维度拆解来看,会发现对于轻症患者和重症患者而言,B 的存活率高于 A 的存活率。

那么为何会出现这种状况?

原因在于 B 方案治疗的重症患者多、轻症患者少,A 方案治疗的重症患者少、轻症患者多。对于重症患者,其本身死亡率就高;而对于轻症患者,其本身康复率就高。所以,根源在于 A、B 治疗方案中轻重症患者的比例不同

那么应该选治疗方案 A 还是治疗方案 B,其实也要分情况来看:

  • 如果是轻重症会影响治疗方案的选择。 比如之所以 A 方案的轻症患者多,重症患者少,很可能是因为 A 治疗方案比较简单粗暴,比较便宜,B 治疗方案比较复杂昂贵,因此对于医生来说,对于轻症患者,更有可能对其使用治疗方案 A,对于重症患者,更有可能使用治疗方案 B。那么在这种情况下,从存活率的角度来看,治疗方案 B 更好

image.png

  • 如果是治疗方案影响了轻重症的话。比如说治疗方案 A 见效快,治疗方案 B 见效慢,那么就算医生随机分配了治疗方案,但是对于使用治疗方案 A 的用户而言,大部分都在轻症的状态下就已经被治愈了,但是对于使用治疗方案 B 的用户而言,由于 B 方案见效慢,因此最终导致大量的轻症患者逐渐变为了重症。那么在这种情况下,从存活率的角度来看,治疗方案 A 会更好

image.png

事实上最可靠的因果推断方式就是 ab 实验,它可以有效避免辛普森悖论,因为它通过随机分配,确保混杂变量在实验组和对照组之间均衡分布。在上面例子中,如果采用 ab 实验,那么治疗方案 A、B 中轻重症患者的比例会相同,排除了混杂因子的影响,那么就保证了实验结果的可信。不过ab 实验也存在着如下问题:

  • 伦理道德问题:比如探究抽烟对肺癌的影响,不可能为了做这个实验怂恿受试者去抽烟
  • 成本问题:比如测试不同重力对人类生理的影响,通过创建两个具有不同重力环境的独立系统代价极大。
  • 不可行性:比如探究社会主义和资本主义对 GDP 的影响,不可能为了验证这个实验随机把国家国民分为两部分
  • 不关注用户群体维度和个体维度:A/B 实验只关注 ATE(大盘维度),这个维度太大了,但事实上由于对于每个用户群体或者用户对 treatment 的表现并不相同,有些人表现正向,有些人不感冒,有些人甚至表现负向,从大盘维度看整体表现可能并不会显著甚至会互相抵消。

为了弥补 ab 实验的问题,研究者开始尝试从大量的可观测数据中来进行分析,比如从历史抽烟人群数据中探究抽烟对肺癌的影响,收集宇航员的数据探究重力对人类生理的影响等等。这就逐渐衍生出了各种各样的因果推断方法

因果推断理论基础

目前因果推断存在两种分析思路,其一为 Judea Pearl 提出的因果图模型,其二则是 Rubin 提出的潜在结果框架。就前者而言,需绘制因果图展开分析,在业界的运用较少,后文将不再予以介绍。潜在结果框架在当下业界已获得广泛应用,是 Uplift建模的理论基础。故而本文会对其进行重点阐述。

潜在结果框架

基本概念

  • 单元个体 Unit: 实验中用于研究的原子单位,在对用户施加策略的实验中,unit一般就是指代用户

  • 策略措施 Treatment: 实验中施加在unit上的措施策略,比如敏感数据加密实验中,加密这一策略就可以被称为一个treatment

  • 变量 variable :可以理解为unit上的一些特征,按照是否会受到 treatment 的影响分为 Pre-treatment 和 Post-treatment:

    • Pre-treatment:是指不会受到 Treatment 影响的变量,也称为背景变量,也就是后面假设中提到的需要控制的变量,因为这些变量很可能会影响 Treatment 的分配,当然使用 RCT 可以有效控制这些变量
    • Post-treatment: 是指会受到 Treatment 影响的变量,这些变量会受到 Treatment 影响,而我们本来就会需要通过指标来观察 Treatment 的效果,如果我们控制住,就无法看出 Treatment 的效果了

对于 Pre-treament 变量,我们可以按照是否会对 Treatment 的效果有响应,应再将其分为有用变量和噪声变量:

  • 噪声变量:这类变量会对结果 Y 有影响,不会对 Treatment 的效果有响应,换句话说,也就是这个变量虽然会对结果 Y 有影响,但是不会因为施加 Treatment 而对结果 Y 产生影响,这些变量对于 Uplift 建模没有任何作用,反而会增加建模难度
  • 有用变量:既对结果 Y 有影响,也会对 Treatment 的效果有响应,这类特征对因果推断才有帮助
  • 可观测结果: 策略施加后产生的事实结果

  • 反事实结果 考虑unit接受另外一项策略treatment后产生的结果,这个结果并不存在,这也是因果推断要计算的目标

  • 策略影响: 策略最终产生的影响效果,按照所评估的群体大小可以分为:ATE、ATT、CATE、ITE

    • ATE Average Treatment Effect :总体平均策略影响效果,它考虑的所有参加实验的人群,包括实验组和对照组的人群
    • ATT Average Treatment effect on the Treated group) :实验组的平均策略影响效果,它考虑的是实验组的人群
    • CATE( Conditional Average Treatment Effect :某个子人群的平均策略影响效果,比如策略对老年人的影响效果
    • ITE Individual Treatment Effect :个体的策略影响效果

三个基本假设

SUTVA

SUTVA 全称是 Stable Unit Treatment Value Assumption,它是指对于任何一个 unit 来说,它的潜在结果不会因其它个体被分配处理的方式而发生变化;并且,对于每个个体来说,各个处理级别不存在不同的形式或版本, 不同版本会导致不同的潜在结果

这个假说实际上可以理解为两点:

  • unit 是相互独立的。也就是说,unit 之间不会相互影响,不会说因为某个 unit 的结果影响到了另一个 unit 的结果。举个最简单的例子,某种感冒预防药对感冒的预防作用,我就不能让实验组影响到对照组,如果对照组的人和实验组的人在一起,实验组因为服用了感冒预防药,因此他们就不容易携带感冒病毒,随着实验组的人不容易携带感冒病毒,对照组接触的人全是实验组,那么他们也不容易感冒。
  • 每种 Treatment 只能拥有一个版本。还是感冒药的例子,再实验组中的所有人吃的感冒药的剂量应该是一致的,剂量不一致应该视为新的 Treatment。
Ingore/Exchangible

可忽略性,也叫做可交换性。它是说对于一个给定的背景变量 XX,策略 TT 的分配 WW 独立于潜在结果 YY,用公式表示的话为:

W ⁣ ⁣ ⁣Y(T=0),Y(T=1)X.W \perp \!\!\! \perp Y(T = 0), Y(T = 1) | X.

上面公式的意思有两点:

  1. 如果两个 unit 的背景变量 XX 都相同,那么只要它们接受的策略 TT 相同,它们最后的结果 YY 的也一定相同,对于群体来说,需要考虑的是概率和期望,用公式表达也就是:
p(Yi(0),Yi(1)X=x,T=Ti)=p(Yj(0),Yj(1)X=x,T=Tj)p(Y_i(0), Y_i(1) \mid X = x, T = T_i ) = p(Y_j(0), Y_j(1) \mid X = x, T = T_j )
  1. 如果两个 unit 的背景变量 $$$$ 都相同,那么只要它们的结果相同,它们策略分配也应该相同,对于群体来说,需要用概率表示,也就是:
p(TX=x,Yi(0),Yi(1))=p(TX=x,Yj(0),Yj(1))p(T \mid X = x, Y_i(0), Y_i(1)) = p(T \mid X = x, Y_j(0), Y_j(1))

之所以称之为可忽略性,举个例子,如果对于某一个 unit1 来说,实际上只有事实 outcome,而没有反事实 outcome,但是有了上面这个条件,那么我们就可以找一个和这个 unit1 相同背景变量 XX 的 unit2 在反事实条件下的数据(对于unit2来说也是事实结果),然后拿它来作为所求 unit1 的反事实结果,同样的,我们也得到了 unit2 的反事实结果。那么我们从数据的角度上来看,本来对于 unit1 和 unit2 来说,都分别缺少一个反事实结果,但是由于它们背景变量相同,按照上面的规则,unit1 和 unit2 的事实结果互为对方的反事实结果,那么我们就相当于直接忽略掉了 unit1 和 unit2 真正的反事实结果,因为用可观测结果对真正的反事实结果做了近似。

之所以称为可交换性,也很好理解,还是上面的例子,对于 unit1 来说, unit2 因为和他具有相同的背景变量XX,所以它们之间可以相互交换替代,利用观测数据就可以得到反事实结果

Positive

实际上我们考虑现实中的情况,如果有两拨病人,一拨吃了药,一拨没有吃药,如果这两拨人的背景变量 XX "对应"相同,这里的对应相同,举个例子,如果 unit1 吃了药,他的背景变量是 XX,那么在不吃药的病人群体中必须要有一个 unit 也有需要有着相同的背景变量 XX。这就是所谓的 Positive,用公式表达的话可以写成:

P(T=tX=x)>0,t and x.P(T = t \mid X = x) > 0, \quad \forall t \text{ and } x.

也就是说,不管背景变量有多少种情况,即无论 XX 有多少种取值,它都必须出现在所有的 treatment 组中。

为什么这么说,举个实际的例子,还是药物背景,考虑 XX 是年龄,如果在 A 药物的实验组中存在幼年、青年、老年三种群体,而对于 B 药物的实验组中只存在幼年、青年两种群体,这就不满足 Positive 的条件。这会造成什么后果呢?事实上,这会出现缺数据的情况,也就是说会使得我们无法正确估算如果 A 药组中老年人如果使用 B 药会出现什么结果。一般来说可忽略性和正向性放在一起,可以称呼为强可忽略性

Uplift 建模

Uplift 建模,也称为增量建模,是因果推断在个性化营销和精准干预领域的一种具体应用。它借助因果推断的原理,并融合机器学习技术,用于辨别哪些个体对特定干预措施会产生最为显著的响应。换句话说,Uplift model 致力于预测某一干预(例如营销活动、促销策略)对个体造成的增量影响,也就是施加干预前后个体行为的改变。

Lift=P(buytreatment)P(buyno treatment)\text{Lift} = P(\text{buy} \mid \text{treatment}) - P(\text{buy} \mid \text{no treatment})

这和传统的预测模型有别,传统模型通常直接预测目标:

Outcome=P(buytreatment)\text{Outcome} = P(\text{buy} \mid \text{treatment})

Uplift模型着重的是干预的因果效应,而非仅仅对结果进行预测。

建模的目的

一般来说,个性化营销人群可以分为四类:

  • Persuadables:只有施加营销策略才会购买,不施加策略就不会购买,对策略正向敏感。
  • Sure things:无论是否施加策略,都会购买,对策略不敏感。
  • Lost causes:无论是否施加策略,都不会购买,对策略不敏感。
  • Sleeping dogs:原本会购买,但施加策略后反而不会买,对策略负向敏感。

那么从营销策略的角度来看,最合理的方式就是只对 Persuadables 施加,这也就是 uplift 的目的:找出对策略正向敏感的人群。

建模思路

对于Uplift建模来说,挑出策略正向敏感人群只需要两步:

  1. 计算用户的ITE:
ITEi=Yi(W=1)Yi(W=0)\text{ITE}_i = Y_i(W = 1) - Y_i(W = 0)
  1. 挑出ITE为正的用户

看上去步骤颇为简单,犹如将大象放进冰箱一般,然而问题的关键在于第一步,即如何精准算出用户的 ITE 。从 ITE 公式能够看出,ITE 是事实结果与反事实结果的差值,事实结果易于观测获取,可反事实结果并不存在于现实世界,而是存在于假设之中。正因如此,怎样计算反事实结果便成为了 Uplift 建模领域需要解决的问题。

建模流程

  1. 开启AB实验:AB实验是Uplift建模的前置依赖,一面AB实验通过随机分组(实验组和对照组)消除潜在的混杂变量影响,另一方面,AB实验天然能够分离出实验组和对照组数据,提供了一个明确的标注数据集,这种数据才能用来训练模型以预测个体层面上的差异化提升。
  2. 模型训练:基于AB实验收集到的可观测数据,使用机器学习的方式对其进行建模,目前建模方式主要有两种,一种是基于传统机器学习的建模方式,一种是基于深度学习的建模方式。
  3. 模型评估:模型训练完成之后评估模型效果,找出最优模型
  4. 模型预测:使用最优模型预测并找出策略敏感人群

评估方式

因果推断中使用称为AUUC(Area Under the Uplift Curve),字面意思即为提升曲线下的面积,来衡量一个Uplift模型的效果,一般来说,AUUC分数越大,模型效果越好。

这里 AUUC 的计算逻辑是这样的:

  1. 模型预测:使用模型来预测每个用户的增量,也就是 ITE
  2. 使用预测的 ITE 排序:按照模型预测的 ITE 将用户从高到低进行排序。分数越高,表示模型认为这个个体更可能受到策略的影响。
  3. 对所有用户进行 分桶:将排序后的样本划分为 NN 个区间,可以是等人数的分位数(如十等分、百分位数),也可以根据业务需求自定义区间。由于 AB 实验的缘故,实验组和对照组能够满足 Ignore 和 Positive 的性质,如果模型预测的足够准确的同时 AB 实验足够随机化,每个桶里的用户群体中,属于实验组和对照组的用户数量应该差不多,并且应该是同质的,同时桶内的用户群体也能满足 Ingore 和 Positive 的性质
  4. 计算桶内用户的CATE:到这个步骤中实际上应用到因果推断理论里的三个假设了,对于每个桶内的用户群体,根据 Ingore 和 Positive 的性质,可以直接用桶中的实验组的实际 Target 值减去对照组的实际 Target 值然后算平均,这样就能计算出这个桶内用户的 CATE
  5. 计算 AUUC 分数:将每个桶内的总体 ITE 进行累加得到 AUUC 分数,进行归一化得到最终结果

参考资料

  1. proceedings.mlr.press/v67/gutierr…
  2. medium.com/sherry-ai/%…
  3. ftp.cs.ucla.edu/pub/stat_se…