AB测试

8/2/2021 AB测试

# 为什么要进行AB测试?相比离线评估的优势是什么?

A/B测试又被成为”分流测试“或”分桶测试“,将用户随机分成实验组和对照组,对实验组的用户使用新模型,对对照组的用户使用旧模型,然后比较在线上评估指标上的差异。

相对于离线评估,线上AB测试无可替代

1)离线评估无法完全消除数据有偏现象的影响,因此得出的离线评估结果无法完全替代线上评估结果。

2)离线评估无法完全还原线上的工程环境。离线评估往往不考虑线上环境的延迟、数据丢失、标签数据缺失等情况,离线评估环境是理想状态下的,结果会有一定的失真。

3)线上系统的某些商业指标在离线评估下无法计算。离线评估一般针对模型本身进行评估,无法获得商业指标,比如离线评估关注的往往是AUC的改进,而线上评估可以全面了解该推荐系统模型带来的用户点击率、留存时长、PV/UV等变化,这些都需要AB测试进行评估。

# AB测试是如何设计分层和分流机制的?

AB测试分层和分流的机制有两个:

  • 1)层与层之间的流量”正交“
  • 2)同层之间的流量”互斥“

层与层之间的流量”正交“的具体含义为:层与层之间的独立实验的流量时正交的,即实验中每组的流量穿越该层后,都会被再次随机打散,且均匀分布在下层实验的每个实验组中。

同层之间的流量”互斥“的具体含义为:

1)如果同层之间进行多组A/B测试,那么不同测试之间的流量时不重叠的,即互斥的

2)一组AB测试中实验组和对照组的流量是不重叠的,是互斥的

拓展 -> 推荐系统衡量:ABtest 框架 (opens new window)

# 为什么需要用分层和分流机制保证流量高可用?

1)网站的流量是有限的 2)实验的对象是多层的或同一层内互不干扰的。 3)AB tests 的需求是大量的

# 请简要说明流量从上往下流过分流的过程。

1)规则详述:

域 1 和域 2 拆分流量,此时域 1 和域 2 是互斥的。

流量流过域 2 中的 B1 层、B2 层、B3 层时,B1 层、B2 层、B3 层的流量都是与域 2 的流量相等。此时 B1 层、B2 层、B3 层的流量是正交的。

扩展:流量流过域 2 中的 B1 层时,又把 B1 层分为了 B1-1 ,B1-2 ,B1-3 ,此时 B1-1 ,B1-2 ,B1-3 之间又是互斥的。

根据以上规则我们可以不断的在此模型中增加域、层,并且可以互相嵌套。这要与实际的业务相匹配,拆分过多的结构可能会把简单的业务复杂化,拆分过少的结构又可能不满足实际业务。

2)使用场景

例 1:B1 层、B2 层、B3 层可能分别为:UI 层、搜索结果层、广告结果层,这几层基本上是没有任何的业务关联度的,即使共用相同的流量 ( 流量正交 ) 也不会对实际的业务造成结果。但是如果不同层之间所进行的试验互相关联,如 B1 层是修改的一个页面的按钮文字颜色,B2 层是修改的按钮的颜色,当按钮文字颜色和按钮颜色一样时,该按钮已经是不可用的了。因此建议同一类型的实验在同一层内进行,并且需要考虑到不同实验互相的依赖。

例 2:域 1 的此种分流的意义在于,当我们做一个实验,并且希望其他任何实验都不能对我实验进行干扰,保证最后实验的可信度。