【数据分析基础】数据分析面试中ab测试都考些啥?

ab测试作为数据分析师的必备技能,是面试过程中被问到频率最高的问题,一提到ab测试感觉啥都会,但是细细想想却感觉好像什么也不知道,今天就和大家一起聊聊数据分析面试中常见的ab测试问题。”


今天来和大家聊一聊数据分析中经常会用到的ab测试。ab测试我们在工作当中,尤其是在很多的互联网大厂里面,经常被用来验证一个功能最终是否会被上线的重要手段,而且也是在面试当中经常会出现的一个考点,所以ab实验的重要性就不言而喻了。但是很多同学一提到ab实验就会有点小紧张,感觉自己知道什么是ab测试,但是好像又了解的不是很清楚,也不知道ab测试具体工作中怎么实施?在面试当中会怎么考?那么今天我们就一起来啃一啃ab测试这块硬骨头。



01、什么是ab测试?         


首先第一个问题就是什么是ab测试?

ab测试其实来源于假设检验,也就是说我们现在有两个同质的样本组,对其中一个组做出某种改动,然后我们来观测这个改动对于我们所关注的核心指标是否有显著的影响。那么在这个实验当中,我们的原假设就是这项改动并不会对我们所关注的核心指标有显著的影响。如果我们在做完实验之后,后发现P值足够小,我们则推翻原假设,证明这项改动会对我们所关注的核心指标产生显著影响,那么这个就是ab测试的原理。

如果用一句话来概括的话,ab测试其实就是同质样本组的对照实验。可能有部分公司问完ab测试的原理和本质之后,知道你对于ab测试的操作是了解的,就不会再进行过多的深入追问了。但是像一些互联网大厂,他们非常依赖于ab测试去判断某项功能好坏的话,就可能会问的更加深入一些。


02、ab测试中的辛普森悖论       


那么第二个比较常见的问题就是,你了解在ab测试中所存在的辛普森悖论吗?辛普森悖论指的是在某种条件下,我们所观测的两组数据分别讨论时,都会满足某种同样性质,可是当我们把两组数据集进行合并去观察整体时,就会得出截然相反的结论。

那么辛普森悖论产生的原因就是我们把"值"与"量"两个维度的数据合并成了"值"一个维度去进行讨论。通俗一点说,也就是说我们在划分子数据集的时候没有对于流量进行一个合理的分割,导致我们所选取的实验组并不具有一定的代表性。

举个例子,如果我们把辛普森悖论应用到互联网产品的实践当中,很可能就是我们用1%流量的用户去跑了一个实验。然后得出结论说新版本比老版本更加受用户欢迎,而当新版本的产品上线之后,发现其实给用户带来的体验是下降的。那么这个就是辛普森悖论,在实际应用中会给公司造成损失。那么为了避免辛普森悖论,我们应该保证去对于样本量进行一个合理的分配,并且保证我们所选取的样本量具有相似的特征,且它们都能够代表总体的特征。

举个实际的例子,比如说我们现在要观测用户参与活动后领取福利的入口放在哪个位置更容易被用户点击,那我们在这里实验组和对照组所确定的用户都一定要是参与活动用户,而不能选择整体的大盘用户去作为我们的观测基准。



03、ab测试样本量怎么定?


那么既然我们刚才说到了解决辛普森悖论的一个重要方法,就是去进行样本流量的合理分配。那么下一个问题就来了,就是ab测试的样本量应该如何去计算?这也是在面试中一个常见的问题。

关于样本量计算的一个理论公式就在这里了。


那么在这个公式当中,σ代表的是数据的标准差,衡量的是整体样本数据的一个波动性。而δ代表的是两组数据的差值,比如说点击率从1%到1.5%,那么等它就是0.5%。而α和β,也就是我们在统计学当中所经常提到的,犯第一类错误的概率和第二类错误的概率。

在了解了计算样本量的理论之后,一般我们都会通过样本量计算器去进行一个计算。那么比较常见也比较好用的,一般是一个叫做Evans awesome AB Tools这样一个在线计算工具:https://www.evanmiller.org/ab-testing/sample-size.html,它的界面是这样子的,


其实工具都已经帮我们设计好了,关键就是我们需要理解在这个计算当中,他所提到的一些关键的指标是什么意义,我们应该怎么去设计。那么在这个界面当中,首先第一个需要我们确定的是baseline conversion rate,那么baseline conversion rate是指我们在开始实验之前对照组本身真实的表现情况,如果说我们在这个实验当中想要去观测的是一个按钮的点击率变化,那么baseline conversion rate就是原来的点击率是多少,那么这个点击率通常是根据历史数据去决定的。那么第二个需要我们去设定的只是minimum detectable effect,顾名思义,这个参数代表了我们对于判断精度的最低要求。当然这个参数越大,比如说是10%,那就代表我们检测出的差别只要达到10%即可。而当这参数值越小,比如说1%,那么就需要我们所检测出的差别要达到1%,所以这个参数越小,说明我们对于判断精度的要求越高,相应的我们所需要的样本量也就会增加。除了这两个参数之外,我们还要求第一类错误的概率,也就是α不超过5%,它所对应的参数就是significance level,也就是我们所说的显著性水平。同时还要求第二类错误β的概率不超过20%。在这里它所对应的参数就是statistical power。但是statistical power一般用1-β来表示,这里的话也就是80%。

当然Evans这里不仅有样本量计算,也有各种ab测试的效果评估工具可以使用,T检验,方差分析等,应有尽有。


04、第一类错误和第二类错误


那细心的同学可能就注意到了,在刚才对于样本量计算的过程当中,我也提到了两个概念,那么就是第一类错误和第二类错误。我个人觉得这两个概念是统计学当中比较容易搞混的两个概念。如果我们对应到互联网产品的时间当中,第一类错误代表的通常是一个功能的改动,本来不能给我们带来任何收益,但是我们却误认为它能够给我们带来收益。同样,第二类错误代表的是本来是一个好的产品,它本来可以给我们带来收益,但是由于我们统计的误差,导致我们认为它并不能给我们带来收益。


所以在实际的工作当中,第一类错误是我们更加不能接受的。换句更直白的话说,就是我们宁愿砍掉四个好的产品,也绝对不能让一个坏的产品上线。因为通常是一个坏的产品上线会给用户的体验带来极大的不好的影响,而这个不好的影响会非常大程度的影响到我们的日活以及留存。你要知道在现实生活中,我们把留存或者把日活提升一个百分点都已经是一个非常了不起的优化了,但是通常要实现百分之一的留存率。人都需要花费很长时间,也很大精力,但是你如果想要留存下降一个百分点的话,可能就是一瞬间的事情。所以第一类错误通常是我们在实际工作当中所更加不能接受的。


05、ab测试的实施流程


接下来一个问题,就是对于ab测试的实施流程的问题。那么我觉得这个问题对于很多还没有真正工作,或者说没有切实接触过ab实验的同学来说,可能有一定的难度。

一般在开始实验之前,我们所需要做的第一步是和相关的PM进行沟通,确定这个实验所要验证的改动点在哪里。那么在确认这个点之后,会有分析师去确认在这个实验当中所需要去观测的一些核心指标。那么在确定完核心指标之后,下一步就是对于样本流量的确认,我刚才也提到了,可能一般情况下我们只需要20万的用户就可以确认我们的实验结果是置信的。那么根据这个20万的绝对数值,我们会对应到我们所需要观测的用户群体,去确认这个流量比例是多少。

那么在设计完核心的指标以及实现流量之后,就需要和PM以及开发同学去确认可以开始实验,然后会有开发同学正式开始实验。那么在发版正式实验之前,一般会通过小流量去看一段时间的灰度实验。那么这个灰度实验的目的就是为了验证我们这个功能并不会造成什么特别极端的影响。那么在确认这个之后,然后会正式发版。然后通常情况下真实实验我们会给他一周,也就是七天左右的观测时间,来给这个用户一定反应的时间,然后在一周之后对这个实验去展开分析。

那么一般互联网大厂都是有自己的一个实验分析平台,最终会通过实验分析的数据整合成一篇实验报告,然后把实验报告反馈到开发同学那里,确认收益是显著的,然后最终会上线这个结论。这也就是我一般在参与ab测试过程当中所采用的一套流程。


06、ab测试的其他问题


除了我刚才所说到的几个比较核心以及常见的ab测试的问题之外,通常在面试当中可能还会出现一些比较难搞的问题,然后也比较难回答。这边也重点提醒一下大家。

首先第一个比较具体问题就是如果你发现ab测试的结果在统计上来说是显著,但是在实际中却不显著,这是为什么?那么有可能的原因就是因为我们在ab测试当中所选取的样本量过大,导致他和总体数据量差异很小,这样的话即使我们发现一个细微的差别,它在统计上来说是显著的,在实际的案例当中可能会变得不显著了。对应到我们的互联网产品实践当中,我们发现一个优化,它对于用户启动APP的等待实验的优化是0.0000001秒,那么这个数字可能在统计上来说P值很小,然后我们发现它是显著的,但是在实际之中用户是不可感知的。那么这样一个显著的统计差别,其实对我们来说是没有太大的实际意义的。所以这是第一个比较具体的问题。

那么第二个问题就是如果你发现你在ab测试当中你所选取的指标统计上来说都是不显著的,你该怎么去判断这个实验的收益。那么对于这种情况,我们所选取的一种通用的方式是将这个指标去拆分成每一天去观察。如果说它的变化曲线每一天实验组都高于对照组,即使他在统计上来说是不显著的,我们也认为其实在这样一个观测周期内,实验组的关键指标表现是优于对照组的,那么结合这样一个观测,我们最终也可以得出这个优化可以上线这样一个结论。

那么第三个比较注意的问题就是如果你在实践当中发现你所关注的核心指标有一个显著的提升,那这个优化就一定能够上线吗?对于这个问题来说,答案是不一定啊。就拿性能举个例子,比如说有的时候我们想要提升这个用户进行滑动时候的这种丝滑的感觉。但是这种优化可能是以用户等待内容展现的时间,作为一个代价来进行提升的。所以一个方面的优化可能会导致另一个方面的劣化。同时在做性能提升的时候,有可能还会对其他部门,比如说广告部门,或者说是直播部门产生一些负向的影响。而这些负向影响可能会直接导致公司收入的一个下降。所以我们在进行ab测试的时候,必须要综合评估所有方面的一些指标变动,同时对于收益和损失来做一个评估,才能确认这个优化可以最终上线。

最后在面试当中可能会存在一些关于ab测试的变式考法,所谓的变式考法,就是说面试官并不会直截了当的来告诉你说下面我要考一下你ab测试的掌握怎么样?一般情况下,当你的简历当中出现的比较多量化的结果的时候,面试官可能会问你,你会如何去验证这个数字的显著性?再比如说,当你在简历当中明确提到你所参与的某个项目,你的分析结果带来了一些显著的收益,那么面试官可能会问你,你会是如何验证这些收益?当出现以上信号的时候,我们就要知道面试官可能想考察你关于ab测试的知识了,但是比如说面试官问到每一个关于我们现在想要上线一个小改动,或者说要上线一个小调整,你会如何去验证这个调整的收益?你都用ab测试去进行回答的话,他可能会反问,ab测试是需要成本的,你不觉得每一次我们如果都需要通过一个ab测试去验证的话,成本过高吗?对于这种情况,你可以说如果只是验证一个小按钮或者一个小改动,我们可以在界面上去设置一个开关,用户可以通过开关的形式自行决定我采用哪一种方式。那么我们最后就可以通过这个开关的相关指标去判断用户对于哪一种形式又有更大的倾向性。或者有的时候我们可以去做一些用户调研,比如说通过访谈或者说是设计问卷的形式,去收集一些用户的反馈。或者他们关于这些小变动的体验,所以并不是每一个回答都是绝对的。有的时候你可能感觉面试官在故意刁难你,问你的明明是两个比较矛盾的问题,但是在这种情况下,其实面试官想考察的是你的一个思维的广度,在不同情况下,是不是知道能够学习更多的方式或者指标去分析这个问题。


以上就是数据分析面试过程中ab测试的可能会涉及的绝大部分内容了,应该是很干的干货了,码字不容易,如果觉得不错的话,不要忘了关注评论转发哈~

你可能感兴趣的:(【数据分析基础】数据分析面试中ab测试都考些啥?)