01 摘要
A/B 实验或A/B 测试是目前互联网企业数据驱动业务决策的基石,大多数互联网企业通过A/B 实验衡量如新策略对用户体验, 企业营收的影响, 然后决策是否进行产品或策略迭代。以BIGO为例,平均每周,包括直播平台Bigo Live和短视频平台Likee同时进行着上百组包含策略,产品,UED,运营的实验。
从实验平台设计的角度来看,一方面,高频的产品策略迭代使得从工程和算法角度对实验平台系统的高效性,,置信检验计算的准确性,流量分配的有效性提出了更高的要求。另一方面,直播和短视频平台作为典型的双边市场(two-sided market),这使得很多核心指标的i.i.d 假设失效,经典的假设检验模型不适用,这对置信检验的方法提出更高的要求。
在该系列文章中,我们将从置信检验,流量分配,AA 实验三个角度分享BIGO在AB实验平台设计和AB实验的一些经验,包括如何结合统计模型和算法来设计更为高效的实验平台,希望我们的工作能给以如短视频直播等同行给予借鉴。
02 置信检验
2.1 问题与场景
对于一个快速成长的企业,在产品或项目的早期,大家很容易发现上线新策略时营收或用户体验提升的非常快,经常是百分之十几或几十的提升;但随着时间的推移和产品策略的迭代,我们会发现可提升的空间越来越小,慢慢的就只能提升百分之几或千分之几;以经典的广告系统为例,平均用户的点击概率只有百分之几。
以广告系统为例,其用户的CTR 模型级别在百分之几;假如基线用户的点击率是5%,那5%的相对提升1个点也大约是5.05%,给定实际这么微弱的差别,我们怎么能判断这相对1%的提升,绝对万分之一的差别,是真正由新策略带来的,而不是数据上的随机扰动?
另外,比如我们上线一个新策略,他前2、3 天的数据表现很好,我们能以此推断策略是有效的吗?事实上在很多产品如短视频,上线新方案或新策略都会有用户的初始新鲜效应(refressness effect),即在短暂的提标提升后然后出现迅速的回落[1]。
那么,对于像BIGO一个发展到中等规模的互联网企业,他的AB平台需要回答上述等问题:即新策略的提升统计意义上是置信或者不置信的。
我们从假设检验的原理方法和实际上的工程实践这两个角度来分享BIGO在这方面的一些经验。
2.2 假设检验与原理方法
假设检验(hypothesis testing) 是统计上的证明方法-通过反驳(contradiction)的方式。

一个经典的例子是通过抛硬币的方式来确定一枚硬币是否是平(fair) 的。假设我们分别抛硬币10次和10000次, 得到如下两个结果:
● 抛金币10 次,7 次朝上,3 次朝下;
● 扔金币1000 次,700 次朝上, 300 次朝下;
对于情况1,大家可能会持保留或怀疑的态度, 因为直觉上感觉随机的因素会比较多;对于情况二,大家会比较有信心认为这枚金币是有偏的,因为我们实验的次数足够多。我们可以把类似直觉上的方式用统计的方式量化地表达出来:即基于概率的思维判断方式。
以刚才提到的抛硬币的例子,我们硬币服从二项分布(Bernoulli),即:

上图是扔10次硬币有K次朝上的分布图, 我们从图上可以看到:在给定硬币是平的这个假设下,有七次朝上甚至更极端(heads>7)的概率为:
也就是说在给定硬币是平的这个假设下, 我们有17.2%观察到实际抛硬币中有7 次朝上甚至更极端(heads>7) 事件发生, 因此我们不能反过来推断我们的假设是错的。
而对第二种情况, 给定硬币是平的这个假设下, 扔金币1000 次,700 次朝上甚至更极端情况的概率非常小(我们可以计算出:
将上述的例子用系统化的数学语言表示,就构成统计上假设检验(hypothesis testing) 的基本概念:
1. 确定原假设(Null hypothesis)与备择假设(Alternative hypothesis)。原假设我们用符号
备择假设是硬币不是平的(The coin is biased) ,
2. 在原假设下,我们计算观察到的事件以及更极端事件发生的概率:
3. 如果在原假设下,该事件以及更极端事件发生的概率非常低,我们就可以拒绝原假设。
在我们原假设下,该事件以及更极端事件发生的概率
03 假设检验:应用案例
现在我们可以尝试应用经典的假设检验方法如T检验(T-test)或Z检验(Z-test)用于线上的AB实验。
假设一个APP想对于新用户注册页面两套不同的UI方案进行测试:

也就是总共访问用户中有注册的用户数,除以总共访问用户数。
我们可以将用户流量进行随机划分成50%-50%的流量,其中基于"Logo-A"的用户群组我们设置为对照组(control group),基于"Logo-B"的用户群组我们设置为试验组(treatment group)。相应的,平均而言,使用该APP的同学有约一半能看到基于logoA的UI,另一半能看到logoB的UI。
在进行了几天的实验后, 我们可以收集到实验结果数据如下:

问题:我们能根据现有的数据下结论说方案-B要比方案-A好吗?
1. Step 1: 确定原假设与备择假设, 我们希望是证明方案B要比方案A好(通过反驳原假设),因此有,
a. 原假设:
b. 备择假设:
2. Step 2: 对于试验组和对照组的注册率,我们可以计算出其样本均值与样本均值的方差:
a. 试验组:
b. 对照组:
3. Step 3:对于用户的注册率,其大致服从正态分布;试验组与对照组相互是独立,两个独立正态分布之差,我们有:
a.
b. 相应地,我们可以计算其Z-score:
通过查Z-score表我们可以计算其相应的
所以,虽然Logo-B方案的注册率要高于Logo-A方案的注册率,但我们还不能断定方案B确实比方案A要好,因此AB平台的同学们还得继续观察,等有更多数据才能下结论。
04 工业界的实践
4.1 问题与挑战
上述中,我们介绍了置信检验的基本原理并通过一个新用户注册率的案例展示了如何进行对线上实验进行置信计算。但在实际的工业界,如果我们直接套用上述经典的置信检验模型,可能会遇到如下类似的问题:
● 首先,经典模型在实际的应用是隐含一定的前提假设条件的,如数据量足够大,独立同分布(i.i.d假设)等,然而这些条件在某些实验环境下未必满足。如短视频用户的播完率,对于单个用户,他多次播放之间显然是强相关。
● 工程搭建与算法设计的挑战,对于一次实验,一般我们需要观察多天才能下结论。而对于策略和产品的同学而言,对于新方案或新策略,他希望可以同时观察单天或多天的;又或是有选择性观察实验中的一段连续时间。也就是相应的AB平台对于一周上百个实验中单天级别,或连续时间可以快速地进行多时间,多指标维度的置信检验计算。而直接应用置信检验方法,意味着需要大数据平台大量的底层指标运算。
基于以上的问题与挑战,在借鉴了诸多文献和资料后,我们采用了统计重抽样(bootstrap)中的jackknife[2]方法来设计我们的置信检验模型。
Jackknife方法由Quenouille(1949) 提出,并由 Tukey(1958) 创造了 Jackknife 这一术语。Jackknife 是一种统计建模应用于参数估计再抽样方法,其原始动机是降低估计的偏差。
在上述例子中我们可以看到,置信检验实际工程实践的核心要点是标准差(standard deviation or standard error)的计算。一个基本应用jackknife方法计算标准差的方法描述如下:
假设线上要进行一次AB实验, 控制组里有N(如N=50W)个样本
设
4.2 Jackknife分桶计算方法
在实际中,直接应用上述的方法计算,如果线上的用户量是N的话,意味着我们需要进行N次的计算。对于BIGO现有的线上数据,这样的计算是不太现实的,因此,我们可以考虑采用分桶计算的逻辑:把样本分成M个桶,如取M=50。设分完桶后, 我们得到:
设
是数据中我们去掉第i个桶的样本,
其中
则通过jackknife估算的分桶加权标准差为:
在给定jackknife计算出均值和标准差后,我们很容易把结果代入到置信检验方法中。
注:在上述的讨论中,我们直接假定Jackknife于适用置信检验均值方差;当然jackknife并不适用于所有场合,理论上只有当指标是样本的线性光滑函数(linear functions of the data and/or parameters, or on functions that are smooth enough)[3,4], 如果我们关注的指标是如留存的median;则该方法就不适用了;那我们需要考虑其他bootstrap方法进行替换。另外在分桶中桶数量的选择和相关的理论保证过于理论,在这里就不再叙述, 有兴趣的同学可自行搜索jackknife的相关论文。在实际使用中, 我们发现N取100就可以取得比较好的结果。
4.3 实际效果
在实际的工程实践中,我们发现基于jackkinfe或其他重抽样方法的置信检验框架有诸多优势:
● 首先对于非i.i.d假设的指标,在给定一定数据量级的基础, jackknife能理论上结果的可靠性;我们可以用同一套框架,几乎对所有指标进行置信检验计算。
● jackkinfe本身就是一个方差降低的方法,也就相对于原始的置信检验方法,他所需要的样本量更少。我们可以以更小的数据量得出结果置信或不置信的结论。
● 在工程实践上,意味着我们只需要每天储存少量的中间数据,如每天每个实验组100份数据, 就可以快速地对多时间,多指标维度进行实时计算。这大大提升了系统的计算效率。
计算效率的提升:以某国家短视频Likee实验为例:在上线基于Jackknife的置信检验框架之前,平台每天需要的计算时间约为一小时;在使用新的模型框架和工程师的迭代优化后,对于一个实验,单天和连续多天的计算,平均时间缩短到几分钟。
流量利用效率的提升:

上表是我们实验平台在新旧策略下一个对照统计;在上线新框架后,在给定流量normalized的情况下,新框架可以支持的实验数量提升了47.1%,这大大提升BIGO实验流量的利用效率,有效地支持了产品和算法策略快速迭代,同时也进一步降低了实验的成本。
05 总结与后续
在上述章节中,我们讲述了置信检验模型的原理与方法和BIGO在实际工程的框架实现。但实际的线上情况会更加复杂,如相对差异(提升或降低的百分比)的置信检验;稀疏指标的置信检验(如直播中用户付费率),多模型融合与选择,双边市场中指标均衡问题等等。对这方面有兴趣的同学可以发信到g-data@bigo.sg。
在接下来的系列文章中,我们将会继续分享我们在流量预配,AA实验等AB实践方面的相关经验和总结。
References
[1] Lessons Learned at InstagramStories and Feed Machine Learning:
https://instagram-engineering.com/lessons-learned-at-instagram-stories-and-feed-machine-learning-54f3aaa09e56
[2]<Computer age and statisticalinference, Chapter 10>,Efron, Bradley and Hastie, Trevor, 2016.
[3] <A trustworthyjackknife>, Rupert G. Miller, Jr,1964.
[4] <The jackknife estimationmethod>, Avery I.McIntosh, 2016.

