很多人都对ABtest非常熟悉,面试的时候也是经常考查的重点。以下本大三弱鸡在学习以及被面试毒打过程中总结的ABtest笔记,如果有错误欢迎各位大佬指正。
文章目录
-
- AB检验的流程
- AB检验的理论支撑
- 最小样本容量的选择
- AB检验的优缺点
- AB测试要注意的地方
- AB实验出现数据波动怎么办
- AB测试面试考点
AB检验的流程
- 选取分组的方式
- 可以是单纯地随机选择
- 按照用户id的尾号奇数偶数选择
- 根据聚类算法对用户进行聚类,在不同聚类中按照一定比例进行随机选择。
- 独立域或者共享域的数据选取
独立域: 独立域的数据只能够进行一组ABtest实验,该域数据独立不共享其他实验,故名独立域,通常用于比较重要易受其他实验组影响的实验项目
共享域: 共享域与独立域相反,共享域中的数据可以同时进行多组实验,但建议不超过7组。
- 如果该项目比较重要可以考虑选取独立域的数据,意味着该数据只能有这一个测试项目
- 项目没有非常重要,就纳入共享域的数据,一批数据同时进行多组AB实验,但是要按照AB测试时间从前到后排。比如时间顺序排在第一个的测试项目的A组从原数据中选取80%的数据,B组从原数据中选取20%的数据。排在第二个的测试项目的A组从(第一个测试项目的A组+B组)中选取80%数据,B组从(第一个测试项目的A组+B组)中选取20%数据。排在第三个的测试项目的A组从(第二个测试项目的A组+B组)中选取80%数据,B组从(第二个测试项目的A组+B组)中选取20%数据。(但是共享域中同时进行的实验组最好不要超过七个。)
- AA检验
AA检验也就是把A组中的数据从中取一部分进行数据对比,如果数据接近那么说明A组实验数据没有出现选取不当的现象,AB检验的数据就是有效的
- AB实验
AA检验过后正式进行AB检验
- 效果分析
如果A组(对照组)的均值大于B组(实验组)的均值,那么说明该次实验改动效果不理想,直接就证明了实验组的效果没有显著性影响。如果A组的数据均值小于B组数据的均值,那么就进行假设检验。
进行假设检验时,我们可以通过参考这张图判断选择哪种假设检验方法。
一般情况下,绝对值指标用T检验,相对值指标用Z检验。因为绝对指标的的总体方差,需要知道每一个用户的值,这个在AB实验中肯定不可能。而相对值指标是二项分布,可以通过样本量的值计算出总体的值,就如同10W人的某页面点击率是10%,随机从这10W人中抽样1W人,这个点击率也是10%一样。
但是我们要注意,进行假设检验时容易出现两类错误。对于第一类错误(拒真),我们要尽可能降低,然后在一定的显著性水平下(5%,1%等等),增加样本的容量,降低第二类错误犯错的概率(样本容量直接影响第二类错误犯错的概率),直到检验效能到达80%以上即达到最低样本容量的要求(当然容量多的话效果也会越好),即可以开始假设检验。
AB检验的理论支撑
中心极限定理和假设检验:ABTest检验的目的是估计总体的特征,主要通过抽样来对总体特征进行估计,因为总体的特征难以估计,所以假设检验的基本思想是基于“小概率事件”的思想,即小概率事件在一次事件中就基本不可能发生,基于这个前提,利用反证法提出假设-抽样统计-计算小概率事件发生的概率-做出判断。
最小样本容量的选择
通常情况下,在样本容量相同时,降低第一类错误犯错的概率,必定会增加第二类错误犯错的概率。所以我们先尽可能地降低第一类错误犯错的概率,做接受真值的判断。然后在一定的显著性水平下,调整样本容量的大小。当样本容量越大,第二类错误犯错的概率越低,检验效能越大。通常设立检验效能为80%,当检验效能达到80%时,对应的样本容量就是对应的最小样本容量。
AB检验的优缺点
- 优点:能够更加科学地阐述项目的效果,避免人为因素的干扰。
- 缺点:对样本容量比较敏感,并且有一定要求。并且容易受到其他同时进行地实验组的影响而可能无法达到预期的效果。
AB测试要注意的地方
- 不要过早停止AB测试
- 样本量要达到最低要求
- 测试要以整周为单位运行
- 始终关注外部因素
- 没有流量也强行进行AB测试
- 不能只关注平均值
- 不能一次测试失败就放弃
- 不要一次测试过多的版本
- 选择偏差
AB实验出现数据波动怎么办
- 增加样本容量
- 可能是刚上线不久,拉长时间先看看?
- 系统出现了bug?
- 外界因素影响?(老板绯闻,公关危机,平台故障等等)
- 分组样本选取不当
AB测试面试考点
某部门盈利主要靠广告收入,旗下分别有产品A和产品B来投放广告。通过一段时间观察,假设产品A和产品B的CTR都提升了,但是整体的CTR却下降了,这是为什么呢?
- 假设产品A的CTR=3/100=3%
- 假设产品B的CTR=1/100=1%
- 总体CTR=(3+1)/(100+100)=4%
一段时间后,假设产品A和产品B的CTR都有了上升,但是是这种情况的上升,就会导致整体CTR下降
- 上升后产品A的CTR=10/100=10%
- 上升后产品B的CTR=20/1000(流量猛增)=2%
- 总体CTR=(10+20)/(100+1000)=2.72%
如果实验组效果优于对照组就一定能上线吗?
不一定,实验组就算优于对照组,我们也需要评估该实验是不是造成了其他的负面影响。例如我们又花了整体的产品视觉效果,但是这种优化却是以用户等待时长为代价。这种情况下,我们需要去权衡收益。
如果ABtest结果不显著,怎么判断实验收益呢
- 拆分到天维度。 如果实验组指标每一天都高于对照组,那么我们就认为实验结果应该是显著的(理论依据为RunTest),这时我们就可以再计算一下实验组指标对比对照组的增幅是多少,如果增幅达到预期,那么就可以上线我们的优化。
- 拆分群体。 同一实验对于不同人群的影响其实是不一样的(虽然理论上总是假设是一样的,但往往这种理论假设都不成立),所以当整体实验组和对照组不显著的前提下,我们可以把实验组和对照组中的人群特征单独拆分来分析。
从统计学的角度述下p值的定义 (字节面试题)
p值是原假设成立HO的前提下,出现比所观察到的样本结果出现更极端情况的概率,主要作用是判断原假设是否成立和评估测试结果显著性。若p值很小,说明原假设前提下,样本结果出现的概率很小,若小于显著性水平0 则表明小概率事件发生,则应拒绝原假设。同时,D值如果越小,则越说明测试结果显著,更为置信。
如何保证ABTest中的数据置信度?
- 实验环境不变性: 为了防止实验环境变化引起的实验结果偏误而需引入对不变指标的观测。在实验开始前,应先设置好不变指标,如DAU等,同时统计不变指标的基线数据。在实验数据分析阶段,应首先对不变指标进行区间估计来评估事件过程中该指标的变化。
- 分流科学性: A、B样本量一致,且样本特征一致。样本量一致是为了防止辛普森偏误,样本特征一致是为了控制变量。通常样本量一致较好控制,而样本特征一致性则是通过流量分桶算法(Hash)来保证,同时也可以通过AA实验来验证是否一致。
- 摒除新奇效应: 一般实验刚上线时,实验组的表现要比对照组好,这可能是新奇的事物对用户更有吸引力但是如果过一段时间,很可能两组数据表现差异不大。因此在做评估的时候,需要观测指标稳定后,再做评估。
今天就暂时分享到这里(主要是本学渣想不出来了),要是还有其他的意见欢迎随时评论区交流补充哇哇