很多人都对ABtest非常熟悉,面试的时候也是经常考查的重点。以下本大三弱鸡在学习以及被面试毒打过程中总结的ABtest笔记,如果有错误欢迎各位大佬指正。

文章目录

  • AB检验的流程
  • AB检验的理论支撑
  • 最小样本容量的选择
  • AB检验的优缺点
  • AB测试要注意的地方
  • AB实验出现数据波动怎么办
  • AB测试面试考点

AB检验的流程

  1. 选取分组的方式

    • 可以是单纯地随机选择
    • 按照用户id的尾号奇数偶数选择
    • 根据聚类算法对用户进行聚类,在不同聚类中按照一定比例进行随机选择。
  2. 独立域或者共享域的数据选取

独立域: 独立域的数据只能够进行一组ABtest实验,该域数据独立不共享其他实验,故名独立域,通常用于比较重要易受其他实验组影响的实验项目
共享域: 共享域与独立域相反,共享域中的数据可以同时进行多组实验,但建议不超过7组。

  • 如果该项目比较重要可以考虑选取独立域的数据,意味着该数据只能有这一个测试项目
  • 项目没有非常重要,就纳入共享域的数据,一批数据同时进行多组AB实验,但是要按照AB测试时间从前到后排。比如时间顺序排在第一个的测试项目的A组从原数据中选取80%的数据,B组从原数据中选取20%的数据。排在第二个的测试项目的A组从(第一个测试项目的A组+B组)中选取80%数据,B组从(第一个测试项目的A组+B组)中选取20%数据。排在第三个的测试项目的A组从(第二个测试项目的A组+B组)中选取80%数据,B组从(第二个测试项目的A组+B组)中选取20%数据。(但是共享域中同时进行的实验组最好不要超过七个。)
  1. AA检验

AA检验也就是把A组中的数据从中取一部分进行数据对比,如果数据接近那么说明A组实验数据没有出现选取不当的现象,AB检验的数据就是有效的

  1. AB实验

AA检验过后正式进行AB检验

  1. 效果分析

如果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实验来验证是否一致。
  • 摒除新奇效应: 一般实验刚上线时,实验组的表现要比对照组好,这可能是新奇的事物对用户更有吸引力但是如果过一段时间,很可能两组数据表现差异不大。因此在做评估的时候,需要观测指标稳定后,再做评估。

今天就暂时分享到这里(主要是本学渣想不出来了),要是还有其他的意见欢迎随时评论区交流补充哇哇

5分钟快速入门ABtest相关推荐

  1. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  2. thinkcmf搭建教程_5分钟快速入门

    # 5分钟快速入门 [TOC=1,5] ## 1.创建模板目录 在`public/themes/`目录下创建`quick_start`目录 ## 2.添加模板描述文件 在`public/themes/ ...

  3. 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门

    Vue.js--60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的 ...

  4. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

  5. Dart语言——45分钟快速入门(下)

    类和对象 类的定义 // Dart中定义一个类 class Person {String name;int age;Person(String name, int age) {this.name = ...

  6. 视频教程-.NET MVC5—60分钟快速入门学会《增删改查》-.NET

    .NET MVC5-60分钟快速入门学会<增删改查> 从事软件开发7年,熟悉软件开发流程,精通WEB系统程序开发.先后参与随州公安无纸化办公软件.速成会计财务管理软件.明源地产ERP等重大 ...

  7. 全网最详细中英文ChatGPT接口文档(六)30分钟快速入门ChatGPT——使用策略和API数据使用策略

    30分钟快速入门使用ChatGPT--使用策略和API数据使用策略 Usage policies使用策略 Disallowed usage of our models 禁止使用我们的模型 API da ...

  8. Vue-60分钟快速入门篇-下篇

    概述 上一篇我们重点介绍了组件的创建.注册和使用,熟练这几个步骤将有助于深入组件的开发.另外,在子组件中定义props,可以让父组件的数据传递下来,这就好比子组件告诉父组件:"嘿,老哥,我开 ...

  9. Dart语言——45分钟快速入门(上)

    文章目录 前言 视频课程 环境准备 安装Dart SDK 配置环境变量 配置 VSCode 编辑器 测试环境 基础语法 代码注释 内置数据类型 变量与常量 定义变量 定义常量 内置类型的常用操作 数值 ...

最新文章

  1. C语言 函数(做个笔记)
  2. Properties 配置文件参数 注入bean中
  3. Exception Handling Best Practices in .NET
  4. bltoolkit mysql_.NET 轻量级 ORM 框架 - Dapper 介绍
  5. Spring 依赖注入方式详解
  6. jbpm4.4+ssh配置
  7. Silverlight数据绑定之DataGrid
  8. flink查看operater链的中间结果+SingleOutputStreamOperator的用法
  9. random.next_Java Random next()方法与示例
  10. php免费根据ip查城市,根据ip获取城市的方法
  11. 【codevs2370】小机房的树,RMQ求LCA
  12. Hadoop1.0.4单节点StandAlone及Pseudo-Distributed部署方法
  13. Redis(九)-Redis的常用数据类型之Hash表
  14. 微服务架构下的统一身份认证和授权
  15. 使用python获取vCenter默认警报定义
  16. python license_怎么解决pycharm license Acti的方法
  17. matlab摩托车刹车问题,摩托车刹车你用对了吗?老司机都不一定会用后刹
  18. 关于springboot访问页面
  19. nginx $1,2,3的含义
  20. 下载iCloud照片/文件的正确姿势(亲测好使)

热门文章

  1. 成功解决ImportError: cannot import name ‘adam‘ from ‘tensorflow.python.keras.optimizers‘
  2. 星战前夜服务器维护时间,EVE星战前夜公测常见问题官方答疑汇总-公测问题官方QA...
  3. Mogafx欧元技术预测
  4. 【IC测试】整理下最近芯片测试过程中遇到的问题
  5. 大厂正在“去大厂化”
  6. asp微信现金红包系统发送系统一物一码刮开领红包系统
  7. HDU:6697-Closest Pair of Segments(空间内的最近线段)
  8. 微信公众号markdown编辑器
  9. NZT在线源安装教程
  10. STM32 CAN总线冲突故障的分析和解决