AB测试实战(一)

简介: AB测试是一种数据驱动的产品优化方法,用于比较不同版本的网页、应用界面或营销策略的效果。

AB测试实战


1、AB测试介绍🐾


AB测试是为Web或App界面、流程设定两个或多个(A/B/n)版本,在同一时间维度下,分别让类似的客户群体随机访问这些版本,收集各群组的用户体验数据和业务数据,最后通过显著性检验分析评估出最优版本,并正式采用。简而言之,就是通过同时进行多个方案的测试,选出最佳版本。

AB测试的核心原理是假设检验,通过检验我们提出的假设是否正确来做出决策。在AB测试中,就是检验实验组和对照组的指标是否有显著差异。


1.1 AB测试的关键点:目标KPI和策略


  • AB测试,作为一种数据驱动的产品优化方法,其核心在于通过对比不同版本的策略或设计(通常称为A版本和B版本),来评估它们对关键性能指标(KPI)的影响。这种方法的关键在于明确目标KPI,并制定具有针对性的策略,以测试哪些变更能够显著提升用户满意度、增加转化率、减少跳出率或达到其他预定的业务目标。
  • 通过精心设计的AB测试,企业可以系统地评估不同策略的有效性,从而做出基于数据的决策,优化产品体验和业务结果。这不仅有助于提高产品的竞争力,还能为企业的持续成长和创新提供有力支持。


1.2 AB测试的作用


  • 优化用户体验:通过比较不同版本的界面、布局、按钮设计、文本内容等,找出用户更喜欢的版本,从而提升用户体验。
  • 提高转化率:AB测试可以针对网站的特定页面(如着陆页、购物车页面、注册页面等)进行测试,找出哪些设计或策略能更有效地吸引用户完成目标操作(如购买、注册、下载等),从而提高转化率。
  • 验证假设:在产品开发和市场策略中,经常会有各种假设。通过AB测试,可以验证这些假设是否成立,为产品迭代和市场策略调整提供数据支持。
  • 降低风险:在推出新产品或新功能之前,通过AB测试可以预先了解用户对新特性的反应,从而降低产品失败的风险。
  • 个性化推荐:通过AB测试,可以了解不同用户群体对不同内容或功能的偏好,从而为用户提供更个性化的推荐和服务。
  • 提升品牌忠诚度:通过优化用户体验和提高转化率,AB测试有助于提升用户对品牌的满意度和忠诚度。


1.3 AB测试实施的一般步骤


明确目标(KPI):


  • 清晰地定义测试的目标,比如提升转化率、点击率、分享率等。


  • 确定需要改进的具体点,如策略、算法、界面调整或功能调整。

确定样本量:


  • 通过假设检验或统计学的知识,估算出为了达到一定置信水平和效果提升所需的实验人数。


  • 考虑用户群体的特性和行为模式,确保样本具有代表性。

    分组(圈人):


  • 将用户随机分配到实验组(B组)和对照组(A组)。


  • 确保两组用户在人口统计特征、历史行为等方面尽可能相似,以消除其他潜在影响。

     AA测试(基准测试):


  • 在进行真正的AB测试之前,先进行一次AA测试,即两组用户都展示相同的内容或版本。


  • 观察两组用户在AA测试期间的KPI表现,确保没有显著差异,从而验证分组和流量分配的有效性。

     实施AB测试:


  • 对照组(A组)继续展示原始产品或功能。


  • 实验组(B组)展示新的产品或功能调整。


  • 监控两组用户的行为和KPI表现。


2、AB测试常见问题和应对方案🐾

2.1 如何分配流量🐣


一般采用A组B组人数相等的方法进行流量分配


常用的分流方法


  • 利用随机数排序,例如My SQL中的 rand()函数


select a.*,case when rand()<0.1 then 'ctrl'
when rand() between 0.1 and 0.55 then 'test1' else 'test2' end as ab_group_tag
from (select distinct customerID from user_table) a
order by ab_group_tag;


  • 利用某些随机ID的尾数,例如case when ID like ‘%1’then ‘Ctrl’else ‘Test’end as AB_group
select a.*,case when customerID like '1%' then 'ctrl'
when customerID like '2%' or customerID like '3%' or customerID like '4%' or customerID like '5%' then 'test1'
else 'test2' end as ab_group_tag
from(select distinct customerID from user_table) a 
order by ab_group_tag;


  • 不管用哪种方法都要在人群身上留好标签以便事后分析


2.2 确定试验有效的最小参与人数🐣


  • AB测试的效果会一定程度上受到随机波动的影响


  • 完全随机的两组人不发优惠券,观察同一段时间的人均交易数,人均交易额这些KPI,都不会完全一样
  • 为了使测试结果显著有效,我们首先要确保测试组里人数最少的一组达到验证效果有效性的最小样本数量
  • 帮助计算样本量的网站:https://www.evanmiller.org/ab-testing/sample-size.html


  • Baseline conversion rate: 这里填写基准比率 10%
  • Minimum Detectable Effect:这里填写最低的可探知效果2%
  • Significance level α:显著性水平 一般选择5%
  • Statistical power 1−β:统计功效(statistical power )一般选择80%
  • 经过计算得知,我们想通过AB测试确定新的策略能够将KPI提升两个点参数实验的每组人数最少为7678人


2.3 AB测试中的假设检验🐾


为什么要计算参与AB测试的最少参与人数🐣


  • 我们做AB测试的目的是在尽量不影响用户体验的前提下,让少部分用户来验证新旧方案的优劣。这里就需要对用户进行抽样, 也就是抽取部分用户来代表全体用户来参与实验,并得出结论
  • 如果抽取的用户数量过少,不能代表所有用户的观点,结果没有意义
  • 如果抽取的用户过多,一旦我们的新方案与预期效果偏差较大则会对用户体验带来较大影响
  • 我们可以使用假设检验的理论帮助我们计算参与实验的最少人数


什么是假设检验?


假设检验(hypothesis testing)是一种统计推断方法,用于判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的。假设检验是指从对总体参数所做的一个假设开始,然后搜集样本数据,计算出样本统计量,进而运用这些数据测定假设的总体参数在多大程度上是可靠的,并做出承认还是拒绝该假设的判断。


假设检验的基本思想


  • 假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。


  • 小概率思想是指小概率事件在一次试验中基本上不会发生。反证法思想是先提出检验假设,再用适当的统计方法,利用小概率原理,确定假设是否成立


  • 即为了检验一个假设H 0  是否正确,首先假定该假设H 0  正确,然后根据样本对假H 0 做出接受或拒绝的决策
  • 如果样本观察值导致了“小概率事件”发生,就应拒绝假设H 0 ,否则应接受假设H 0  。
  • 假设检验中所谓“小概率事件”,并非逻辑中的绝对矛盾,而是基于人们在实践中广泛采用的原则,即小概率事件在一次试验中是几乎不发生的


  • 概率小到什么程度才能算“小概率事件”,显然,“小概率事件”的概率越小,否定原假设H 0 就越有说服力,常记这个概率值为α(0<α<1),称为检验的显著性水平


  • 对于不同的问题,检验的显著性水平α不一定相同,一般认为,事件发生的概率小于0.1、0.05或0.01等,即“小概率事件” 。



AB测试中的假设检验


通过上面的例子我们对假设检验有了基本的了解, 接下来我们看一下如何在AB测试中应用假设检验


  • 原假设H 0 老的方案老的设计
  • 备择假设H 1 新的方案新的设计


在上面的例子中,实验的次数越多我们得到的结论就越准确,那么在AB测试中,实验的次数实际上就是参与实验的人数,我们可以通过设置显著性水平(Significance level) α来倒推参与实验的最少人数,具体计算可以通过上面给出的工具网站实现


显著性水平α : 依据实验结果做出推翻原假设(否定原方案) 选择备择假设(采用新方案) 的决定,犯错的概率, 一般设置为5%


统计功效(1−β): 依据实验结果做出保留原假设(保留原方案) 不选择备择假设(不采用新方案) 的决定,犯错的概率, 一般β设置为20% 那么1−β 为80%



2.4 AB测试与辛普森悖论


辛普森悖论为英国统计学家E.H.辛普森于1951年提出,即在某个条件下的两组数据,分别讨论时都会满足某种性质,可是一旦合并考虑,却可能导致相反的结论。



方案A(现有方案)转化率
方案B(新方案)转化率
Android 用户 70/800 = 8.75% 20/200 = 10%
iphone 用户 10/200 = 5% 50/800 = 6.25%
总用户 80/1000 = 8% 70/1000 = 7%


AB测试中产生辛普森悖论的原因:流量分割不均匀导致的实验组与对照组的用户特征不一致


AB测试中如何避免辛普森悖论


  • 要得到科学可信的 AB 测试试验结果,就必须合理的进行正确的流量分割,保证试验组和对照组里的用户特征是一致的,并且都具有代表性,可以代表总体用户特征。



方案A(现有方案)转化率
方案B(新方案)转化率
Android 用户 70/800 = 8.75% 80/800 = 10%
iphone 用户 10/200 = 5% 12/200 = 6%
总用户 80/1000 = 8% 92/1000 = 9.2%


  • 在实验设计上,如果我们觉得某两个变量对试验结果都有影响,那我们就应该把这两个变量放在同一层进行互斥试验,不要让一个变量的试验动态影响另一个变量的检验。如果我们觉得一个试验可能会对新老客户产生完全不同的影响,那么就应该对新客户和老客户分别展开定向试验,观察结论


  • 在试验实施上,对试验结果我们要积极的进行多维度的细分分析,除了总体对比,也看一看对细分受众群体的试验结果,不要以偏盖全,也不要以全盖偏。一个试验版本提升了总体活跃度,但是可能降低了年轻用户的活跃度,那么这个试验版本是不是更好呢?一个试验版本提升总营收0.1%,似乎不起眼,但是可能上海地区的年轻女性 iPhone 用户的购买率提升了20%,这个试验经验就很有价值了。



AB测试实战(二)+https://developer.aliyun.com/article/1544771?spm=a2c6h.13148508.setting.33.22454f0eHFZZj3

相关文章
|
15天前
|
测试技术 Python
AB测试实战(二)
AB测试是一种数据驱动的产品优化方法,用于比较不同版本的网页、应用界面或营销策略的效果。
|
25天前
|
设计模式 Java 测试技术
Java8实战-重构、测试和调试(二)
Java8实战-重构、测试和调试(二)
46 2
|
3天前
|
JavaScript 测试技术
vue 官方测试工具 unit-jest 实用教程(含实战范例:登录组件的测试)
vue 官方测试工具 unit-jest 实用教程(含实战范例:登录组件的测试)
5 0
|
8天前
|
消息中间件 缓存 中间件
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
|
2月前
|
测试技术 Apache Windows
如何使用apache的ab压力测试小工具传参数
该内容是关于在Windows环境下使用PHPStudy中的Apache集成的ab工具进行性能测试的简要教程。
39 9
|
24天前
|
前端开发 Java 测试技术
【SpringBoot】单元测试实战演示及心得分享
【SpringBoot】单元测试实战演示及心得分享
35 0
|
25天前
|
设计模式 算法 Java
Java8实战-重构、测试和调试(一)
Java8实战-重构、测试和调试(一)
16 0
|
2月前
|
开发框架 监控 Java
深入探索Spring Boot的监控、管理和测试功能及实战应用
【5月更文挑战第14天】Spring Boot是一个快速开发框架,提供了一系列的功能模块,包括监控、管理和测试等。本文将深入探讨Spring Boot中监控、管理和测试功能的原理与应用,并提供实际应用场景的示例。
36 2
|
2月前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
213 0
|
6天前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
14 1