互斥域,也称互斥组、互斥层、实验层。
互斥实验,即处在同一互斥域中的实验。互斥实验之间流量是互斥的,即互斥域中的所有实验都不会共享用户:如果一个用户命中了互斥域中的实验1,就不会命中该互斥域中的其他实验。
基本原则:
互斥域技术是为了让多个实验能够并行不相互干扰,且都获得足够的流量而研发的流量分层技术。互斥域技术可以将总体流量“复制”无数遍,形成无数个互斥域,让总体流量可以被无数次复用,从而提高实验效率。
上文提到,不同互斥域之间的流量是正交的。如何理解流量“正交”?正交有什么用?
举个例子。假设现在有2个实验。实验A(实验组标记为A1,对照组标记为A2)分布于互斥域1,取用100%的流量;实验B(实验组标记为B1,对照组标记为B2)分布于互斥域2,也取用100%的流量。(要注意,互斥域1和互斥域2实际上是同一批流量,互斥域2复制了互斥域1的流量)
如果不对这两互斥域做处理,让A1组和B1组获得的流量相同,A2组与B2组获得的流量相同(如下图)。这就意味着,一个用户被A1组命中时,同时也会被B1组命中。那么,两个实验的实验策略,均对该用户进行了展示。
经过一段时间的实验,我们发现实验组B1的数据涨了。此时我们需要面临一个问题:B1组的指标涨了,真的是B1的策略生效了吗?有没有可能是受到A1组策略的影响呢?
以目前流量的分配情况来看,我们无法回答这个问题。B1组指标涨了,可能是受A1组影响,也可能不是。那么我们应该怎么分配流量,才能确定B1组指标上涨,跟A1组没关系呢?
答案就是让流量“正交”。
如果把A1组的流量分成2半,一份放进B1组,一份放进B2组;再把A2组的流量也分成2半,一份放进B1组,一份放进B2组。那么两个实验对于流量的调用就会如下图所示。此时实验A和实验B之间,就形成了流量“正交”。
可以发现,因为A1组的一半流量在B1中,另一半流量在B2中,因此即使A1的策略会对实验B产生影响,那么这种影响也均匀的分布在了实验B的两个组之中。在这种情况下,如果B1组的指标上涨了,那么就可以排除B1是受A1影响才形成上涨。这就是流量正交存在的意义。
火山引擎A/B测试的分流服务通过两次运算「哈希函数」,使得不同互斥域的流量之间呈正交关系。在流量正交的情况下,不同互斥域中的实验,其相互之间的影响被均匀打散,使得实验的指标结果更加值得信赖。
可操作内容如下:
在流量层列表页,单击“新建流量层”,在弹出的侧边栏页面中配置流量层参数即可创建流量层。
在互斥域列表页,点击“新建互斥域”,即可弹出互斥域创建页面。如下图:
注意
选择绑定已创建好的流量层时,不支持绑定已关联实验的流量层,避免直接影响已有实验。
以编程实验为例,在创建实验的第二步「设置生效策略」,可在实验层选择已经创建的流量层,如果设施流量互斥,则可选择已创建好的互斥域。如下图:
为实验添加互斥域,基本规则如下:
为实验移除互斥域,基本规则如下:
权限相关:所有互斥域全部为公共互斥域,当前集团当前应用内的任何用户都拥有“新建互斥域、查看互斥域、修改互斥域、下线互斥域”的权限。