AB测试从应用到搭建实战

本文详细讲解: 一、AB测试应用:1、流量正交与互斥 2、实验数据漏斗计算方法 3、实验结果假设检验。 二、AB测试系统搭建:1、应用、实验、策略增删改查 2、与客户端、服务端、埋点的接口 3、数据结果可视化 4、正交与互斥的实现

增长团队有三宝:埋点、漏斗、AB测

一、什么是AB测试?

A/B 测试是一种产品优化方法;为同一个优化目标制定两个方案,让同一部分用户中的一部分用户命中 A 方案,同时另一部分用户命中 B 方案,统计并比较不同方案的点击率、转化率等数据指标,通过不同方案的数据表现,在确定数据表现通过假设检验后,决定最终方案的实验方法。

二、AB测试的意义?

AB测试是支持数据决策最有力的工具

江苏快3开奖结果 1、数据收集

2、数据分析

3、问题方案

4、方案验证

江苏快3开奖结果 5、发布上线

方案验证即为AB测试过程

三、AB测试系统搭建

1、系统架构

如图所示,主要由4部分组成

1)、静态缓存服务器

2)、业务Web server 里面的ClientLib

3)、实验配置平台

4)、数据中心的计算处理链路

2、流量分配规则:正交与互斥

正交实验:

每个独立实验为一层,一份流量穿越每层实验时,都会随机打散再重组,保证每层流量数量相同。

互斥实验:

实验在同一层拆分流量,不论如何拆分,不同组的流量是不重叠的。

AB测试实验中

两个或多个实验内容相互影响则选择互斥方法分配流量,

两个或多个实验内容不会相互影响则选择正交方法分配流量

江苏快3开奖结果 正交:可以节省流量

江苏快3开奖结果 互斥:可以让耦合的实验完美剥离开来不互相影响

举一个例子来理解:

某K12教育App想做两个实验,分别为:

1、验证按钮背景颜色对转化率的影响;策略1:橘黄色 策略2:绿色

2、验证报名文案对转化率的影响;策略1:选择时间和老师;策略2:立即抢购

每个实验都想用100%的流量去做实验

如果我们使用正交分配流量的方式会出现什么情况呢?

也就是流量同时命中实验一与实验二

最后展现在用户面前的就是如下图四种情况

上线后与我们想要的不太一样,多了一种绿色背景的立即抢购

且两两无法对比

这种情况我们是无法统计出准确的数据结果的

因为已经违背了单一变量原则。

江苏快3开奖结果 这种最好使用互斥来分配流量,一部分用户命中实验一、另一部分用户命中实验二。

为什么会出现这种情况呢?

我们看,因为我们使用的正交的流量分配方式,就出现了这样的组合方式,所以这两个实验更适合互斥的流量分配方式。

3、AB测试系统实验架构

AB测试系统实验架构包括应用层-实验层-策略层;


江苏快3开奖结果 (1)应用层:

应用层级别最好,应用层与应用层之间的流量是正交的


(2)实验层:

实验层是应用层子层,实验层与实验层之间的流量是互斥的


(3)策略层:

策略层是实验层子层,一个实验可以有多个策略,多个策略之间流量相互不影响。

江苏快3开奖结果 举个例子:应用:App客户端;实验:购买按钮颜色;策略:红色、橘色

4、管理后台

管理后台主要包括:应用、实验、策略的增删改查以及AB测试数据效果可视化;当然还有一些登录、权限等边缘内容。

每创建一个应用、实验、策略会分别生成一个id。最后串联组合成一个abtestid。这里单独的应用、实验、策略id都是自增的。

江苏快3开奖结果 保证每一个应用、实验、策略id都是唯一的。只有这样才会保证流量分发不会出现错误,保证实验数据结果准确性。

删除功能跟其他功能不太一样,假如删除一个应用时,要保证该应用下面没有实验,如果有实验则不可被删除。

实验也是同样的道理,如果实验下有策略则不可被删除。但是策略是可直接被删除的。避免误操作删除线上增在实验的AB测试


编辑功能也不太一样,实验与策略的流量分配是不允许进行编辑的,因为一个实验创建好后,流量分配就确定好了,再次编辑后会影响用户命中的策略。之后的流量分配会细讲

权限:每个应用实验创建者 只能编辑自己创建的应用与实验与查看其他人创建的应用与实验

应用列表:江苏快3开奖结果

应用与应用之间的流量关系是正交的

应用详情页面,一个应用下的全部实验:一个应用下的实验与实验之间的流量关系是互斥的。

实验效果可视化

创建实验

1、实验条件

AB测试系统可以对一些条件的用户进行限制,城市、年级、新老用户、版本号、平台

这个功能主要是针对满足这样实验条件的用户进行分流,如不满足这些条件则不分流,直接命中默认策略

默认策略是我们在创建策略时勾选的

如果用户不满足条件命中默认策略,这些用户产生的数据是不参与计算的。也就不会影响实验结果

(1)、城市、年级、新老用户

这几个条件很好理解,就是指用户所在城市、年级、新老。但需要用户登录才能拿到这样的信息。

如果设定了实验条件,用户处于非登录态怎么办呢?

非登录态的用户我们认为他是不满足实验条件的,所以会走默认策略,这样会避免一些不满足实验条件的用户却命中实验的可能

但为了保证同一个用户在登入登出看到的页面是相同的,所以这部分人即使登录后也会走默认策略。

但不是全部未登录用户都会这样

我们判断当前时间与未登录用户刚登录的时间点的差值是否大于两天

如果大于两天我们会让他命中实验,进行分流

这样也是为了保证 每天下载的大量用户也会命中AB测试的情况

江苏快3开奖结果 达到一个平衡的状态

(2)、适用版本

这里的版本是针对客户端的AB测试提供的功能。

比如 Ios 在1。0。1 版本,Android在1。0。2版本 上线一个AB测试实验。

江苏快3开奖结果 如果不绑定版本号会出现什么情况?

因为版本发布,除强制升级外,用户还处于老版本

对于老版本的用户也会命中实验,但是这些用户并没有看到不同的策略

就会出现,AB测试系统分给用户A策略,但是用户看到的是B策略

最终影响数据准确性。

版本号设置会向上兼容,也就是说只有此版本号,或者高于此版本的用户才能命中实验


(3)、平台

平台分为3种,分别为:IOS客户端、Android客户端、JS(H5)

分别针对不同的平台进行的AB测试。

这里不说Ios和Android,只说一下H5

因为H5的埋点上报与客户端不一样,H5 的分流的唯一ID也与客户端不一样

江苏快3开奖结果 客户端的分流使用的ID是设备ID,H5则是cookieID

五、分流引擎

分流策略:简单的理解就是哪些用户会命中策略A,哪些用户会命中策略B。

在说分流策略之前先举个例子,配合例子更好理解

假设报名按钮颜色实验分50%流量,策略“红色”按钮分流量40%,策略“蓝色”按钮分流量60%

例如取模10000

那报名按钮颜色实验的数字区间为0-5000;10000*50%

江苏快3开奖结果 策略“红色”按钮数字区间为0-2000;5000*40%

策略“蓝色”按钮数字区间为2000-5000;2000+5000*60%

现在我们对用户唯一id,应用id进行哈希。哈希后得到一个数字,这个数字落到哪个数字区间就将用户分到哪个策略中去

经测试10w次分流,8s,流量diff在1%以内

每个应用分到的用户正交,不相互影响

如图:

六、埋点对接

为什么AB测试系统要与埋点平台结合?埋点对于AB测试系统有两个支持的地方。

1、对于AB两个策略上线后,我们需要跟踪两个策略的数据效果

这两个策略的效果数据来源就是页面的浏览与按钮的点击两个埋点事件来提供数据支持的。

比如客户端需要对课程详情页的报名按钮样式进行AB测试实验。

数据监控的时候我们就需要统计进入详情页的人数与报名按钮点击uv进行统计

以报名按钮uv/详情页uv此数值来统计报名按钮样式的AB两种策略效果

那么在创建实验时就需要确定统计指标,确定指标后就需要确定实验所需要哪些埋点指标统计

这里就需要详情页uv以及报名按钮uv两个埋点事件

当然还有更负责的数据指标,但都可以通过埋点数据上报来进行统计。

统计指标配置如图:

2、埋点abtestid上报

在我们需要统计指标时,每次配置一个AB测试实验,都要需要客户端进行埋点上报abtestid,以此来判断用户命中了哪个实验,

每创建一个应用、实验、策略会分别生成一个id。最后串联组合成一个abtestid。这里单独的应用、实验、策略id都是自增的。

这样每配置一个实验都需要客户端埋点之后进行发版。一个月一版本的迭代,这样对一个ab测试实验来说

效率太低。所以就有如下的解决方案,保证abtestid上报不需要依赖客户端发版。

在配置一个实验后,服务端将abtestid+event_id(埋点事件id)传给客户端,客户端以此来判断用户进来命中哪个实验,是否命中了

那个埋点事件,如果都命中则该用户的埋点事件上报会多加一个业务字段abtestid。这样就完美解决ab测试效果埋点统计的问题,不再依赖客户端发版。提升AB测试配置效率。

七、对接方式

AB测试系统和App服务端或H5服务端对接

分别有两个接口:一个是策略请求接口、一个是埋点接口

1、埋点接口

AB测试系统将接口参数传给服务端,服务端将参数传给客户端和H5前端

客户端或者前端遍历这些 eventids(埋点事件id)如果有用户命中这些埋点事件则上百 abtestid key及值

2、策略接口

例如实验是客户端报名按钮“红色”“蓝色”

当流量进入到客户端后, 客户端向服务端询问:我这有俩颜色的按钮,我要展示哪个颜色的按钮啊?

服务端:我暂时也不知道,我帮你问问AB测试服务。

服务端问AB测试服务:客户端来流量了,有两个颜色的按钮,需要展示哪个颜色的按钮啊?

AB测试服务:展示“红色”按钮

江苏快3开奖结果 服务端:我知道了,并告诉客户端:展示“红色”按钮

江苏快3开奖结果 客户端:我知道了,客户端展示“红色”报名按钮

八、计算方式

1、漏斗维护

我们通过统计uv的方式来计算转化率

在我们创建实验时会维护这样的一个数据效果漏斗

通过输入事件id来确定漏斗,并维护每一个漏斗层级

2、漏斗计算

假设一个漏斗中包含了 A、B、C、D、E 五个步骤,选择的时间范围是 2015 年 1 月 1 日到 2015 年 1 月 3 日,窗口期是 1 天,那么,如果用户在2015年1月1日到2015年1月3日触发了步骤 A,并且在步骤 A 发生的 1 天内,依顺序依次触发了 B、C、D、E,则视作该用户完成了一次成功的漏斗转化。

在这个过程中,如果穿插了一些其它的步骤或者行为,例如在满足时间限制的情况下,用户的行为顺序是 A > X > B > X > C > D > X > E,X 代表任意一个事件,则该用户依然视作完成了一次成功的漏斗转化。

江苏快3开奖结果 如果该用户在这个事件限制范围内,依次触发了 A > B > C > E,则该用户没有完成该漏斗的转化,并且会被记作步骤 C 的流失用户。

考虑一个更复杂的情况,如果一个用户在所选时段内有多个事件都符合某个转化步骤的定义,那么会优先选择更靠近最终转化目标的事件作为转化事件,并在第一次达到最终转化目标时停止转化的计算。假设一个漏斗的步骤定义是:访问江苏快3开奖结果、选择支付方式、支付成功,那么不同用户的行为序列及实际转化步骤(标红部分)见如下例子:

例 1:访问江苏快3开奖结果 -> 选择支付方式(支付宝) -> 选择支付方式(微信)-> 支付成功。

例 2:访问江苏快3开奖结果 -> 选择支付方式(支付宝) -> 访问江苏快3开奖结果 -> 选择支付方式(微信)-> 支付成功。

例 3:访问江苏快3开奖结果 -> 选择支付方式(支付宝) -> 访问江苏快3开奖结果 -> 选择支付方式(微信)-> 支付成功 -> 选择支付方式(微信)-> 支付成功。

九、AB测试效果分析


1、我们为什么要做假设检验

让我们一起认识一下辛普森悖论

江苏快3开奖结果 当人们尝试探究两种(比如新生录取率与性别)是否具有相关性的时候,会分别对之进行分组研究。然而,在分组比较中都占优势的一方,在总评中有时反而是失势的一方。

举个例子

看上去无论是对于新用户还是老用户,实验组都要比对照组好。但是总计而言,对照组要比实验组效果好。

这个AB测试的结论是有巨大问题的,无论是从细分结果看,还是从总计结果看,都无法真正判断哪个策略好。

那么,问题出在哪里呢?

这个AB测试的两个实验组的用户选取有问题,都不具有足够的代表性。

设计实验的产品经理人为的制造了两个试验组群体本身不相似

实验组的用户组成为 新用户:87 老用户:263

对照组的用户组成为 新用户:270 老用户:80

数据上可以看出新老用户对实验的表现有明显差异

江苏快3开奖结果 所以因为一下两点导致了实验结果诡异

  • 实验用户的选取有明显差异(非抽样选取用户)
  • 用户的差异对实验结果有明显影响

为了排除这样的差异导致的数据结果不可信,所以我们要进行假设检验

2、什么是假设检验

假设检验是中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组的模型进行检验的科学。[1]一旦能估计未知,就会希望根据结果对未知的真正参数值做出适当的推论。

3、如何进行假设检验?

江苏快3开奖结果 1、根据数据计算Z值

2、根据Z值与P值对照表找到此Z值对应的P值区间

江苏快3开奖结果 3、找到P值与0。05进行比较

十、AB测试实验需要满足以下两个特性

1、同时性:

两个策略是同时投入使用的,而不是AB两种策略分先后上线,这样会有其他因素影响。

2、同质性:

两个策略对应的使用群体需要保证尽量一致。

2条评论 添加新讨论

08月30日评论

学习了

回复
08月29日评论

vx:13126701193

回复
登录后参与讨论
Ctrl+Enter 发表