Dan

数据分析笔记-AB实验系统

2020-04-11

现在几乎所有的大公司都会采用AB实验来进行数据驱动的决策。任何细微的改动、新功能的上线,如果没有AB实验结果的佐证,你都不好意思上线。所以一个AB平台,动辄每天几百个实验在同时测试着我们的用户,而根据Netflix的经验,不好意思,这其中90%的实验会得出错误的结论。
当然,实验的必要性和价值早就无需阐述,因为有时候哪怕一个正确的实验策略都够养活一整个实验团队了。问题在于,我们有没有在正确的做实验。
(以上都是废话, 这里主要记载下这半年来的实验心得)

overview

note

实验流程

一个实验完整的生命周期包括实验前(实验假设、设计,流量分配),实验中(空跑、上策略),实验后(实验分析、放量)。规范的实验流程能决定实验的成败。

  • 实验假设。建立实验假设,明确实验目的,确定总体评价标准(OEC)。OEC可以选择单一的度量,也可能是多个度量的加权组合。所以实验平台需要有强大、灵活的指标矩阵构建能力。

  • 实验设计。单一变量控制:实验可以有多组,但每个组之间只能有一个变量的差异(否则会给实验分析带来大量的工作)。单一职责:一次实验尽量只验证一个假设。

  • 流量分配。实验前需要确定实验单元、样本量和分流策略。预估实验最小样本数可以节省实验流量。流量分配的原则是独立(随机)均匀。流量隔离的方法是分域分层,层与层之间的流量正交。

  • 空跑(AA)。真正实验前要确保组间流量无大差异(没有一种分配算法可以完全平均流量),如果差异波动过大则需要矫正流量后再实验,无法矫正则在实验分析阶段考虑空跑期差异。空跑的另一个好处是可以进行全流量回溯。

  • 实验分析。实验分析包含实验检验(偏差显著性)、高级分析(用户分析、归因分析等等)。

  • 放量。因为大盘影响(实验OEC并不能准确反映大盘的OEC)的不确定性、新奇效应(实验时间对统计显著性的影响)等原因,加上工程风险等因素,应该制定一个严谨的逐步放量计划。

样本

样本是实验的基础。

独立性、正态性

假设检验的前提是实验样本应用CLT(中心极限定理)满足正态分布或者对数正态分布,而CLT的前提是样本均值和方差存在且满足iid(独立同分布)。而实验的过程中样本很可能不独立。比如一个pv流量实验,以用户浏览pv为样本,因为实验很可能跨越多天,同一个用户会产生多条pv,很明显这个用户的浏览行为不独立。解决这类问题的方法可以称为方差修正:

  • 对用户进行聚合,取用户多天内的样本均值来做检验。但这样会加大计算量开销。
  • Jackknife(刀切法):Jackknife评估方差是一阶无偏估计。将用户hash到N个桶,每个桶作为一个独立样本,桶之间满足iid。再用delete-1桶-Jackknife评估方差。
  • 协方差矩阵计算方差。

异常数据处理

实验数据非常敏感,细微的差别都有可能扭转实验结论。因为刷量、黑产、脏数据等异常流量对实验而言是完全无用的噪音,尽量在分流前去掉这部分数据(一般难以识别),不然在数据分析阶段也应忽略掉这部分流量。

样本量

预估样本量的背景是流量饥饿,省出来的流量可以进行更多的实验。

分流

  • 流量独立平均。分流的基本原则是独立均匀。流量平均比较好做,一般按用户或者流量hash都能很好的平均流量。但流量独立很难实现(强业务相关),不独立的流量会导致关键指标的不稳定,也就很难选出无差异的实验组和对照组。最简单的解决方法是根据业务特点找出不独立的维度(比如地域),再根据用户+不独立维度进行hash分流。

  • 流量隔离。流量隔离的背景是流量饥饿,我们没有足够的流量去满足所有的实验。流量隔离的方法可以简称为分域分层。分域流量是真正意义上的流量隔离,不同域之间的实验没有重叠的流量。这更多是针对那些有相互影响或者跨组织架构的实验团队。流量分层的概念最早是google提出来的,基本思想是不同层的流量对其他层的影响是平均的,这就是层和层正交

检验方法

显著性检验的目的是去验证样本和总体的差异是机会变异还是分布不一致。显著性检验可以分为参数检验和非参数检验。

  • 参数检验,比如方差分析、T检验等。参数检验要求样本来源于正态总体(服从正态分布),且这些正态总体拥有相同的方差,在这样的基本假定(正态性假定和方差齐性假定)下检验各总体均值是否相等,属于参数检验。

  • 非参数检验,比如Wilcoxon检验、Mann-Whitney检验等。当数据不满足正态性和方差齐性假定时,参数检验可能会给出错误的答案,此时应采用基于秩的非参数检验。

实验系统最常用的检验方法是T检验。一般流程是提出假设、计算概率(p)、根据显著性水平(α)解释或者拒绝假设。关于T检验,这篇文章的解释比较有意思。

实验分析

实验结果分析也是实验平台重要的一环。实验维度、指标的可定制化分析统计,实验结果的可视化展示,实验结果的洞察以及对实验下一阶段的推进。这些都是实验分析平台的常见功能。

附录

对单样本t检验、双样本t检验以及配对t检验的理解 显著性检验 Trustworthy Online Controlled Experiments:Five Puzzling Outcomes Explained Trustworthy analysis of online A/B tests: Pitfalls,challenges and solutions


Comments