abtest 那些事儿(下)—数据跟踪和效果评估



转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com

AIQ 机器学习大数据 知乎专栏 点击关注

作者:
沈国阳

上一篇文章,我们通过一个八卦了解了 abtest 在产品功能及策略迭代过程中的重要价值,并且介绍了 abtest 的一个简单框架,以及多层 abtest 框架里面,层与层之间关系的定义。本篇将讨论数据跟踪方法和效果评估方法相关的话题。本文部分内容结合过往工作中学习到的知识进行了自己的思考和加工,尚未在实践中使用,如果读者需要在生产环境中使用,请根据具体情况进行调整。由于本人功力有限,内容如有差错,欢迎指正。

1. 数据效果跟踪方案

        abtest 的目的是验证不同产品功能点 / 策略对某个或者某几个指标的影响差异,因此需要进行数据效果跟踪。和整体指标观测所需要的数据效果跟踪方案相比,abtest 的数据效果跟踪方案需要增加考虑的主要有 2 点:1. 标识实验的分组 2. 标识实验所在的层次。

        数据效果跟踪方案一旦确定,会耦合大量的上下游系统和数据报表统计流程,甚至数据挖掘流程,修改起来异常麻烦。所以,在系统设计早期确立一套比较合理的效果跟踪方案是非常重要的,可以极大提高后续的工作效率。

        下图是我根据过往经验进行抽象总结的,我认为比较合理的数据效果跟踪方案。
1ee3a3727062432b9fe7a5610b796e24.png

        1. 我们需要给每个实验层传入用户唯一标识(uId)。用户唯一标识和层次标识(layerId),是确定用户在本层实验分组(testId)的主要参数。

        2. 我们还需要给每个实验层传入请求唯一标识(requestId)。请求唯一标识的作用,是可以串联不同实验层的数据,以计算层与层之间的转化率数据。这个设计看起来不起眼,却非常关键。有些没有采用这个方案的系统,每一层的层次标识和实验分组都需要传递到下一层及下下层,导致在系统与系统之间出现高度耦合,极大提高了团队间的沟通协调成本,这是非常惨痛的教训。

        3. 值得一提的是,我在这里设计了统一的 abtest 控制中心。其优点是确保专业的人去设计和维护 abtest 框架,确保真正实现所需要的实验层与层的关系。在不同团队各自采用 abtest 分流方案的公司,要做到这点恐怕沟通成本也不小。

2. 数据效果评估方法

        实现效果跟踪方案,该打的日志都打好,数据统计流程写好,后面每天跑一下数据统计流程把数据跑出来,把几天的数据取个平均值,是不是就能得出实验结论了?当然不是。很重要的一点,还要去计算实验的 p 值,才能判断实验数据是否有意义。这里面有很复杂的数据分析过程,要用到大量的统计学知识。为了写文章的后半部分,我查阅了大量的资料,发现了自己以前有很多认识是错误的(应了那句美团的名言:最好的成长是分享)。在介绍相关知识点之前,我们先建立一个实际应用中可能用到的场景,以便讲解的时候比较直观。不过,有些地方还是需要用到公式才能进行更好的解释。

2.1 讨论场景

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

2.2 零假设

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

H:{CRa=CRb}

        我们后面的数据分析,就是要决定拒绝或者接受这个零假设。通常,我们的目的是要用实验数据证明 CRa 和 CRb 统计上是不相等的,也就是拒绝零假设。

        零假设的对立面,可以叫做实验假设,也就是我们通常要证明的假设。这个不相等是怎么个不相等法,就引出了我们下面要说的单侧检验与双侧检验。

2.3 单侧检验与双侧检验

        单侧检验,是指我们只想证明 CRaCRb。其实验假设就是:

H1:{CRaCRb}

双侧检验,是指我们想证明 CRa>CRb 或者 CRa H3:{CRa>CRb||CRa=CRB0-CRA0|H)

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

p= 2*min{Pr(CRB-CRA>=CRB0-CRA0|H),Pr(CRB-CRA<=CRB0-CRA0|H)}

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

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

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

2.5 计算工具

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

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

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

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

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

2.6 得不到显著的结论怎么办

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

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

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

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

       关于 abtest,暂时就先介绍到这里。还有很多内容没有介绍,但是这里面统计学的知识太多,可能读者并不感兴趣,所以,还是先看看读者朋友们的反应,再决定是否要再续貂吧 ^^

参考资料:

1. https://en.wikipedia.org/wiki/P-value

2. https://www.zhihu.com/question/20183513

3. https://en.wikipedia.org/wiki/Null_hypothesis

4. https://developer.amazon.com/public/apis/manage/ab-testing/doc/math-behind-ab-testing


更多高质资源 尽在AIQ 机器学习大数据 知乎专栏 点击关注

转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com