本文转载自微信公众号《寻山猫谈数据》,作者寻山猫。转载本文请联系迅山猫谈数据公众号。AB测试原理介绍AB测试的核心原理就四个字:假设检验。检查我们的假设是否正确。对应AB检验,就是检验实验组和对照组的各项指标是否存在显着差异。既然是假设检验,就是先假设,然后收集数据,最后根据收集到的数据进行检验。我们先谈谈假设。假设通常成对出现,分为原假设和备择假设。在AB检验中,原假设是:实验组和对照组的各项指标相同,无显着差异;备择假设则相反,实验组和对照组的指标不同,有显着性差异。例如。我们优化了一个算法,想提高页面的点击率。对于该场景的AB测试,原假设是新旧算法的页面点击率没有显着差异,备择假设是页面点击率有显着差异-新算法与旧算法之间的通过率。再说检查。一般来说,我们都是通过具体的指标属性来寻找相应的检查方法。那么问题来了,如何对指标进行分类呢?指标可分为两类:1.绝对值指标。也就是我们可以通过直接计算得到的,比如DAU,点击数等。我们一般会统计一段时间内指标的平均值或者汇总值,两个值之间是没有相互计算的。2.相对值指标。与绝对值指标相反,我们不能直接计算它们。例如,对于某个页面的点击率,我们使用页面点击数/页面展示数。我们需要计算点击次数和展示次数,将两者相除得到这个指标。同样,还有XX转化率、XX点击率、XX购买率。在我们做的大多数AB实验中,我们都希望改进这些指标。根据指标,我们可以知道如何计算最小样本量、实验周期以及相应的检验方法。关于AB测试的详细流程,我们先来看一张图。结合本次实验的流程图,稍微说一下:在做选择指标的AB测试之前,我们要明确自己的实验目标是什么。并且降落在几个具体的指标上,这些指标对我们衡量实验结果很有帮助。但指标也要分层次,只有一个核心指标+多个观察指标。核心指标用于衡量我们实验的效果并计算相应的样本量。观察指标用于衡量实验对其他数据的影响(如对市场保留的影响、对网络延迟的影响等)。EstablishingHypothesisEstablishingHypothesis如上所述,我们建立了原假设和备择假设,原假设一般无效,备择假设有效。大家在选择实验单元的时候,应该以用户粒度作为实验单元,但是一般来说,实验单元一般分为三类。我们不需要掌握,但是很多时候面试官会问,大家也能看懂。1.用户粒度:这是最推荐的,即以用户的唯一标识作为实验样本。优点是符合AB测试分桶单元的唯一性,不会造成一个实验单元在两个桶中,导致数据不可信。2、设备粒度:以设备ID为实验单位。相对于用户粒度,如果一个用户有两部手机,也可能会出现一个用户在两个桶中的情况,这样数据就不会被信任。3.行为粒度:以一个行为为实验单位,即用户使用该功能一次,为实验桶,下次使用可能会切换到基线桶。它会导致大量用户在不同的桶中。强烈不推荐这种方法。计算样本量要计算样本量,我们需要了解中心极限定理。具体的书面定义和推导过程,大家可以在网上百度搜索一下,这里通俗的解释一下。中心极限定理的意思是,只要样本量足够大,无论指标是什么,无论对应的指标分布是什么,样本的均值分布都会趋于正态分布。根据正态分布,我们可以计算出相应的样本量并进行假设检验。具体的样本量计算和推导过程,有需要的可以关注加我微信私聊,总结到这里。总体公式如下:由于指标可分为绝对值指标和相对值指标。相应地,我们在计算绝对值指数和相对值指数时,标准差的计算方法也会有所不同。具体如下:举两个例子来说明一下,让大家好受一些。案例1-相对价值指数:某商品点击率为1.5%,波动幅度为[1.0%,2.0%]。[1.0%,2.0%],所以至少2.0%的总样本量=16*(1.5%*(1-1.5%)+2.0%*(1-2.0%))/(2.0%-1.5%)^2=22000案例2-绝对值指数:某商品购买金额的标准差为25,优化此功能后,估计至少有5元的绝对增长,需要AB测试计算样本量σ=25,Δ=5总样本量=16*25*25*2/5*5=800最小样本量指的是我们的实验单元,必须满足这个数量,这样数据中的实验结果值得信赖。也就是说,我们的实验桶必须达到只有这个流量才能收集数据和测试指标。流量切分流量切分有两种方式:导流和分层。拆分就是我们直接把整个用户分成几块,用户只能在一个实验中。但是这种情况是很不现实的,因为如果我想同时发起多个实验,流量不够怎么办?那么为了达到最小样本量,我们不得不延长实验周期。如果我们做一个实验,需要几个月的时间。相信我,你的老板一定会和你谈论你理想的生活。另一种方式,分层。就是将同一批用户连续随机化后,分到不同的桶中。也就是说,一个用户会在多个实验中,只要实验之间互不影响,我们就可以无限切用户。这样一来,在保证每次实验都能满流量切的同时,也保证了实验数据的可靠性。两种方法用图形表示如下:实验周期对应最小样本量的计算,我们分流,知道实验桶一天能有多少个样本(也可以按小时计算,如果产品的流量足够大)。我们可以直接用实验桶的最小样本量/平均日流量来得到对应的实验周期。在线验证许多公司不做在线验证。当然,不验证也无所谓,但可能会踩坑,所以建议大家在实验上线后进行在线验证。在线验证主要涉及两个方向,一是验证实验策略是否真正被触发。也就是我们推出的实验桶是否真的落地到产品上了。比如你优化了一个产品功能,你可以实际体验一下这个实验桶产品是否真的优化了。另一个是验证同一个用户只能在同一个桶中。如果它们同时出现在两个桶中,后面的数据将不被信任。这在上面已经说过了。数据检查数据检查,你可能听说过。比如Z检验,T检验,单尾检验,双尾检验,计算P值,计算置信区间等等。我们先说说哪个case用Z检验,哪个case用T检验。因为这个问题经常遇到,所以也是AB测试中面试官必问的问题。大家应该都看过这张图:按照我们上面提到的指标分类,一般情况下,绝对值指标采用T检验,相对价值指标采用Z检验。因为绝对指标的整体方差,需要知道每个用户的价值,这在AB实验中是肯定做不到的。相对价值指数是二项分布,可以通过样本量的值来计算整体价值,就好像某个页面10万人的点击率是10%,从中随机抽取1万人10万人,点击率也是10%。下面说说具体的检查。一般来说,我们可以采用两种常用的方法:1.计算P值,即计算原假设成立时观察样本数据出现的概率。在统计学上,5%被认为是小概率事件,所以一般用5%来比较计算出的P值。当P值小于5%时,拒绝两组指标不同的原假设;反之,当P值大于5%时,接受两组指标相同的原假设。2.计算置信区间。一般来说,我们使用95%作为置信度。也就是说,当前数据估计的95%的区间都包含了总体参数的真实值。这么说可能会让人迷惑,但我们可以简单理解为整体数据有95%的概率在这个范围内。我们计算两组指标的差值。如果计算出的差异值的置信区间不包含0,则拒绝两组指标不同的零假设;但如果它包含0,我们就不得不接受两组指标相同的原假设。当然,我们也可以直接算出Z值或T值,查表对比。不过这个不是很常用,P值和置信区间还是主流。也有公司将所有指标计算为不同流量区间的自然波动。比如我有3个指标,日活跃100W,我可以拆分成多个流量区间,比如1w、2w、5w、10w、20w、50w、100w,然后依次计算这三个指标.较低的自然波动阈值,高于该阈值我们认为实验有效。这样会方便很多,但是不够严谨。最后说一下单尾测试和双尾测试。单尾检验的前提是我们不仅要相信两组的指标不同,还要指定大小。通常,我们认为实验组的效果高于基线组。two-tailedtest只考虑两组指标不同,不指定大小。一般来说,我们推荐使用双尾测试,为什么?因为实验本身就是一种用数据做决策的方法,我们不想人为地带入主观假设。相反,我们使用双尾测试。我们不仅可以量化它增加了多少,也可以量化它损失了多少。因为实验结果有正有负,并不是所有的都是有效的(positive),也可能有负面影响,我们也可以把有负面影响的实验记录下来,存入知识库,避免后面的实验走弯路。当然,生活中的一些事件,是可以一尾一试的。比如我们优化灯泡的制造过程,提高灯泡的质量,那么对于灯泡的质量检测,我们可以采用单尾检测,因为我们只关心灯泡的质量是否符合预期并且有所改善。知识点总结如上,至此我们就讲完了AB测试的整体流程以及流程中需要用到的知识点。知识点总结一下:1、实验过程是选择指标——建立假设——选择实验单元——计算样本量——流量分割——实验周期计算——在线验证——数据检验。2.假设分为原假设和备择假设。零假设一般是实验无效(指标没有差异),备择假设是实验有效(指标不同)。3、指标可分为绝对值指标和相对值指标。相应地,绝对值指标推荐T-test,相对值指标推荐Z-test。4、检验数据是否有效,可以计算P值,高于5%则接受原假设,两组指标相同;还可以计算置信区间的差值,如果差值包含0,则接受原假设,两组指标相同。
