在互联网行业里面工作,能给我带来的一个乐趣就是“快”。天下武功,唯快不破。我们可以轻易地做到一天三次以上的产品更新速度,这是和许多传统行业的区别之一。如何利用好这个优势,在我眼里成为了产品发展的关键所在。

什么是A/B测试?

在快速上线的过程中,A/B测试是一个帮助我们快速试错的一种实验的方法。在统计学上,其实是Hypothesis Testing(假设测试)的一种形式。它能够帮我们了解我们对产品的改动,例如一个新的功能,是否能够吸引更多用户、让用户更加喜欢、产生更大的效益等。

A/B测试方法的基本概括就是,将用户分为两组,一组使用旧产品(或旧功能),一组使用新的。然后对比两个用户组,通过数据来分析,新的功能究竟是好是坏。没错,就跟小学的时候做的那些有控制组、实验组的自然科学实验一样一样的。

A/B测试的具体实施方式有很多种。桌面应用、网站、手机应用都有一些不同的A/B测试方法。本文中以网站的A/B测试为例来介绍。

我们以天猫的购物车为例,现在的天猫购物车中,结算按钮是在最下方的。这里我浏览器窗口的高度弄得比较小,所以看起来结算按钮和物品之间距离很近,但是实际上他们之间是有很大的距离的。

天猫购物车

现在我就可以提出一个想法,让我们试着把结算按钮移动到购物车的最上方,或许可以增加这个结算按钮的点击穿透率(CTR,Click Through Rate),从而可能提高转化率(CR,Conversion Rate)。

小知识&题外话:CTR简单说即点击该结算按钮的次数占该页面的总访问次数的百分比。例如,在2014年10月25日这一天,一共有200万人打开了这个购物车的页面,其中有20万人点击“结算”并成功到达了结算页面,那么这一天该按钮的CTR即为20万/200万乘以100%,即10%
CR,简单来说就是实际进行了消费活动的顾客占总访客数量的百分比。

天猫购物车新设计

现在,我们就有了两个版本的购物车。一个是现有版本,我们称之为A;一个是我新设计的版本,我们称之为B。我们的目标是想要知道,B的效果是否比A来得好。

那么,为了衡量效果,我们就要明确我们要观测的数据。这里,我们选择CTR和CR作为我们的观测数据。如果新设计上线后,这两个数据如果有上升,那么就代表着这个新的设计是一个很好的改进。

按用户(流量)划分控制组和实验组

接下来我们将用户划分成用户组和实验组。按用户分组也称作按流量分组。例如,我们可以让50%来到天猫的用户看到旧的设计,另外50%来到天猫的用户看到新的设计。

需要注意的是,我们必须尽量保证同一个用户在实验期间所能看到的是同一个设计。如果他刚才看到的结算按钮在下面,现在又看到结算按钮在上面了,那么对他而言一定是一件很困惑的事情。

请求分桶

小知识:划分组的过程由服务器的特定算法完成,这类算法我们一般称之为分桶算法(Bucketing Algorithm)。分桶也就是分组,是一个概念。对网站请求进行分桶的那部分程序叫做请求分桶(Request Bucketer)。

按页面划分控制组和实验组

有的时候,按照用户分组会存在一些问题。例如,如果你的实验是关于搜索引擎优化(SEO)的,那么可能就需要按照页面来划分控制组和实验组。例如,对于50%的购物车页面,无论谁访问,都是看到原来的设计;对于其他50%的购物车页面,则是新的设计。

SEO的基本目的就是让搜索引擎更好搜索到网站的页面,所以我们希望在实验期间每次对于同一个页面,搜索引擎看到的结果都是一致的。这样才可以对比两种不同设计的页面对于搜索引擎爬虫的效果孰优孰劣。

页面分桶

典型的SEO优化包括对标题的优化。例如,控制组中的页面标题是放入了商家的宝贝数量,例如“艾迪达斯旗舰店 - 1020件商品 - 上天猫,就购了!”;实验组中的页面标题是放入了商家上传的照片的数量,例如“艾迪达斯旗舰店 - 4558张照片 - 上天猫,就购了!”。别小看这样细小的变化,业界的确有不少成功的SEO优化就是由细小的变化所产生的。

按页面划分的细节问题

按页面划分的时候,如果仅仅划分为两个组,可能会出现一些问题。比如,如果对天猫商家页面进行按页面分组,如果在实验期间正好某商家自身发生了非常疯狂的大促,那么它所在的那一组的数据可能会直线飙升。这就可能引起我们的误解,我们可能以为这是由于实验本身造成的影响,于是造成了错误判断。

简单的解决方法就是划分为四个组,而不是两个组:

  • 控制组1
  • 控制组2
  • 实验组1
  • 实验组2

如果在实验组1里面的某个商家因为其自身原因,数据飙升,带动了整个实验组1的数据飙升。但是,实验组2的数据却没有什么很大的起色的话,那么说明是商家自身原因导致,而非新的功能带来的影响。

分组的比例分配

分组的比例分配不一定要是50%:50%,因为有些新功能是很可能造成不好的影响的,特别是试用一些新技术。在流量或者页面很多的情况下,哪怕是99%:1%的比例分配也是可以的,因为在后面还有采样的过程。对于淘宝,就算是1%的流量也是非常巨大的,所以样本总量(population)够大,对1%流量采样和50%的流量采样一般是没什么区别的。

互斥实验

有些实验之间是互斥的,可能会互相影响结果。例如,实验A的存在会让实验B的效果适得其反。

简单的方法就是开辟“泳道”(swimlane)。就好像在游泳的时候,你在你的泳道游你的蛙泳,我在我的泳道游我的自由泳,咱们互不侵犯。拿按页面划分来举例,我们可以让实验A所用的所有页面占网站总页面的20%,实验B占据20%,并且实验A和实验B所涉及的页面互不相交(即互斥)。

泳道划分

在A/B测试中要注意什么

不要过早下定论。一个实验上线后,不能急着在两三天内就下定论。统计学上有一个概念叫做statistical confidence,有专门的方法可以用于计算。只有当计算出来的数据达到一定阀值的时候,我们才可以(从统计学上)说这个新的设计是成功或者失败的。我们可以用现成的计算器来计算。

尽量减小偏差(bias)。例如,如果你对页面进行分组采用的方式是让卖拐杖的页面成为控制组、不卖拐杖的页面成为实验组,那这里面就会产生很大的偏差。因为一般买拐杖都是老年人在买,或者中年的子女在帮老人买,青少年不太可能去买。所以,两组之间就会产生很大的用户的性格的差异,对实验结果的影响就可能很不好了。

所有的产品都可以进行A/B测试

A/B测试允许我们快速演进我们的产品。我认为,除了互联网行业之外,其他行业也应该学习快速进行A/B测试的思想,创造更好的、质量更高的产品。

A/B测试的场景很多,不同的A/B测试方法每天都在帮我们创建更好的世界。建议大家可以上网搜索,并和身边的人一起讨论如何应用假设测试打造更好的产品。

推荐阅读