发明内容
基于此,本发明提供一种优化ABTest***分流的方法及***,能够有效解决进行多个实验时的截流与有偏问题。
本发明采用以下技术方案:
本发明一方面提供一种优化ABTest***分流的方法,包括:
将实验区进行分层,预设每层实验关联的用户群组;
获取用户的访问流量;
逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
作为一优选方式,所述用户群组的用户满足预设的若干个用户标签组合,每个用户标签包括若干个用户属性;
所述用户属性包括新/老客、地区、年龄、性别、订单数量、会员等级和/或最近一次订单时间的信息。
作为一优选方式,所述将实验区进行分层之前,还包括,划分独占实验区和并行实验区,预设独占实验区和并行实验区所占的流量比例;
所述将实验区进行分层具体为,将并行实验区进行分层;
所述获取用户的访问流量,逐层判断所述用户是否属于本层实验关联的用户群组,包括:
获取用户的访问流量,按所述流量比例确定所述用户的访问流量为独占实验区的访问流量或并行实验区的访问流量;
若为独占实验区的访问流量,则将所述用户的访问流量分配给独占实验区的对照组或测试组;若为并行实验区的访问流量,逐层判断所述用户是否属于本层实验关联的用户群组。
作为一优选方式,所述将所述用户的访问流量分配给本层实验的对照组或测试组,包括:
采用动态分流函数将所述用户的访问流量分配给本层中某一个或者多个实验的对照组或测试组。
作为一优选方式,所述将所述用户的访问流量分配给本层实验的对照组或测试组之后,还包括:
获取每层实验的对照组、测试组的数据信息,基于用户的访问流量统计每层实验的ABTest结果。
本发明另一方面提供一种优化ABTest***分流的***,包括:
实验分层模块,用于将实验区进行分层,预设每层实验关联的用户群组;
流量获取模块,用于获取用户的访问流量;
分流控制模块,用于逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
作为一优选方式,所述用户群组的用户满足预设的若干个用户标签,每个用户标签包括若干个用户属性;
所述用户属性包括新/老客、地区、年龄、性别、订单数量、会员等级和/或最近一次订单时间的信息。
作为一优选方式,还包括实验分区模块,用于划分独占实验区和并行实验区,预设独占实验区和并行实验区所占的流量比例;
所述实验分层模块,具体用于将并行实验区进行分层,预设每层实验关联的用户群组;
所述分流控制模块包括,
识别单元,用于按所述流量比例确定所述用户的访问流量为独占实验区的访问流量或并行实验区的访问流量;
分流单元,用于若为独占实验区的访问流量,则将所述用户的访问流量分配给独占实验区的对照组或测试组;若为并行实验区的访问流量,逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
作为一优选方式,所述将所述用户的访问流量分配给本层实验的对照组或测试组,包括:采用动态分流函数将所述用户的访问流量分配给本层中某一个或者多个实验的对照组或测试组。
作为一优选方式,还包括,实验统计模块,用于获取每层实验的对照组、测试组的数据信息,基于用户的访问流量统计每层实验的ABTest结果。
实施本发明的上述技术方案的有益效果包括:基于通用ABTest***能同时进行多个实验,且不同实验之间相互独立、并可获得各自所需的配置和用户访问流量,消除了传统单层ABTest***进行多个实验时存在的截流与有偏问题,保证了多个实验公平、快速的进行,有利于实时、准确地统计出ABTest实验结果。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种优化ABTest***分流的方法,适用于网页优化测试领域,如图1所示,该方法实现的基础ABTest***,可由ABT(分流模块)、UBD(分群模块)两大模块组成,根据实际需求调整两模块之间的关系以灵活配置和筛选不同实验所需的用户访问流量,本发明的ABTest***外部还依赖UserSystem和UTR等数据源,为其提供用户的属性字段;本发明实施例还提供相应的优化ABTest***分流的***。以下分别进行详细说明。
图2为本发明实施例优化ABTest***分流的方法的示意性流程图。如图2中所示,所述方法包含以下步骤S201至步骤S203,详细说明如下:
步骤S201,将实验区进行分层,预设每层实验关联的用户群组。
本实施例中将ABtest***设置为一个独立的***存在,可互不干扰的进行若干不同实验,且不同实验具有不同配置、可能针对不同用户访问流量。为了实现该目的,优选地,在纵向上的将实验区进行分层,层与层之间的实验相互不影响,每一层可包含多个实验,用户访问流量可无损无偏地穿过各层,且在每一层都会被重新打散以分配给不同实验。
优选地,本实施例中将ABtest***采用的底层数据源也设置为分层结构,如图3所示,自下而上可包括fields(用户属性)、tags(用户标签)、groups(用户群组)。其中,fields层数据表示最基础的用户属性,比如:新/老客、地区、年龄、性别、订单数量、会员等级和/或最近一次订单时间等的信息,该层数据来源于DW、UTR、和或usersystem等***数据源;tags层数据由一个或者多个fields层数据(多个fields层数据之间为“&”关系)构成,表示一种多维度的复杂用户属性,具体如:高价值男性会员(对应用户属性为:性别+会员等级);最上层的groups数据则可由一个或者多个tags层数据(多个tags层数据之间为“&”或者“|”关系)构成,表示符合一定条件的用户群组,例如:高价值男性会员或高价值女性会员。
进一步的,本发明实施例中ABtest***结构在上述分层数据结构的基础上再封装两层,组成的层级关系如图4所示。其中,一层实验test可包含一个或者多个测试点page(例如,一个页面实验需要测试两个模块的功能,ABtest***规则引擎需要一次产生若干个规则的分流),每个测试点page下面可对应0个或者1个用户群组groups(对应0个groups时,标明测试点page对应全用户访问流量)。
上述ABtest***能同时进行多个实验,比如针对购物网站来说,可包括华北仓母婴用户实验,对应的需要选取华北的母婴人群的访问流量进行实验,将这部分用户访问流量平均分为对照组和测试组,测试组的用户接受母婴规则的测试,对照组不变;或者可包括7天免邮效果实验,对应的需要选取7天内下过首单的用户的访问流量进行实验,将这部分用户的访问流量平均分为对照组和测试组,测试组的用户可以享受免邮,对照组的用户不变;除此之外,还可包括其它的实验并提取对应的用户访问流量进行实验。由于不同实验需要不同的配置和不同的流量来进行,因此,针对上述ABtest***结构,根据实际情况可分别设置每层实验关联的用户群组,或者分别设置每层中各实验关联的用户群组,以对进入ABtest***的用户访问流量进行分流以满足不同实验的需求。
步骤S202,获取用户的访问流量;
本实施例中,可通过网页中的各功能模块实时检测用户的点击操作指令,并根据页面跳转信息获取当前用户的访问流量;还可获取***记录的历史用户访问流量信息。在此基础上通过数据源获取到对应用户的属性信息(即fields层数据),将获取到用户的访问流量信息连同用户的属性信息作为分流的基础。
步骤S203,逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
本实施例中,由于ABTest***在纵向上的将实验区进行了分层,可使不同的实验在不同层进行,层与层之间相互不影响,每一层又可包含多个实验。因此,可在用户的访问流量穿过各层时,逐层判断所述用户是否属于本层实验关联的用户群组,若是,可根据动态分流函数分配策略将所述用户的访问流量分配给本层对应的实验(某一个或者多个实验)。实际上即是若所述用户属于本层某一个或者多个实验关联的用户群组,则将所述用户的访问流量分配给本层中某一个或者多个实验的对照组或测试组。以此类推,可实现用户的访问流量在每一层被重新打散以分配给各实验的效果。
需要说明的是,在分流函数方面,常用的分流变量有四种:user_idmods、cookiesmods、cookie-daymods、random。其中采用user_idmods作为分流变量无法适用于无user_id(用户ID)的用户访问流量,如新客、半新客等没有注册的用户访问流量;采用cookie-daymods作为分流变量相对来说更为动态,其引入了日期day这个变量,使得每天的分流结果会不同,同一天内分流结果稳定;而random作为分流变量相对来说就不稳定。
优选地,本实施例采用cookiesmods作为分流变量,对应的动态分配函数可为f(cookie,layer)%1000。该动态分配函数把layer(即ABTest***纵向上的分层)作为另一变量引入进来,由此保证了layer之间的实验是独立的,互不干扰。将page_id+uid/mid/mars_cid(其中uid/mid/mars_cid信息优选使用cookie,虽然一个cookie不能唯一定位一个用户,但对于连续的查询,这种方式可以提供给用户一致性的用户体验)组成一个string,作为hash函数(Murmur3Hash)的input。
作为另一优选实施方式,根据实际需要还可采用cookie-daymods作为分流变量,以加入日期作为分流因素(以天为单位),则可以达到单日内分流的稳定、不同天的用户访问流重新打散。
作为另一优选实施方式,要决定一个用户访问是否适用于一个实验,除了上述采用分流变量进行确定,还可设置另一个判断因素condition作为分流变量。这个判断因素condition引入了比“模”这种随机标识更为丰富的访问本身的特性,如访问来自的地域、性别、用户标签等等,以便于定制更为有针对性的ABTest实验。
关于上述分流变量、分配函数的特征、使用,本领域技术人员可通过查阅相应的教科书获知,并且动态分配函数的具体实现本领域技术人员可根据实际情况进行调整,本发明对此不做具体说明。
优选的,本发明实施例在纵向上对实验区进行分层,实质上是在纵向上对多个实验进行分层,采用的方式既可按照业务模块进行分层分流,也可按照代码层次进行分层分流,具体如图5、图6所示,还可根据具体实际情况进行其它形式的分层分流,本发明对此不作限定。结合上述分层分流的策略,可避免进行多层实验时的流量走偏问题。
需要说明的是,需要说明的是,本发明实施例中所提到的实验均指ABtest实验,因此每个实验均包含测试组和对照组的数据。在将所述用户的访问流量分配给本层实验的对照组或测试组之后,可通过获取每层实验的对照组、测试组的数据信息,基于用户的访问流量统计出每层实验的ABTest结果。本发明实施例ABtest***还设置有相应的日志模块,会将所有的分流请求的结果记录在日志中,便于实时和非实时的效果统计分析。
根据本发明的上述实施例,通过将实验区进行分层,结合底层的分层数据结构,相对与现有单层ABtest***结构,可一次进行多个不同ABtest实验,同时能动态组合分群和分流,甚至筛选特定流量以进行特定的实验,分流控制非常灵活,避免了流量饥渴问题;此外,在每层实验采用了动态分流函数进行分流,相比现有的对用户id取尾号、或是对用户id做一个hash后取模的分流策略,采用本发明的动态分流函数通过对hash函数做优化,同时根据需要还可对hash对象做变化(testid/day/condition),消除现有分流策略的散列程度不够且存在流量走偏的问题;其中,本实施例的hash函数优选Murmur3Hash,通过验证,其具有优良的稳定性。
图7为本发明另一实施例的优化ABTest***分流的方法的示意性流程图。与上述实施例的主要区别包括,还设有独占实验区,即将ABTest***实验空间进行横向和纵向划分,横向上流量可以进入独占实验区域或者是并行实验区域,独占实验区和并行区之间的流量是被隔离开的,流量比例可自行确定,在独占实验区域,实验可以独享流量且不受其他实验的干扰,用于精确测试单个实验的效果;并行实验区用于最大程度地支持更多实验的需要,属于粗测区,如上述实施例所述,可将并行实验区域纵向上根据需要划分为若干层,层与层之间相互不影响,每层的实验独立,流量可无损无偏地穿过多层,每一层可包含多个实验,流量在每一层都会被重新打散。
如图7中所示,本发明另一实施例的优化ABTest***分流的方法具体包含以下步骤:
步骤S701,划分独占实验区和并行实验区,预设独占实验区和并行实验区所占的流量比例;
如图8所示,本发明实施例中独占实验区和并行实验区横向排布,因此用户访问流量在横向上可按比例进入独占实验区域或者是并行实验区域,并且独占实验区和并行区之间的流量是被隔离开的,流量比例可自行确定,例如设定独占实验区和并行实验区所占的流量比例为1:4,即若进入ABTest***的总用户访问流量为100%,则其中20%进入独占实验区参与实验,其它80%进入并行实验区参与实验。
步骤S702,将并行实验区进行分层,预设每层实验关联的用户群组;
参考图5、图6和图8,本发明实施例中并行实验区可根据需要划分为若干层,每层又可包含多个实验,层与层的实验之间相互不影响,用户访问流量可以经过多层,且在每一层都会根据实验需求情况被重新打散。
优选地,本发明实施例中可通过预设的可视化管理平台进行独占实验区和并行实验区的配置,无需编码,只需鼠标点击几次便能实现***的分区和分层设置。对用户而言,能够很容易并且很快地建立一个实验,不需要写代码就可以创建一个实验。
步骤S703,获取用户的访问流量;
具体参考上述实施例所述,不做赘述。
步骤S704,按所述流量比例确定所述用户的访问流量为独占实验区的访问流量或并行实验区的访问流量;若为独占实验区的访问流量,执行步骤S705,若为并行实验区的访问流量,执行步骤S706;
步骤S705,将所述用户的访问流量分配给独占实验区的对照组或测试组;执行步骤S707。
独占实验区的实验可以独享流量且不受其他实验的干扰,在独占实验区域的实验设置有测试组和对照组,可实现精确测试单个ABtest实验的效果。
步骤S706,逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组;
通过并行实验区可最大程度地支持更多实验的进行,用户访问流量无损无偏地穿过各层,并行实验区的实验也设置有测试组和对照组,每层的不同实验可分得对应的用户访问流量进行测试,一般用于实现对精确度不敏感的ABtest实验。
步骤S707,获取独占实验区实验的对照组、测试组的数据信息,基于用户的访问流量统计独占实验区实验的ABTest结果,或者获取并行实验区各层实验的对照组、测试组的数据信息,基于用户的访问流量统计各层实验的ABTest结果。
通过上述分流方法和实验结果统计,用户可清晰的掌握网页优化的用户接受度,便于设计出用户体验更好的网站,进而提高用户访问量,为企业带来更大的经济效益。
需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
以下对可用于执行上述优化ABTest***分流的方法的本发明实施例的优化ABTest***分流的***进行说明。
图9为本发明一实施例的优化ABTest***分流的***的示意性结构图,为了便于说明,图中仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。如图9所示,本实施例的优化ABTest***分流的***包括:实验分层模块901、流量获取模块902和分流控制模块903,其中:
实验分层模块901,用于将实验区进行分层,预设每层实验关联的用户群组;
本实施例中,所述用户群组的用户满足预设的若干个用户标签,每个用户标签包括若干个用户属性;所述用户属性包括新/老客、地区、年龄、性别、订单数量、会员等级和/或最近一次订单时间的信息。
流量获取模块902,用于获取用户的访问流量;
分流控制模块903,用于逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
优选地,可采用动态分流函数将用户的访问流量分配给本层中某一个或者多个实验的对照组或测试组。
优选地,所述优化ABTest***分流的***还可包括实验统计模块,用于获取每层实验的对照组、测试组的数据信息,基于用户的访问流量统计每层实验的ABTest结果。
图10为本发明另一实施例的优化ABTest***分流的***的示意性结构图,为了便于说明,图中仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。如图10所示,本实施例的优化ABTest***分流的***包含:实验分层模块901、流量获取模块902和分流控制模块903,还包含实验分区模块904;其中,
所述实验分区模块904,用于划分独占实验区和并行实验区,预设独占实验区和并行实验区所占的流量比例;
所述实验分层模块901,用于将并行实验区进行分层,预设每层实验关联的用户群组;
所述流量获取模块902,用于获取用户的访问流量;
所述分流控制模块903具体包括识别单元31和分流单元32。其中,识别单元31,用于按所述流量比例确定所述用户的访问流量为独占实验区的访问流量或并行实验区的访问流量;分流单元32,用于若为独占实验区的访问流量,则将所述用户的访问流量分配给独占实验区的对照组或测试组;若为并行实验区的访问流量,逐层判断所述用户是否属于本层实验关联的用户群组,若是,将所述用户的访问流量分配给本层实验的对照组或测试组。
根据在上述图9至图10任一示例的优化ABTest***分流的***实施例,基于通用ABTest***能同时进行多个实验,且不同实验之间相互独立、并可获得各自所需的配置和用户访问流量,消除了传统单层ABTest***进行多个实验时存在的截流与有偏问题,保证了多个实验公平、快速的进行,有利于实时、准确地统计出ABTest实验结果。
需要说明的是,上述实施例中各模块/单元之间的信息交互、执行过程等内容,由于与本发明前述方法实施例基于同一构思,其带来的技术效果与本发明前述方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
此外,上述优化ABTest***分流的***的实施例中,各功能模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的功能模块完成,即将所述优化ABTest***分流的***的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
另外,在本发明前述各个实施例中的各功能模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。本领域普通技术人员可以理解本发明的任意实施例指定的方法的全部或部分步骤是可以通过程序来指令相关的硬件(个人计算机、服务器、或者网络设备等)来完成。该程序可以存储于一计算机可读存储介质中。该程序在执行时,可执行上述任意实施例指定的方法的全部或部分步骤。前述存储介质可以包括任何可以存储程序代码的介质,例如只读存储器(Read-OnlyMemory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。
以上为对本发明所提供的优化ABTest***分流的方法及***的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。