AB实验是互联网行业产品功能优化和迭代常用的工具,覆盖了大部分的需求场景,如内容推荐、搜索、商业化、UI迭代等。从统计学的角度出发,AB实验本质上是使用假设检验去证明假设是否成立,从而达到验证我们想法的目的。本文记录了在日常使用AB实验中涉及到的一些比较常见的陷阱。
当人们尝试探究两种变量是否具有相关性的时候,会分别对之进行分组研究或细分分析。然而,在分组比较中都占优势的一方,在总评中有时反而是失势的一方。该现象于20世纪初就有人讨论,但一直到1951年,E.H.辛普森在他发表的论文中阐述此一现象后,该现象才算正式被描述解释。后来就以他的名字命名此悖论,即辛普森悖论。
从数学上解释,虽然
,那么
也有可能是成立的。
来看一个经典的例子:
一个美国大学里有商学院和法学院两个学院。单独看两个学院的录取数据,人们都怀疑有性别歧视。但是学校给出的总录取率报告,结果却是相反的!下面来分别看下
法学院:
性别 | 录取 | 拒收 | 总数 | 录取比例 |
---|---|---|---|---|
男生 | 8 | 45 | 53 | 15.1% |
女生 | 51 | 101 | 152 | 33.6% |
合计 | 59 | 146 | 205 |
商学院:
性别 | 录取 | 拒收 | 总数 | 录取比例 |
---|---|---|---|---|
男生 | 201 | 50 | 251 | 80.1% |
女生 | 92 | 9 | 101 | 91.1% |
合计 | 293 | 59 | 352 |
单独看两个学院的录取数据,女生的录取率都比较高。但是将两学院的数据加起来,结果却是相反的,男生的录取率反而更高:
性别 | 录取 | 拒收 | 总数 | 录取比例 |
---|---|---|---|---|
男生 | 209 | 95 | 304 | 68.8% |
女生 | 143 | 110 | 253 | 56.5% |
合计 | 352 | 205 | 557 |
为什么会产生这种现象呢?有学者认为导致辛普森悖论主要体现在权重扭曲或遗漏变量偏差(omitted variable bias)。主要是因为这两个学院男女比例和录取率都很不一样,相当于在细分分析的时候引入了其他影响结果的变量。即使总体 A 的条件期望总是大于总体 B 的条件期望,而由于总体每种 “条件” 的发生概率(比重)不同,使得在将 “部分” 加总之后,所得的 “整体” 结果可能逆转。
假设下图中三种不同颜色的散点代表三个不同的企业的数据。如图所示,无论单独考虑任何一家企业,变量
对于变量
都有正的作用,即回归斜率为正。然而,当你把这三个企业的数据混合在一起进行 “混合回归”(pooled regression),则所得的回归斜率就变为负。混合回归相当于 “无条件期望”,因为没有控制企业的个体固定效应(individual fixed effects),故无法反映变量 x 对于变量 y 的真实作用(混合回归一般不一致)。在理论上,如果能控制足够多的条件,则可以避免。
混合回归
在真实实验场景中,我们要保证实验的流量跟大盘分布保持一致,如性别比例、系统型号比例、高中低活用户比例、不同版本的用户比例等在统计学意义上保持一致。此外,实验放量要控制实验组和对照组放量的比例、时间一致。
如果各实验组用户特征分布不均衡,会引入额外的变量,导致实验结果不准确,甚至导致上面讲到的辛普森悖论等问题。常见的要校验的特征,如性别比例、系统型号比例、好友个数等。这里补充介绍下AA实验(空跑),AA实验可以在正式AB实验之前,排查实验的埋点、分流、统计是否有问题。如果实验的埋点、分流、统计没有问题的话,AA实验中各分组的数据表现应该差异不大。
除此之外,如果指标上报异常或者实验组中含有离群用户等,都可以在AA空跑期提前排查出来。比如一些均值类的指标,本质上是没有上限的,一些离群用户产生的极大数值可能就会造成影响。也可辅助进行指标的选取,检测指标的稳定性,如某些指标本身波动性很大,就不太适合用作AB实验的指标。
AA实验
AA实验主要有以下几个作用:
AA实验一般也都是保持现状,不会给产品带来额外的风险,当然会有时间上的成本。也有AA回溯等替代方法。
当我们想通过AB实验检验对用户来说感知明显的变化时,用户可能习惯了原先的功能或者交互,新的交互或功能对他们来说有一定的学习成本。所以老用户在学习适应阶段的表现可能会与原先有些不同。但实际表现有可能是积极的,也有可能是消极的。
积极的反应又称为新奇效应,实验的指标可能会表现出正向的增长,到那时当用户好奇心消退之后,又会回到之前一般的水平。 举个例子,当某一天我们打开微信,发现微信的导航栏多了一个图标,我们肯定会非常好奇地去点开它看看是什么功能。打开发现它其实就是原来的朋友圈而已,那第二天第三天可能就慢慢习惯了这个新的东西,回到原先的使用习惯。
另一方面,学习效应也有可能表现为消极反应。老用户对改变可能不习惯甚至反感,有一定上手成本,这个时候需要可能会带来短期负面的影响,当然一部分可能最终表现为实验不显著。比如使用的某项功能的入口在实验中又多了一层,用户可能一时没看到就不用了。
实践中,面对可能出现的学习效应,有什么应对方法呢:
这种情况通常体现在互联网社交网络、双边市场的跨边网络效应中。
互联网产品很多都带有社交属性,每个用户的行为并非完全独立,用户间的行为并非完全独立。如果存在网络效应,我们分组的独立性假设往往不能满足。举个例子,我们在进行推荐算法的优化实验,检验优化方案是否带来了用户活跃或留存的提升。假设好友被分到了实验组,我被分到了对照组。曝光给好友的内容更加的有吸引力,他作出了点赞、评论等互动行为。而产品的社交属性,使我可以看到好友的互动行为,原本不会被曝光给我的内容,我通过好友的互动间接接收到了。也提高了我去互动的概率,提高了活跃程度。这样就发生了实验组想对照组溢出的问题,独立的假设受到了破坏。
另一种情况是发生在类似打车平台这样的共享经济业务中,打车平台就是个双边市场,一边是注册司机,另外一边是乘客。如果在一个地理区域中划分实验组对照组,验证一个乘客端的优化。如果实验组的优化带来了需求的提升,那就会有更多的司机接到了来自实验组的订单。短时间内司机的数量是固定的,分配给实验组的司机多了,自然对照组司机就少了。导致实验组结果高估,且破坏了独立假设。
常见的解决方法是地理分离或者用户聚类。
地理分离从地理上区隔用户,这种情况适合打车平台这样能从地理上区隔的,比如北京是实验组,上海是对照组,只要两个城市样本量相近即可。
用户聚类是指按照用户的关联度将用户聚成簇(Cluster),保证簇内用户的关联强,而簇间的关联弱,那么簇与簇之间是近似独立的。假如一个用户被划分到对照组,那么大部分与他直接联系的用户也应该被分到对照组中。
网络中进行聚类
AB实验中需要给实验组和对照组进行变量控制,让用户得到不同的用户体验。但是很多情况下,比如在很多游戏场景中,我们是没有办法进行控制想要测试的变量的。从用户角度讲,一部分用户无法使用某类功能而另一类用户则可以,可能会引发舆情问题;从开发角度,同时维护多套代码也有一定成本。这就导致我们无法直接使用AB实验。
可能有同学会说,能不能通过营销活动去激励用户进行某个操作或行为,来对用户进行分组,进而研究用户的这个行为和留存是否有关联。实际上这样会产生新的偏差,得到的分组用户特征是有差异的。用户的很多行为是我们无法控制的,如果我们去刺激用户进行某个行为,有的用户对营销活动不敏感,可能会参加营销活动的用户本身活跃程度就比较高。
此外,AB实验还有一定的实验成本,可能损害用户体验等问题。在无法满足AB实验的条件下,可以使用手边已有的历史数据进行推断和决策就变得很重要,这个时候可以用因果推断或者称为观察性研究来解决。
因果推断中常用的评估因果效应的方法是PSM(Propensity Score Method,倾向分)。PSM做的事情是帮助在历史数据中找到合适的人去做对比,人为地构建出特征相似的实验组和对照组,然后对两组进行比较。
计算得分前我们会先明确Treatment(我们要控制的变量),要控制的特征X(混淆变量)和目标变量Y。定义
为在对象自身特征和外部因素的条件下,实验对象倾向于某个treatment的概率。可以看成是一个二分类问题,使用随机森林或逻辑回归等去求解计算得到PSM倾向分。得到倾向分之后,再用诸如Nearest Neighbor等方法进行匹配。从treatment=0的样本中挑选和treatment=1相似的样本,没有匹配的样本则丢弃掉。匹配之后实验组和对照组在PSM分值的分布是基本一致的。之后再去进行因果效应推断。
在互联网公司中,AB实验已经非常普遍,AB实验是促进业务持续迭代最有效的方式之一。虽然AB实验很好,但是它并不是一劳永逸的。本文列举了一些AB实验实践中可能遇到的问题,辛普森悖论、网络效应、学习效应、变量不可控等。当然除了本文提到的问题,还有其他的需要在实践中注意,如carry over、多重检验问题等。归根结底AB实验只是工具,如何用工具更好地为业务创造新的价值,才是我们的最终目的。
陈强《一石二鸟:从迭代期望定律透视辛普森悖论》