观点 | 为什么在数据驱动的路上,AB实验值得信赖?(上)

技术

在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石。

picture.image

文 | 松宝 来自 字节跳动数据平台团队增长平台

在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石。

数据 => 洞察 => 优化,循环往复寻找最优解,寻找增长的方法。

AB中有句经典的名言:大胆假设,小心求证。

本系列连载会从数据驱动、AB实验基本架构、指标选取与数据分析等角度切入,第一篇着重介绍AB实验与数据驱动的条件和AB实验的基本架构。

A/B Test

AB实验与数据驱动

AB实验阶段对应数据驱动的不同阶段,从最基本的设计执行分析阶段到绝大多数改动需要AB验证,从简单到复杂,从少量实验到大规模实验,正好反应的数据驱动从「爬,走,跑,飞」的四个阶段,关系是层层递进的。

picture.image

1、设计执行分析阶段

设计执行分析阶段主要是:数据检测设置和数据科学能力搭建。在AB实验上进行多次的实验,从实验的设计,指标的定义,实验的开启,实验结果的分析,并且找到成功的一些实验案例有助于我们进入到下一阶段。

2、标准化指标阶段

标准化指标阶段主要是:运行少量实验到定义标准指标再到开启更多实验。AB实验开始运行更加复杂的case来持续验证数据的可行性,并且通过运行AA实验来验证平台潜在的问题,同时能够进行样本比率偏差检测。

3、大面积实验AB实验阶段

从上一个阶段的标准化指标,已经可以运行大量实验,并且各种指标也逐渐相对成熟,每次实验进行多个指标的权衡,然后在一个应用上利用AB实验对绝大多数的新功能和改动做实验。

4、绝大多数改动需要AB验证阶段

几乎所有的改动都需要经过AB实验的验证,可以在没有数据科学家的辅助下,可以对大多数的实验进行独立的分析和运作。同时通过对过去实验的分析,AB实验的有效性和最佳实践也能得到不断的更新。

A/B Test

数据驱动的条件

1、实验标准化

数据决策肯定是一套标准化的东西来规范,实验标准化也是AB数据驱动的必备条件。

那什么是AB实验的标准化呢?

picture.image

AB实验需要注意 辛普森悖论,幸存者偏差,选择偏差 等,注意事项都是来源于对撞因子, 简单来说就是「是指同时被两个以上的变数影响的变数」 ,具体可以在Google深入了解一下。

2、实验结果可信性

有数字容易,让人信赖的数字需要下功夫。开启实验容易,实验报告有数字很容易,这些数字的可信度,这些数字让人信赖更重要,需要花费更长的时间。

大量实验中可能只有很小一部分实验,例如微软大约30%的结果是正向积极的,最终可以发布到整个应用上。

  • 举个例子:如果我抛起三枚硬币,落地分别是正正反,那么我可以说抛硬币正面朝上的概率是三分之二吗?

picture.image

概率和频率并不是一个东西,同理,少数几次AB实验的结果也不能证明版本A和版本B的优劣。

我们需要统计学上的严格论证和计算,来判断一个实验结果是否显著,是否可信。

3、如何衡量好的想法

对于任何一个想法我们很难去衡量它的好坏,大胆假设小心求证。短期目标可能会与更关键的长期目标发生冲突。

  • 举个例子:一家超市突然提高价格,可能会在短期带来更高利润。但长远看,如果更多的顾客改从竞争对手那里购买商品,那么这家店的收入就会减少。

新奇效应如何避免?

对于用户有感知的A/B Test,如UI改版、新的运营方案、新功能上线等,实验组做的任何改变都可能引起用户的注意,好奇心驱使他们先体验一番,从而导致A/B Test中实验组效果一开始优于对照组,p-value极小,实验效果非常显著。但是一段时间过去后,用户对于新的改版不再敏感,实验组效果回落,显著性可能会下降,最后趋于稳定。 足够的样本量能保证一个合理的实验周期 ,可以使用我们的流量计算器中计算流量和实验周期,从而避免这种新奇效应的影响。

A/B Test

AB实验基本架构

01 - 流量分割

流量分割的方式:分流和分层。

每个独立实验为一层,层与层之间流量是正交的(简单来讲,就是一份流量穿越每层实验时,都会再次随机打散,且随机效果离散)。实验在同一层拆分流量,不论如何拆分,不同组的流量是不重叠的。

picture.image

分流

分流是指我们直接将整体用户切割为几块,用户只能在一个实验中。但是这种情况很不现实,因为如果我要同时上线多个实验,流量不够切怎么办?那为了达到最小样本量,我们就得延长实验周期,要是做一个实验,要几个月。

简单来说:分流是指对流量进行整体切割,实验之间互斥。

  • 目的:为了获取纯净的分区,不会互相影响。
  • 缺点:浪费流量,导致流量不够。

分层

就是将同一批用户,不停的随机后,处于不同的桶。也就是说,一个用户会处于多个实验中,只要实验之间不相互影响,我们就能够无限次的切割用户。这样在保证了每个实验都能用全流量切割的同时,也保证了实验数据是置信的。

简单来说:对整体流量分流分层。

  • 目的:同一个用户在不同的实验组,相互不会影响。
  • 缺点:不同层之间的hash值尽量不要重合。

02 - 如何看待随机单元?

什么是随机单元呢? 简单来说,随机单元就是AB实验需要达到随机的最小单元。 一个web网站中,最小单元可能是页面级别,可能是会话级别,或者是用户级别。

  • 举个例子:我们选择页面级别的随机单元,AB实验针对某一个页面,用户每一次打开页面的时候决定把该用户导向某一个实验组。

最简单的情况就是:随机单元和分析单元是一致的。我们大多数情况也是将随机单元和分析单元采用用户级别。两种单元不一致可能使得实验分析变得更加复杂。

03 - 随机算法

首先什么是随机数? 不确定的数。 大多数随 机算法使用的是伪数字生成 器。

那什么是伪数字生成器?一个生产数字序列的算法,特征近似随机数序列的特性。伪随机数生成器通常接受一个随机种子( seed) 用来初始化生成器的初始状态。

按照密码学来将「随机」分为三种级别:

  1. 伪随机 (PRNG)
  2. 密码学安全的伪随机 (CSPRNG)
  3. 真随机 (TRNG)

picture.image

伪随机PRNG生成的序列并不是真随机。它完全是由一个初始值决定,初始值称为随机种子(seed)。 接近于真随机序列可以通过硬件随机数生成器生成。但是伪随机数生成器因为其生成速度和可再现的优势,实践中也很重要。

寻找一个合适的随机算法是非常重要的。

一个实验的每一个variant(实验组或对照组)都具有关于users的一个随机抽样。随机算法必须有一些特征。特征如下:

  • 特征(1):用户必须等可能看到一个实验的每个variant,对于任意的variant必须是无偏的。
  • 特征(2):同一个实验中,对于单个user重复分配必须是一致的,对于该用户每次后续访问中,该user必须被分配到相同的variant上。
  • 特征(3):当多个实验同时并行运行的时候,实验之间必须没有关联关系。也就是在一个实验中,一个user被分配到一个variant,对于被分配给其他任意实验的一个variant,在概率上没有影响。
  • 特征(4):算法必须支持单调递增的,也就是说,如果没有对那些已经被分配给实验组的用户分配进行变更,用户看到一个实验组的百分比可能会缓慢增加的。

使用caching的伪随机

伪随机数的随机性可以用它的统计特性来衡量,主要特征是每个数出现的可能性和它出现时与数序中其他数的关系。

伪随机数的优点是它的计算比较简单,而且只使用少数的数值很难推断出它的计算算法。

使用caching缓存,可以使用标准伪数字生成器作为随机算法,一个好的伪数字生成器会满足特征(1)和特征(3)。

对于特征(2),需要引入状态,用户的分配必须被缓存,或者缓存完成可以是数据库存储,便于下次再次访问应用。

Hash和分区

不同于伪随机方法,hash和分区是无状态的,每一个user都会被分配一个唯一的user_unique_id,使用ssid和webid(或者其他)来维持。user_unique_id会和实验的id进行映射绑定,接着user_unique_id和实验id使用hash函数来获得一个整数,整数的范围是均匀分布的。

hash函数的选取需要注意⚠️,如果hash函数有漏斗(那些相邻key的实例会映射到相同的hash code),会造成均匀分布的冲突,如果hash函数有特性(某一个key变动会产生一个hash code 上可预测的变动),会造成实验之间会发生相关。

「加密hash函数MD5」生成的数据在实验间没有相关性。其实还可以关注「大质数素数hash算法」等更加精密优良的算法。

04 - 实验灰度发布

实验发布是一个容易忽略但又非常重要的步骤,从比较小的流量慢慢发布到相对比较大的流量,直到最后全站发布。 这个过程是需要自动化和风险控制相结合。

我们经常的做法就是:

  • 实验发布之后,还可以预留一些流量来衡量实验的长期效果。
  • 还可以重复发布某一个实验,看实验的结果是否可以保持。

在连载下篇中,重点介绍AB实验的指标选取与数据分析。

更多前端实践也可以关注「松宝写代码」,松宝写的不止是代码!

picture.image

点击 阅读原文

了解

火山引 擎A/B测试

产品介绍

火山引擎A/B测试

A/B测试,摆脱猜测,用科学的实验衡量决策收益,打造更好的产品,让业务的每一步都通往增长。 后台回复数字“8”了解产品

- End -

欢迎关注字节跳动数据平台官方公众号

21
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论