AB test详解

AB test用于推荐系统在线测试

AB test一个总的目的和意图是,判断哪种UI或rerank策略更优,通过事实的依据判断哪种方案更符合用户的习惯和需求。

一、背景介绍

无法衡量就无法优化,对于互联网产品而言,不仅是推荐系统,整个app系统的更新迭代必然需要建立一套度衡量,来把控整个流程优化的方向,而ABtest系统就是一个很好的进行变量控制和优化方向选取的工具,循环:衡量-发现-迭代-验证。所谓精细化迭代是一种建立在数据基础上的思维方式——用较少的成本获得较好的成果。无数据,不优化,线上分流实验是推荐算法优化的必由之路。并且ABtest不仅是推荐迭代的利器,它还可服务于所有需要足部完善的产品迭代。或许有人会有疑惑,为什么需要AB test,为什么不前后进行实验比较,因为:同时期测试的AB test非常有必要的原因是不同时间的测试无法说明b比a好,因为通常时间也是一个变量,比如电商的双十一的商品CTR(或者是CVR)会比平时明显增加。

在网络分析中,AB test(桶测试或分流测试)是一个随机实验,通常有两个变体,A和B。利用控制变量法保持单一变量的前提下,将A、B数据进行对比,得出实验结论。AB test是一种科学的利用数据证明方案可行性的手段,一般在网站中广泛使用。通过AB test系统对迭代方案进行实验,并结合数据进行分析,反向再验证和驱动方案,是一个发现问题,提出假设,印证猜想,不段优化的过程。合适的推荐方法是要经过不断地实验去验证,验证地过程也是在校验数据,从何优化推荐系统策略,最终提升用户新增和留存。

三、实验管理平台

1、实验报告

实验报告需要对脏数据进行过滤,并做一定的效果平滑,效果波动警告。异常值会产生明显的偏差,足以导致错误的统计结果。

2、分流&分层策略

如果数据不进行分层、分流可能会导致流量饥饿,即实验一在进行中占用了全站的80%的流量,实验二只有20%,此时得出的实验结果必定存在很大的统计误差。因此良好的分层,分流规则可以充分利用网站的流量。常见的分流策略有:

  • Random-随机分流,可用于可变结果集
  • Partition By User-按用户切分,桶一用户永远看到同样的结果
  • Partition By Category-按分类切分,针对不同分类算法测试算法针对性。

通常网站会利用分流和分层的机制保证本站的流量高且可用,原因如下:

  • 网站的流量有限
  • 实验的对象是多层的或同一层互不干扰。多层:例如网站不仅有UI层(页面),也有算法层等;同一层内互不干扰:例如网站的推荐位有多位(首页推荐位,商品详情页推荐位)
  • AB test的需求是大量的(这个不太清楚)

三、AB test流程

运行AB test实验的正确方法是遵循科学过程,它包括以下步骤:

  • 研究您的网站数据:使用Google Analytic(分析),百度分析等网站分析工具,并在转化渠道中找到问题。例如可以识别跳出率最高的页面。
  • 观察用户行为:利用用户行为分析工具等,并查找组织访问者转换的内容。例如:”CTA按钮在主页上不突出“
  • 构建假设:根据访问者行为分析工具的见解

1、规则一:正交、互斥
  • 正交:

    例如:我们有100个乒乓球,随机拿出来50个染成蓝色,50个染成红色,现将100个乒乓球重新放回袋子中并摇匀,随机拿出50个球出来,那么这50个球红蓝各50合格(不是那么恰当)。

    所以正交实验:每个独立实验为一层,层与层之间是正交的,流量穿越每层实验时,都会被随机打乱,且随机结果离散。

  • 互斥:

    例如:我们有 100 个兵乓球,每 25 个为一组,分别染成蓝、白、橘、绿。若 X 实验拿的是蓝色、白色;则 Y 实验只能拿橘色和绿色,我们说 X 实验的和 Y 实验是互斥的。

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

2、规则二、分流模型:

规则详述:

域 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 之间又是互斥的。

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

3、规则使用场景:

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

例2:域1的此种分流的意义在于:当我们做一个实验,并且希望其他任何实验都不会对我产生干扰,保证最后实验就结果的可信性。

四、AB test中的技术

1、为什么灵敏度(p-value)很重要?

p-value即概率,反映某一时间发生的可能性,主要在abtest中说明实验提升的显著性,并且往往与假设检验相挂钩。同统计学根据显著性检验的方法所得到的P值,一般以p<0.05为有统计学差异,P<0.01为有显著统计学差异,P<0.001有及其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于0.05,0.01,0.001,实际上,P值也不能赋予数据任何重要性,只能说某事件发生的几率。在实践中建议,进行AA test,并检查分布是否均匀,当我们得到异常信息时,需要纠正一些事情。

2、假设检验

假设检验时推论统计中用于检验统计解深的额一种方法,而“统计假设”时可通过观察一组随机变量的模型进行检验的科学学科。一旦能估计未知参数,就会希望根据结果对未知的真正参数值做粗活适当的推论。统计上对参数的额假设,就是对一个或多个参数觉得论述,而其中欲检验其正确性的为0假设,0假设通常由研究者决定,反映研究者对未知参数的看法,相对于0假设的其他参数之论述时备选假设,它通常反映了执行检定的研究者对参数可能值的另一种(对立的)看法(换句话说,备选假设才是研究者最想知道的)

常见鸡舍检验的种类包括:t假设、Z假设,卡方假设,F假设等。

3、t-test,z-test,p-value,ci(confident interval)

  • T 检验,亦称 student t 检验 ( Student’s t test ) ,主要用于样本含量较小 ( 例如 n<30 ) ,总体标准差 σ 未知的正态分布数据。T 检验是用 t 分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。

适用条件: 已知一个总体均数;可得到一个样本均数及该样本标准误; 样本来自正态或近似正态总体。

  • Z 检验是一般用于大样本 ( 即样本容量大于 30 ) 平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数平均数的差异是否显著。 当已知标准差时,验证一组数的均值是否与某一期望值相等时,用 Z 检验。

Z 检验的步骤 适用条件:已知一个总体均数;可得到一个样本均数及该样本标准误; 样本来自正态或近似正态总体。

  • p-value ,就是当原假设为真时,所得到的样本观察结果或更极端结果出现的概率。如果 p-value 很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,p-value 越小,我们拒绝原假设的理由越充分。p-value 代表的是不接受原假设的最小的显著性水平,可以与选定的显著性水平直接比较。例如取 5% 的显著性水平,如果 p-value 大于 5% ,就接受原假设,否则不接受原假设。这样不用计算 t 值,不用查表。p-value 能直接跟显著性水平比较;而 t 值想要跟显著性水平比较,就得换算成 p-value ,或者将显著性水平换算成 t 值。在相同自由度下,查 t 表所得 t 统计量值越大,其尾端概率 p 越小,两者是此消彼长的关系,但不是直线型负相关。

五、数据跟踪与效果评估

1、数据效果跟踪方案

AB test的目的时验证不同产品功能点/策略对某个或者几个指标的影响差异,因此需要进行数据效果跟踪。和整体指标观测所需要的数据效果跟踪方案相比,AB test的数据效果跟踪方案需要增加考虑的主要有两点:1、标识实验的分组2、标识实验所在的层次。数据效果跟踪方案一旦确定,会耦合大量的上下游系统和数据报表统计报表统计流程,甚至数据挖掘流程,修改起来异常麻烦,所以在系统设计早期可以去欸的那个一套比较合理的效果跟踪方案时非常重要的,可以极大提高和后续的工作效率。

下面是参考网上内容给出的数据效果跟踪方案:

数据效果追踪方案:

1、我们需要给每个实验传入用户唯一识码(uid)。用户

唯一标识和层次标识(layerid),是确定用户在本层实验分组(testid)的主要参数。

2、还需要给每个实验层传入请求唯一标识(requestid)。请求唯一标识的作用是串联不同数据层的数据,以计算层与层之间的转换率数据。

数据效果评估方法:

实现效果跟踪方案,该打的日志都打好,数据统计流程写好,后面每天跑一下数据统计流程把数据统计出来,把几天的数据取个平均值,是不是就可以直接写舒颜结论了?——当然不是。很重要的一点是,还需要计算实验的P值,才能判断实验数据是否有意义。这里有很复杂的数据分析过程,要用到大量统计学之知识(上文有提及),下面先假设一场景用于更好的解释。

2、讨论场景:

假设我们在一款场景的首页上的一个可点击位置,设计了一种新的图标,我们想看看用户对这个新图标的点击率相比于旧的是否有提高,其中图标a的流量组是对照组,图标b的流量组是实验组。

图标样式访问用户数(UV)点击用户数(CK)转化率(CR)
a50001002%
b50001302.6%
a.零假设

AB test本质上是统计学里面一个假设检验的过程。假设检验里面有个概念叫做零假设,在这个实验中,我们的零假设是:a图标比b图标效果更好是由于随机因素造成的。

即: H : C R a = C R b H:{CR_a=CR_b} H:CRa=CRb

我们后面的数据分析,就是要拒绝这个零假设,即:我们需要利用实验数据证明上面的等式不成立(这样就做到了拒绝0假设)

单侧检验与双侧减检验

单侧检验:

是指我们只想证明 C R A < C R b CR_A<CR_b CRA<CRb,或者只想证明 C R a > C R b CR_a>CR_b CRa>CRb.其实假设就是单边假设

单侧检验,是指我们只想证明CRa<CRb,或者只想证明CRa>CRb。其实验假设就是:

H 1 : C R a < C R b H1:{CR_a<CR_b} H1:CRa<CRb

或者

H 2 : C R a > C R b H2:{CR_a>CR_b} H2:CRa>CRb

双侧检验,是指我们想证明 C R a > C R b CR_a>CRb CRa>CRb 或者 C R a < C R b CR_a<CR_b CRa<CRb。实验假设为:

H 3 : C R a > C R b ∣ ∣ C R a < C R b H3:{CR_a>CR_b || CR_a<CR_b} H3:CRa>CRbCRa<CRb

b.p值,显著性水平

p值定义为,在零假设成立的条件下,获得和观察到的数据一致,或者更加极端(地背离零假设)的情况的概率。p值越小,说明零假设越有问题,因为观察到太小概率的事件发生了。

p值的具体计算和我们希望做单侧检验还是双侧检验有关。

对于单侧检验,以对应H1的单侧检验为例,p值计算如下:

p = P r ( C R B − C R A > = C R B 0 − C R A 0 ∣ H ) p=Pr(CR_B-CR_A>=CR_B0-CR_A0|H) p=Pr(CRBCRA>=CRB0CRA0H)

对于双侧检验,对应H3,p值计算如下:

p = 2 ∗ m i n P r ( C R B − C R A > = C R B 0 − C R A 0 ∣ H ) , P r ( C R B − C R A < = C R B 0 − C R A 0 ∣ H ) p= 2*min{Pr(CR_B-CR_A>=CR_B0-CR_A0|H),Pr(CR_B-CR_A<=CR_B0-CR_A0|H)} p=2minPr(CRBCRA>=CRB0CRA0H),Pr(CRBCRA<=CRB0CRA0H)

双侧检验的p值理解起来比较费脑子。还好,通常我们需要的是单侧检验的情况,所以,可以先理解理解单侧检验的p值计算就好。

p值越小说明零假设越有问题,也就说明实验假设越显著。所以,行业内可以设置一个p值的上界,比如0.05作为显著性的标准,这个值,就是显著性水平。目前一般的显著性水平设置为0.05。也就是说,如果p值小于0.05,就说实验假设是显著的。

前面的p值计算公式其实是算不出来的。实际上计算p值的时候,需要先计算zscore,然后查正态分布表算出p值。

计算工具

那么复杂的计算逻辑,看着就晕了,一般人不愿意去费这个脑子。好在,已经有国外网友把一些好用的计算工具开放出来了,咱们就不用去浪费那些脑细胞来计算这些指标了。

1:http://abtestguide.com/calc/

这个网站计算的指标比较完善,p值,z值和其他很多本文未介绍的指标都有。这个网站还考虑了单侧实验和双侧实验的情况。不过它的问题是不太稳定(可能和我这边的网络环境有关系)。

2:https://vwo.com/ab-split-test-significance-calculator/

这个网站只计算了单侧检验的p value。好处是比较稳定。

得不到显著的结论怎么办

对于做abtest来说,这是常见的情况。其原因,不外乎2点:

\1. 数据量不够,可以用这个工具看看是否实验时间不足:https://vwo.com/ab-split-test-duration/

如果发现实验所需时间已经超出承受范围,那么,可能说明,在当前阶段并不适合做abtest。

\2. 实验结论就是如此。那就需要具体分析原因,重新优化实验方案。

ABTest流量分发是指在进行AB测试时,将流量按照一定的规则进行分配的过程。AB测试是一种通过对比两个或多个不同版本的产品或页面,来确定哪个版本对用户更有效的方法。在AB测试中,为了确保结果的准确性和可靠性,我们需要将流量分发到不同的实验组和对照组中。 根据引用提到的水平切分方式,我们可以将流量按照一定比例分发给召回组和精排组。比如将总流量的50%分给召回组,剩下的50%流量分给精排组。这样可以在不同的实验组中进行试验,并观察试验效果。 当某个试验的指标为正向时,我们可以推广这个试验到全流量中,然后继续在该部分流量上进行其他试验。这种方式可以直观地看到定向组合流量下的试验效果,但流量利用程度可能不够高。 因此,在AB测试中,我们需要根据实际情况灵活地选择适合的流量分发方式,以提高流量的利用程度。同时,还可以参考引用提到的相关文章和论文,深入了解AB测试的流量分层分桶机制和其他技术服务,以优化AB测试的流量分发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ABTest流量分发和业界的一些经验](https://blog.csdn.net/Gamer_gyt/article/details/115673209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值