精华内容
下载资源
问答
  • AB test

    千次阅读 2018-04-27 23:01:51
    前言 AB test 在实际工作中,A/B test是产品改动时常用到的手段。 为同一目标,制定两种方案,在相同时间维度下,...在新版本上线前,先对少部分人进行AB test,根据显著性检验,检验方案是否的确可以带来特...

    前言


    AB test
    在实际工作中,A/B test是产品改动时常用到的手段。
    为同一目标,制定两种方案,在相同时间维度下,随机分组,让用户使用两种不同的方案,并收集两组人群的用户行为数据和业务数据。
    比如,通过设计两种文案/操作方式/界面风格等,通常其中一套方案是老版本,另一套方案是新版本。
    在新版本上线前,先对少部分人进行AB test,根据显著性检验,检验方案是否的确可以带来特定业务指标的提升,若通过检验,才选择改版。
    不过,显著性检验并不一定准确,涉及到统计功效。若统计功效低,即使通过显著性检验,也不一定能说明方案真的能够带来改进。(统计功效是啥,将会在本文具体展开)
    本文主要内容:
    1. A/B test显著性检验
    2. 统计功效(R实现样本量计算)
    3. 几种常用检验方法

    A/B test显著性检验

    随机将用户分为两组,用户群1使用原方案A,用户群2使用新方案B。经过一定时间积累用户数据,根据显著性检验判断新方案效果是否比原方案好。

    示例

    A/B test进行一周,得到两个方案的数据

    方案用户数下单人数转化率
    A88497475230.537
    B621936190.582

    在这里能否说明新方案B转化效果比老方案好呢?显然是不行的,因为往往会有一些随机因素参杂其中。
    因此,我们首先对该A/Btest的结果进行显著性检验。

    显著性检验是用于检测科学实验中实验组与对照组之间是否有差异以及差异是否显著的办法。

    假设检验:原假设H_0;备则假设H_1。
    检验结果有四种情况。

    实际为真实际为假
    检验为假第一类错误α正确
    检验为真正确第二类错误 β

    如果原假设实际为真,检验的结论却让你放弃原假设。此时称为犯了第一类错误α
    如果原假设实际为假,检验对结果却让你不放弃原假设,此时称为犯了第二类错误β

    不考虑第二类错误β,只限定犯第一类错误的最大概率α ,这样的假设检验称为显著性检验,概率α 称为显著性水平。一般α 取值为0.1,0.05或0.01.α 越大说明越可能犯第一类错误,就是条件太严格,更容易拒真。
    一般而言,把你希望得到的结果作为备择假设。
    因为拒绝才是有意义的,一但拒绝原假设,那么备择假设成立。如果不拒绝原假设也不能说明原假设是正确的,只能说明要拒绝原假设的条件还不够。

    在该示例中,我们想得到方案B转化率大于方案A的结论,因此可以做如下假设:
    原假设:方案A转化率 >= 方案B; 备则假设:方案A转化率 < 方案B.

    借用R,计算其P值。

    prop.test(n=c(88497, 6219),x=c(88497*.537, 6219*.582), alternative = "less")  
    
    data:  c(88497 * 0.537, 6219 * 0.582) out of c(88497, 6219)
    X-squared = 47.188, df = 1, p-value = 3.225e-12
    alternative hypothesis: less
    95 percent confidence interval:
     -1.00000000 -0.03426326
    sample estimates:
    prop 1 prop 2 
     0.537  0.582

    计算结果显示P值<0.05,可以拒绝原假设,可以认为方案B转化率比A好。

    P值

    P值通俗解释:原假设正确的前提下,得到当前情况乃至更差情况的概率。
    将P值与显著性水平α比较。
    我们相要证明命题(即备则假设)是真的,即要证明该命题的否命题(即原假设)是假的。此时,在否命题的假设(原假设)下,观察到小概率事件发生了,此时否命题(原假设)被推翻,原命题(备则假设)为真。
    P值越小,说明当前观察到的事件越是小概率事件,否命题(原假设)越有可能被推翻,原命题(备则假设)越可信。
    因此P值越小,越可以拒绝原假设。而α 值就是我们容忍的上限。

    统计功效

    P值小于显著性水平,得到拒绝原假设的结论就一定正确吗?
    不是的,P值的计算结果受样本量大小的影响,样本量越大越准确。假如在样本量不足的情况下做显著性检验得到的结论,并不具有说服力,因为其统计功效很低。
    但我们知道,实际中,样本量越大,往往成本越大。假设在这个例子中,方案B转化率实际比方案A低,但我们却把更多的用户划到了方案B中,这样是不是就影响了转化,从而影响了收入。因此我们需要确定能够使结论尽可能准确的最小样本量。

    统计功效,可用1-β表示。其中β就是第二类错误的概率,实际为伪,认为是真的情况。
    统计功效越高的实验意味着,它观察到的统计学差异(P<0.05)能反映真实情况的可能性越大。

    影响统计功效的因素主要有:样本量和显著性水平α
    样本量 :样本量越大,越能代表整体,计算的结果也越准确。
    显著性水平α :即第一类错误,通常定为0.05.

    借助工具R,我们可以通过样本量,显著性水平计算统计功效;也可以限定显著性水平和统计功效,计算能够得出当前限度统计功效值的最小样本量。

    计算统计功效

    pwr.p.test(h = NULL, n = NULL, sig.level = 0.05, power = NULL, alternative = c("two.sided","less","greater"))

    h: Effect size
    n: Number of observations
    sig.level: Significance level (Type I error probability)
    power: Power of test (1 minus Type II error probability)
    alternative(备则假设): a character string specifying the alternative hypothesis, must be one of “two.sided” (default), “greater” or “less”

    > library(pwr)
    > pwr.p.test(h = ES.h(0.537,  0.582), n =6219, sig.level = 0.05, alternative = "less")
    
         proportion power calculation for binomial distribution (arcsine transformation) 
    
                  h = -0.0906765
                  n = 6219
          sig.level = 0.05
              power = 1
        alternative = less

    可以得出统计功效值为1 。

    pwr.p.test(h = ES.h(0.537,  0.582), n =621, sig.level = 0.05, alternative = "less")
    
         proportion power calculation for binomial distribution (arcsine transformation) 
    
                  h = -0.0906765
                  n = 621
          sig.level = 0.05
              power = 0.7306543
        alternative = less

    将观察的样本量n改为 621,可以得到功效值为0.73,说明在此样本量下得出的显著性检验结果的可信度只有73%,与样本量为6219相比,下降。

    计算样本量

    R code

    # ------------------------ helper
    > # wrapper
    > p.test.wrap = function(origin, incr) {
    +     test_obj = pwr.p.test(h = ES.h(origin, origin + incr), 
    +                           sig.level = 0.1, power = 0.9, alternative = 'less')
    +     return(test_obj$n)
    + }
    > 
    > 
    > # ------------------------ sample size estimates based on complete
    > # original complete rate
    > complete_seq = seq(0.6, 0.7, 0.02)
    > # % increase
    > complete_incr_seq = seq(0.02, 0.06, 0.01)
    > # combination
    > complete_incr_df = expand.grid(complete_seq, complete_incr_seq)
    > # rename
    > names(complete_incr_df) = c("original_complete", "ratio_incr")
    > # return and combine sample size
    > complete_sample_size = mapply(p.test.wrap, complete_incr_df[[1]], complete_incr_df[[2]])
    > (complete_sample_size_df = cbind(complete_incr_df, complete_sample_size))

    此段代码表示在显著性水平为0.1,统计功效为0.9的情况下,验证转化率确实从0.6增加0.02,需要的样本量。

    原始完成率假设提升所需样本量
    0.600.023906.5777
    0.620.023827.7081
    0.640.023735.6918
    0.660.023630.5275
    0.680.023512.2140
    0.700.023380.7494
    0.600.031727.6860
    0.620.031691.151

    几种常用检验方法

    比例检验 P检验

    本文所举例子采用的检验。

    t检验

    展开全文
  • ABtest

    千次阅读 2018-12-06 12:27:26
    ABtest ABtest一个总的目的和意图是,判断哪种种UI或rerank策略更优,通过事实的依据( CTR或下单率)判断哪种策略更符合用户的习惯和需求。 一、需求驱使  我们经常会面临多个设计方案的选择,比如app或pc端...

                                               ABtest

    ABtest一个总的目的和意图是,判断哪种种UI或rerank策略更优,通过事实的依据( CTR或下单率)判断哪种策略更符合用户的习惯和需求。

    一、需求驱使 

    我们经常会面临多个设计方案的选择,比如app或pc端某个界面的某个按钮是用红色还是用蓝色,是放左边还是放右边。传统的解决方法通常是集体讨论表决,或者由某位专

    家或领导或文青来拍板,实在决定不了时也有随机选一个上线的。虽然传统解决办法多数情况下也是有效的,但A/B 测试(A/B Testing)可能是解决这类问题的一个更好的方法。

    所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符

    合设计目标。

    下面看一个例子:

    在展示“格林秀上午酒店”这个poi时有客户端两种UI:

    方案A:如左图,评分展示星状图片,消费人数再右边; 

    方案B:如右图,只展示评分分数,后边添加消费人数;

     

           我们很难知道那种方案比较好,那我们可以做个实验,把a和B方案同时放到线上的生产环境,让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用报表如下图,通过大自然的优胜劣汰法则,我们可以通过CTR或下单率等指标看哪个方案更符合设计目标。

    A / B测试,即有两个即将面对大众的设计版本(A和B)。通过小范围发布,得到并比较这两个版本之间你所关心的数据(转化率,业绩,跳出率等),最后选择效果最好的版本。

    对于互联网产品来说,通过A/B测试提升点击转化率,优化获客成本已得到越来越多的关注。以获客环节为例:许多产品都会在百度、头条等渠道投放落地页广告,以完成新用户的注册转化,而落地页效果的好坏,会直接影响转化率和获客成本。

    以每月200万投放费用为例,如果通过A/B测试将落地页的注册转化率有效提升20%,相当于每月能多获得价值40万推广成本的新用户。

    二、系统模型

    abtest实验可以分成两种,客户端client实验和服务端server实验,客户端实验一般来说只是UI上的实验,比如上面的例子,纯粹是展示端的策略;而服务端的实验是返回给client数据的内容做实验,比如推荐的策略,订单列表rerank策略等。

    三、A / B测试流程

    运行A / B测试实验的正确方法是遵循科学过程。它包括以下步骤:

    > 研究您的网站数据:使用Google Analytics(分析)、百度分析等网站分析工具,并在转化渠道中找到问题。例如,您可以识别跳出率最高的页面。假设您的主页的跳出率非常高。

    > 观察用户行为:利用访客行为分析工具,如Heatmaps,Visitor Recordings,Form Analysis和On-page Surveys,并查找阻止访问者转换的内容。例如,“CTA按钮在主页上不突出”。

    > 构建假设:根据访问者行为分析工具的见解,构建旨在提高转化率的假设。例如,“增加CTA按钮的大小将使其更加突出,并将增加转化。”

    > 测试您的假设:根据您的假设创建一个变体,并且A / B对原始页面进行测试。例如,“A / B测试您的原始主页针对具有较大CTA按钮的版本”。根据每月访客数量,当前转化率和转化率的预期变化计算测试持续时间。(在这里使用我们的贝叶斯计算器)

    > 分析测试数据和绘制结论:分析A / B测试结果,并查看哪些变化带来了最高的转化。如果变化中有明确的赢家,请继续执行。如果测试仍然不确定,请返回到第三步并重新设计您的假设。

    > 向所有相关方报告结果:让营销,IT和UI / UX中的其他人了解测试结果和生成的见解。

     

     

     

    【转载】:https://blog.csdn.net/weiguang_123/article/details/49203239

      参考: http://www.sohu.com/a/249948452_278472

                  https://segmentfault.com/a/1190000012377139

                  https://blog.csdn.net/zzq900503/article/details/70991497

                      

    展开全文
  • ABTest

    千次阅读 2018-07-02 10:27:03
    一个较大的产品或者策略改进上线以后,需要进行一段时间的abtest,以决定这个产品或者策略改进是否符合预期,是否要扩大流量,或者需要中止实验。ABTest系统背景互联网与传统软件行业的开发最大区别就是快速迭代,...

    在倡导数据驱动的公司中,会通过大量的数据分析来了解产品业务的进展以及做相关的决定。一个较大的产品或者策略改进上线以后,需要进行一段时间的abtest,以决定这个产品或者策略改进是否符合预期,是否要扩大流量,或者需要中止实验。

    ABTest系统背景

    互联网与传统软件行业的开发最大区别就是快速迭代,新增一个业务或者新增一个基于老业务的算法更新也许只是某个工程师一天的结果。在这种代码高速发布过程中, 必然存在结果和期望符合的情况,也存在不怎么符合的情况, 当然更多的是存在结果与期望不相符的情况。正是由于这个原因, 小流量上线测试是比较合理的上线方法, 上线之后必须对这份测试流量进行效果追踪,根据追踪效果做出后续决定,是继续加大流量呢,还是保持观察,或者是回滚代码。所有上述操作需要有一个系统辅助高效地解决,我理解的AbTest系统就是基于上述需求产生的。

    我做ABTest的背景介绍

    我所在的团队是搜索业务团队,简而言之就是把搜索引擎的匹配结果和算法的排序结果通过产品经理的意愿呈现给用户,当然除了这个基本业务还有一些和搜索相关的小业务,比如搜索提示,导航,相关词推荐等。
    我在接上述业务需求的时候,可以归纳成以下两个维度的需求:

    • 产品经理提出的需求一般会从业务层面上对比效果(比如搜索提示新功能上线后对搜索的影响 )
    • 算法层面上的效果对比(还是上面这个例子, 搜索提示功能分流量上线之后,后面有其他人需要优化搜索提示算法,那么算法工程师就需要对比这两种算法的效果)

    为了满足产品经理和算法工程师快速切换功能,快速看到效果,ABTest系统就开始逐步规划了。

    设计故事

    我以搜索提示ABTest举例,解释整个ABTest系统工作流程。我一开始接触搜索业务时,搜索的功能就是接受关键词,结果是匹配关键词的商品。基本业务如下图表示,方框表示功能模块走的流量范围,此时表示没有分流量测试全部走搜索基本业务。

    分流量简单介绍

    分流量原则上需要保证均匀性和一致性。均匀性指的是流量唯一标识符取摸后均匀地落在每个区间。举个例子,使用cookid通过标识符生成算法模块生成一个唯一标识符(uuid),我对全站流量分成100份,那么uuid%100的值0~99,必须做到每个值分配的流量几乎相同。一致性指的是某个流量生成uuid后再取摸的值是一定的,比如某个cookid经过算法模块后取摸的值为1,那么下次再次经过uuid生成算法取摸后值还是为1。大家可以百度一下保证这两个特性的算法。

    50%使用搜索的用户会有搜索提示这个功能,其余只能直接搜商品。这个层次结构正好解决了搜索提示分流量上线的需求。效果追踪稳定后,搜索提示改造算法出现了,我会在原先结构上新增一份对比测试流量。


    展开全文
  • AB test详解

    万次阅读 2020-12-04 13:05:03
    无法衡量就无法优化,对于互联网产品而言,不仅是推荐系统,整个app系统的更新迭代必然需要建立一套度衡量,来把控整个流程优化的方向,而ABtest系统就是一个很好的进行变量控制和优化方向选取的工具,循环:衡量-...

    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. 实验结论就是如此。那就需要具体分析原因,重新优化实验方案。

    展开全文
  • Github : ...ABTest-UM 一款简单易用的ABTest工具-基于友盟打点 使用步骤 Step1 接入自动集成插件到build.gradle(project) buildscript { repositories { ... maven { url 'https://raw...
  • AB Test & AA Test

    2021-03-03 22:52:04
    AB Test & AA Test前言一、AB Test1. AB Test sampling2. AA Test3. AB Testing 前言 AA Test: 在进行AB Test之前,对AB Test的sampling进行测试,分析两个group之间存在的本源性差异。 AB Test: 为同一款产品...
  • 移动互联网的应用ABTest.昨天晚上我前往慧谷科技听点评的架构师分享。收获还是很多的。我很喜欢这类分享,这类分享是真正的干货,并且也能够让人思考考虑怎么结合自己的产品。  昨天晚上我前往慧谷科技听点评的架构...
  • 本文为学习abtest切流方案方便以后查看大部分内容转载自原文https://blog.csdn.net/tanweii163/article/details/80543083  互联网公司的业务发展过程中,当业务发展到一定阶段后,野蛮生长的红利逐渐消退,用户...
  • ABtest_blog 具有AB_test功能的网络博客
  • 推荐ABTest的实现策略总结
  • yarn add react-abtest 或者 npm install react-abtest 用法 您可以基于组放置自动渲染组件,也可以获取用户所在的组并自行选择处理方式。 渲染组件 实验随机 随机渲染一个变体。 import { ExperimentRandom } ...
  • ABTEST实验平台

    2020-09-29 16:51:32
    ABTEST实验与闭环 一、单层实验 一般早期的ab-test都是单层实验,逻辑非常简单,比如使用userId/deviceId做hash然后取模,将流 量打在0-99,做成100份。 有如下问题: 1、扩展性差,只能同时支持少量实验。但是...
  • ABTest-SDK

    千次阅读 2018-08-27 21:50:06
    ABTest-SDK适用于AB分流实验、灰度发布系统等互联网场景; 此SDK支持二次开发,开发者可自行实现查询实验分流配置接口。 特性: 1)支持白名单; 2)轻量级,仅依赖guava; 3)接口耗时微秒级,使用guava的本地...
  • cd ./abtest-agent export RECOMMEND_CONF_DIR=`pwd` mvn clean package jetty:run mvn org.mortbay.jetty:maven-jetty-plugin:run curl http://localhost:8080/abtest-agent/ curl ...
  • ABtest介绍,示例

    千次阅读 2020-09-16 13:24:41
    在各个行业中,ABtest对于数据分析师来说都是一个不陌生的明细。那么ABtest到底是什么?其基础原理是怎样的? 在网站和APP的设计,产品的运营中,经常会面临多个设计/运营方案的选择,从界面颜色,界面功能按钮,...
  • abtest_client_strategy_module10150009
  • elasticsearch-abtest-源码

    2021-05-02 07:25:21
    curl -XPOST localhost:9201/sample-index/_abtest/settings -d ' { "testcases": [ { "test_name": "test1", "index": "sample-index-a", "percentage": 10 }, { "test_name": "test2", "index": "sample-...
  • AB test学习笔记

    千次阅读 2019-07-16 10:00:29
    AB Test 介绍: https://vwo.com/ab-testing/ AB Test 的意义: 数据分析告诉我们要不要去做一件事情,ab 实验反馈告诉我们我们做得好不好,哪里有问题,以及衡量可以带来多少确定性的增长。 一、理论基础 1...
  • ABtest实验细节整理

    千次阅读 2020-05-26 00:31:24
    基本概念2.ABtest流程3.注意事项3.1 注意点4.参考资料 1.基本概念 ABtest是一种在线评估方法,为了实现同一个目标而制定的两个方案,一部分用户使用A方案,一部分用户使用B方案,记录下两部分用户的反馈情况,然后...
  • ABTest就是其中不可缺少的一环,那么ABTest是什么呢?下面来一层一层揭开它神秘的面纱。 0.流量分发 在互联网流量的分发模式中,主要的两种分发模式为: 中心化:平台负责流量的分配,节点的流量来自平台分配,平台...
  • 灰度发布和AB Test

    2018-11-20 16:55:37
    缺点二、AB Test1. 简介2. 优缺点3. 核心思想4. 实现步骤三、实现方案1. nginx控制2. 后台代码控制3. 前端代码控制四、第三方框架五、参考资料 一、灰度发布 1. 简介 灰度发布,是指在黑与白之间,能够平滑过渡的一...
  • ABtest系统是什么?

    千次阅读 2019-01-15 10:17:17
    1. 互联网AbTest系统的背景介绍 https://www.jianshu.com/p/de8d9f0b14f4 2. 技术揭秘大众点评大规模并行AB测试框架Gemini https://www.csdn.net/article/2015-03-26/2824303
  • 学习笔记 | 数据分析之AB Test

    千次阅读 2020-06-07 00:41:15
    数据分析之AB Test 业务发展 -> 用户增长 AB test是伴随着业务增长的利器,在产品功能及策略迭代过程中有重要价值。 数据分析指标:点击率、转化率。 A/B实验的重要理念:宁肯砍掉4个好的产品,也不应该让1个...
  • ABTest原理及python实现

    千次阅读 2020-05-21 17:52:51
    ABTest原理及python实现1. ABTest原理2. 假设检验3. Python实现 1. ABTest原理 大数定律:在一个随机事件中,随着试验次数的增加,事件发生的频率趋于稳定值,即概率。 中心极限定理: 设随机变量X1,X2,…Xn独立...
  • AB测试 在android中进行ab测试的简单库 用法(gradle) 将此行添加到您的依赖组: ... alphaBetaTest.doABTest( "test-action", new ABTest() { @Override public void B() { Log.i( LOG_TAG, getName()

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,522
精华内容 60,208
关键字:

abtest