如今量化策略实施的效果评估变得越来越重要,数据驱动产品和运营、业务等各方的理念越来越受到重视。如今这方面流行的方法除了实验方法AB testing外,就是因果推断中的各种观察研究方法。
“统计相关性并不意味着因果关系”,数据分析工作经常遇到归因分析问题,又因为种种原因而无法进行AB testing直接随机分组实验比较结果。举一些例子:
在 feeds 流里刷到一个新推荐策略的内容的用户留存更高,他们的高留存是因为这个推荐策略导致的吗,这个策略究竟对留存的提升有多大效果?
上周投放了某游戏广告的用户登录率更高,他们的高登录率有多大程度是由广告带来的,有多大程度是由于他们本身就是高潜力用户?
在以上这类案例中,我们需要分析某个策略(干预treatment)对结果的影响情况,从而探究其因果效应。那么可以利用已有的用户行为数据来进行观察研究分析。而观察研究中最重要的一个理念是:反事实框架,即和我们能够观测到的现实情况相反的一种状态。在于反事实框架下进行因果推断的原理是这样的:变量 X 对变量 Y 变化的因果效应可以表达为,当 X 成立时 Y 的结果与 X 不成立时 Y 的反事实结果之间的差异,如果这种差异存在且在统计上显著,则称变量 X 对变量 Y 是有因果效应的,否则二者之间就不存在因果关系。因此因果推断的难点在于我们无法对每个用户同时观测到两个状态下的结果。
一个粗暴的思路是将实验组和对照组的样本做一下 “匹配”。例如,对于实验组的每一个样本,我们都去对照组里找一个一模一样的样本。当样本属性全部都是离散的,并且属性的维度(个数)很小的时候,这么做也许是可以的。当样本属性里有一些连续变量或者当样本属性的维度很高时,这么做太粗暴了,大部分人是找不到匹配对象的。因此“倾向得分匹配”可以用来解决寻找匹配对象的难点问题。
倾向得分匹配PSM是因果推断中的一种统计学方法,用于处理观察研究的数据。在观察研究中,由于种种原因,数据偏差和混杂变量较多。倾向评分匹配的方法正是为了减少这些偏差和混杂变量的影响,以便对实验组和对照组进行更合理的比较。PSM是处理观察性研究(observational study)的经典方法。
“倾向性得分” 的定义很直观,是一个用户属于实验组的 “倾向性”:e(x)=Pr[T=1|X]=Pr[T=1]。具有不同特征(Corvariates)的用户被干预(treatment)的概率应该相等。直观来说,对于倾向性得分相同的一群用户,treatment 和特征是独立的,treatment 和潜在结果也是独立的,即做到实验中的随机性要求。理论上,如果我们对每一个实验组用户都在对照组里匹配一个得分相等(要求有点严苛)的用户,我们就能得到同质的实验组和对照组,就可以假装我们做了一个 A/B Test 了,接着就可以随意地进行组间比较了。倾向得分法(PS)主要有分层、匹配和加权三种方法。这里倾向得分匹配法属于匹配方法。
上面这段话具体实施起来,可以分为以下几个步骤。
1、倾向性得分估算:倾向性得分怎么估算?
2、倾向性得分匹配:怎么用得分完成匹配?
3、平衡性检查:怎么知道匹配效果?
4、因果效应估算:匹配后,怎么从匹配后的两组用户中得到因果效应?
5、敏感度分析:混淆变量的选择等主观的一些分析是否会得到一致的分析结论?
这一步直接就是建模问题,因变量为是否被干预Treatment,自变量为用户特征变量。套用LR或者其他更复杂的模型,如LR + LightGBM等模型估算倾向性得分。
有了每个用户的倾向性得分,针对目前的实验组用户,匹配得到一个接近相同的对照组。
1、匹配用的得分:可选原始倾向性得分 e(x) 或者得分的 logit,ln(e(x)/(1−e(x)))。
2、修剪(trimming):先筛选掉倾向性得分比较 “极端” 的用户。常见的做法是保留得分在 [a,b]这个区间的用户,关于区间选择,实验组和对照组用户得分区间的交集,只保留区间中部 90% 或者 95%,如取原始得分在 [0.05,0.95]的用户。
3、匹配(matching):实验组对对照组根据得分进行匹配的时候,比较常见的有以下两种方法。nearest neighbors: 进行 1 对 K 有放回或无放回匹配。
radius: 对每个实验组用户,匹配上所有得分差异小于指定 radius 的用户。
4、得分差异上限:当我们匹配用户的时候,我们要求每一对用户的得分差异不超过指定的上限。
Step 3: 平衡性检查
怎么衡量 “配平效果 “呢?比较直观的是看倾向性得分在匹配前后的分布、以及特征在匹配前后的 QQ-Plot。匹配后的实验组和对照组的倾向性得分分布更加接近,变量分布也更接近。量化指标 Standarized Mean Difference (SMD)。SMD 的一种计算方式为:(实验组均值 - 对照组均值)/ 实验组标准差。一般如果一个变量的 SMD 不超过 0.2,一般就可以认为这个变量的配平质量可以接受。当一个变量的 SMD 超过 0.2 的时候,需要凭经验确认一下那个变量是不是没有那么重要。
我们的目标是推断实验组的平均干预效应 ATT (Average Treatment Effect on the Treated)。ATT 的定义为 ATT=E[Y1−Y0|T=1]。现在我们已经有一对接近同质的实验组和对照组了,有很多方法可以用来估算 ATT 。可以直接比较匹配后的实验组和对照组,也可拟合一个由干预和用户特征预测观察结果的线形模型,看看干预 T 的系数是多少。
敏感性分析主要的目标是衡量当混淆变量(特征)不满足非混淆假设(unconfoundedness )时,分析结论是不是稳健的。简单的做法是去掉一个或者多个混淆变量重复上面的过程。
产品经理在会上展示新加了某功能后的用户复购数据。其中使用新功能的用户群复购率比未使用的用户群高20%。于是认为该功能提高了用户复购率,想在产品上全面推广该功能。作为数据分析师如何去评估分析该效果?
数据描述:
数据主要包括三方面:用户的特征变量、是否使用功能,是否发生复购。(这里不直接把数据给到大家,可以尝试用自己工作的数据。)
结果展示:
匹配数量 |
1116 |
处理组(使用功能)复购率 |
0.24 |
对照组(未使用功能)复购率 | 0.13 |
均值差异 |
0.11*** |
结果描述:
按照1:1的匹配比例,最终匹配上1116对用户数据。其中处理组中的用户复购率为24%,对照组为13%,两组的差距显著。因此从数据角度证明该功能确实能提高复购率。但是归因为功能提高的复购率应该为11%,而不是20%。
R语言参考代码链接:
https://github.com/Serena-TT/PSM/blob/master/PSM/propensity_score_matching.R
一般在工作中应用场景比较复杂,涉及多分组情况,倾向得分法主要有分层、匹配和加权三种方法。而加权方法中的逆概率加权处理方法(IPTW)更适用于多分组的情况。以下为学习中用到的参考资料。
PSM和IPTW的教学视频:
《A Crash Course in Causality: Inferring Causal Effects from Observational Data》链接地址:https://www.coursera.org/learn/crash-course-in-causality
论文:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3710547/
R分析包:
https://cran.r-project.org/web/packages/twang/vignettes/mnps.pdf
数据分析付费社群现优惠进入。
长按图片扫描二维码直接查看内容