什么是AB测试?

通俗点理解,AB测试就是比较两个东西好坏的一套方法,这种A和B的比较在我们的生活和人生中非常常见,所以不难理解。具体到AB测试这个概念,它和我们比较哪个梨更大、比较哪个美女更漂亮、比较哪个工作更好之间有什么区别吗? 区别其实非常明显,从以下几个方面不难看出来:

  • 领域不同:AB测试的概念是在互联网中被提出来的,所以它有特定的应用领域。
  • 标准不同:AB测试需要比较产品的两个不同版本之间的优劣,但是评判要交给用户,不像我们生活中遇到的AB比较,基本都可以“自己拿主意”。

正是因为标准在“用户爸爸”那里,所以这个看起来很简单的AB比较就变得异常复杂。在我这个理科男眼里,凡是跟人有关的东西都更复杂,何况和千千万万人有关的产品。因此,为了比较A和B两个不同版本产品的优劣,AB测试这一套系统的方法被发明出来了。

上图是AB测试的一个直观解释。我们会随机给不同的人群提供两个不同版本的产品,然后通过收集用户反馈的数据进行统计分析,决定出哪个版本的产品更好。相信我们每个人都当过AB测试的小白鼠,细心的你不难在使用微信、抖音、高德、美团这些APP时发现一些端倪。

维基百科上给AB测试下了一个定义:

A/B testing is a way to compare two versions of a single variable, typically by testing a subject's response to variant A against variant B, and determining which of the two variants is more effective.

在我看来这跟啥也没说差不多,就是我上面“通俗理解”的翻译版本。AB测试属于那种一听就懂,一看就明白,一做就抓瞎的事。所以定义和概念不重要,实践才重要。幸运的是,前辈们已经帮我们总结了非常多的经验教训,而我作为知识的搬砖工,将会用几篇文章来和大家一起从零开始学习AB测试。

  • 互联网公民第一守则:不要重复造轮子。
  • 互联网公民第二守则:参照上一条。

为什么要做AB测试?

AB测试虽然思想简单但是非常有效,看了如下的几个好处你就明白为什么一定要做AB测试了:

  • 如果我们人工针对部分用户做调研,很难消除一些外部因素的影响,比如交通、天气、节日,而AB测试可以通过随机分配和对照的方式,有效消除这些影响。
  • 如果我们听取专家或研究机构的建议,众所周知,他们很可能出错。用户行为是个很复杂的事,具有潜在性,很多时候用户自己都不知道自己怎么想的,想要什么。
  • 让数据说话,而不是听老板的

    从零开始学AB测试:基础篇的更多相关文章

    1. 从零开始学AB测试:躲坑篇

      AB测试的原理很简单,只用到了最简单的统计假设检验,但表面的简单通常都隐藏着陷阱,这一点没有经过实践的摸爬滚打是不容易看到的,今天我就把前人已经踩过的坑,一共15个,给大家分享一下.在分享之前,大家脑 ...

    2. 小白学Docker之基础篇

      系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...

    3. 一起学Spring之基础篇

      本文主要讲解Spring的基础环境搭建以及演变由来,仅供学习分享使用,如有不足之处,还请指正. 什么是Spring ? Spring是一个开源框架,用来处理业务逻辑层和其他层之间的耦合问题.因此Spr ...

    4. 【Android Api 翻译1】Android Texting(2)Testing Fundamentals 测试基础篇

      Testing Fundamentals The Android testing framework, an integral part of the development environment, ...

    5. Android Texting(2)Testing Fundamentals 测试基础篇

      Testing Fundamentals The Android testing framework, an integral part of the development environment, ...

    6. Shell编程-条件测试 | 基础篇

      什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...

    7. 小朋友学Linux<一>基础篇

      Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...

    8. 新年在家学java之基础篇-高级类的特性

      继承 extends 子类的共性代码都是继承自父类的,每个子类只要写自己特有的代码 class 子类 extends 父类 继承提高了代码的复用性,提供了多态的前提,但是不要为了某个功能去继承 子类不 ...

    9. 新年在家学java之基础篇--循环&数组

      因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

    随机推荐

    1. Python——迭代器的几个高级用法

      本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第8篇文章. 今天我们依然介绍的是迭代器,不过介绍的是几个比较常用的高级用法,在实际场景当中非常实用,可以帮助我们大 ...

    2. JMX(Java Management Extension)学习

      目录 基本概念 MBean的种类 StandardMBean DynamicBean ModelMBean JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMX--No ...

    3. Building Applications with Force.com and VisualForce(Dev401)(十二):Implementing Business Processes:Automating Business Processes Part 1

      ev401-013:Implementing Business Processes:Automating Business Processes Part 1 Module Objectives1.Li ...

    4. OpenCV-Python 理解SVM | 五十五

      目标 在这一章中 我们将对SVM有一个直观的了解 理论 线性可分数据 考虑下面的图像,它具有两种数据类型,红色和蓝色.在kNN中,对于测试数据,我们用来测量其与所有训练样本的距离,并以最小的距离作为样 ...

    5. PyTorch 实战-张量

      Numpy 是一个非常好的框架,但是不能用 GPU 来进行数据运算. Numpy is a great framework, but it cannot utilize GPUs to acceler ...

    6. PHP7内核:源码分析的环境与工具

      本文主要介绍分析源码的方式,其中包含环境的搭建.分析工具的安装以及源码调试的基本操作. 一.工具清单 PHP7.0.12 GDB CLion 二.源码下载及安装 $ wget http://php.n ...

    7. 一、【Docker笔记】进入Docker世界

      ​ 我们平时判断一个电脑的性能主要看什么?磁盘读写?CPU的主频高低?还是内存的大小?可是作为个人使用者来说,这些参数高一些足够我们去使用了,可是对于一个大型系统甚至是超大型系统,当前的硬件是远远达不 ...

    8. redis的使用及配置

      linux环境下redis启动和管理 在redis根目录下执命令 快捷启动默认端口 ./redis-server ../redis.conf 启动redis管理端 ./redis-cli 清理缓存命令 ...

    9. Java 学习笔记 第一章:Java语言开发环境搭建

      第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

    10. SQL Server Profiler常用功能

      最近因调研Linq to object 和Linq to Entity的数据组合查询问题,需要用到Sql Server Profiler检测在数据上执行的语句,在调试sql语句时,给了很大的帮助. 这 ...