国内AB实验平台的实验分流设计大部分都基于Google在2010年的KDD上公布的分层实验框架。总体来说,实验平台设计实验分流的目标可以归纳为以下三点:

  • 支持更多的实验,多个实验可以并行扩展,同时又不影响每个实验的灵活性。

  • 更好地保证实验的准确性和合理性,确保分析的实验结果基于合理的用户分流。

  • 更快地创建实验,而且针对实验结果,能够快速获取数据分析实验结果。

在实验中,影响用户是否被实验命中的因素有流量分配、流量过滤规则和固定用户标签。下面介绍一下这三个因素:

1.流量分配

为了支持更多的实验,要建立多个实验分层,并将实验分层相关信息作为分流考量的因素从而达到正交的效果。每个实验层的流量分成1000份,每份代表0.1%的流量。

2.流量过滤规则

根据用户的请求参数设定规则,选中目标用户群体,对于符合条件的流量返回命中实验,否则返回不命中。请求参数是上游调用分流服务时传入的,需要保证函数中使用的信息上游都会在请求参数中被正确设置。后台会有语法检测和抽样部分线上请求参数进行运行测试。

3.固定用户标签

固定用户标签是一种可以仅让指定的用户群进入实验或实验组的方式,而且支持实时动态调整。需要指出的是,有些实验不需要固定标签的方式,可以选择不设置。

在AB实验平台中,以上的三种因素会影响实验分流,实验分流的过程和主要步骤如下:

第一步,根据用户设定流量占比,首先判断用户是不是落在流量区间内。若在则进入第二步,否则返回没有命中该实验。

第二步,判断实验是否配置了固定用户标签,若有配置则判断用户是否被打上了标签,否则进入第三步。若配置了固定用户标签并且匹配上,则进入第三步,否则返回没有命中该实验。

第三步,根据流量过滤规则判断用户是否被过滤,若被过滤,则返回没有命中该实验,否则返回相应分组信息。

在AB实验平台中,分流设计是最重要的一个模块,总结核心思想就是将参数划分到N个子集中,每个子集都关联一个实验层,每个请求会被N个实验处理,每个实验都只能修改自己层相关联的参数,并且同一个参数不能出现在多个层中。

如下图所示,简单的理解,把流量在纵向上进行了划分,流量请求从纵向判断先开始,域1和域2拆分用户流量,例如域1如果占30%的用户流量,域2则占70%的流量,域1和域2是互斥的。然后,再从横向上划分为B1、B2、B3等多个层。在同一个层中,不同的实验组是隔离区分开的。一个试验策略可以被多个层控制,每个层都可以有多个实验。对于域2中的B1、B2、B3层,占用的用户流量就是域2的用户流量,而当流量经过B1层时,会被B1-1、B1-2、B1-3拆分,并且B1-1、B1-2、B1-3是互斥的。流量在每个层都会被重新打散,然后重新分配。

实验分流设计

其中,域1这种分类方式更适用于做独立实验,不希望其他实验对这个实验造成任何影响和干扰,保证结果的可信度。B1、B2、B3这种分层上的实验基本是没有任何业务关联和相互影响的,即使它们相互之间有共有的流量也不会影响实验结果。对B1-1、B1-2、B1-3,可以设置一些互斥实验,例如B1-1可以放搜索列表页优化的实验,B1-2可以作为商品详情页的优化,这样经过的流量是互斥的,不会出现相同的用户同时看到两个实验的情况,保证了实验的效果。

关于分流条件,如果用户样本对实验流量有特殊的要求,在通过分配函数分配到一部分流量后,部分实验可以通过特定条件分配特定的流量给实验,以达到更高效利用流量的目的。典型的条件如城市、版本、浏览器等,分配条件一般直接在实验的配置中指定。

最后,以脑图的形式对上面的介绍做一个总结,欢迎大家留言交流探讨。

AB实验平台分流总结

点赞(9) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部