首页 > 编程语言 >python:一文带你搞懂AB测试

python:一文带你搞懂AB测试

时间:2023-01-15 10:06:05浏览次数:37  
标签:AB 版本 python df2 df 测试 搞懂 page


学习目标

  • 目标
  • 知道什么是AB测试
  • 知道AB测试的步骤
  • 知道AB测试原理

 

python:一文带你搞懂AB测试_数据分析

 

让我们想象一下,在公司的某产品研发讨论会上……

“这个功能要不要上?”

“我觉得没问题,XX指标肯定能涨一大截。”

“我不这么想,XX指标说不定也会受到影响,你不能只想着可能的收益呀。”

blahblah无限循环争吵中……

“好啦,别吵了,让我们开个AB看一下效果吧。”

当现在越来越多的app都已经日活百万千万,新功能是绝对不敢、也绝无必要轻易上线的。(因为一旦全量上线引起用户反感,损失不可估计。)这个时候,AB实验就成为了大型功能上线前的必备利器——进行小流量的测试,利用测试的效果来预估上线后的效果。

1.什么是AB测试?

随着移动互联网流量红利、人口红利的逐渐衰退,越来越多的产品运营开始关注数据驱动的精细化运营方法,期望通过精细化运营在一片红海中继续获得确定的用户增长,而A/B测试就是一种有效的精细化运营手段。

A/B测试 是为 web 或 app 界面或流程制作两个(A/B)或多个版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。

 

python:一文带你搞懂AB测试_机器学习_02

 

2008年奥巴马竞选美国总统的时候,有一个互联网团队专门负责竞选相关活动的线上产品,例如奥巴马的竞选募捐网站。这个网站最核心的目标是:让网站的访客完成注册并募捐竞选资金。这个团队当时做了一个非常成功的实验:通过对6个不同风格的主页进行AB测试,最优的版本将网站注册转化率提升了40.6%,而这40.6%的新增用户直接带来了额外的5700万美金募捐资金!

 

python:一文带你搞懂AB测试_大数据_03

 

2.AB测试举例

  • 案例1:相机拍照类应用

 

python:一文带你搞懂AB测试_数据分析_04

 

以Camera360为案例,它选用Testin A/B测试服务帮助其进行产品优化决策。该案例是其产品商业化过程中的一个尝试,希望提升商店中表情包或道具的付费比例,但要完成付费指标,首先要提升商店入口点击率。所以,他们设定了多个商店入口方案(更改图标样式、文案),通过A/B测试来验证哪个方案可以最大化提升商店入口点击率。在验证过程中,他们也针对人群目标做了相关定向测试,如日本、中国、韩国等区域,最终他们针对这一入口同时上线7~8个测试版本,通过A/B测试,将整体点击率提升了80%左右。

  • 案例2

 

python:一文带你搞懂AB测试_人工智能_05

 

试验目标:期望通过更改签到按钮的文案提高签到的人数,从而提高留存率。 试验过程:签到按钮文案试验,流量第一天两个版本各5%,第二天无错误后调节成50%原始版,50%新版本

 

python:一文带你搞懂AB测试_数据分析_06

 

  • 新版本签到按钮平均点击次数高于原始版本
  • 新版本的签到次数比原始版本签到次数提高4.17%

95%置信区间结果显示小范围人群的试验结果推广到全量用户之后,有95%概率获得1.7% 至 6.6%的提升;p-value小于0.05,显示新老版本有显著统计差异。

  • 案例3:文案修改提升购买率

 

python:一文带你搞懂AB测试_大数据_07

 

A/B测试目的:提升购买率指标

A/B测试实验设计:

  1. 对用户来说,核心触发是预期收益率后边的引导按钮。
  2. 经过团队头脑风暴,认为用户在感知“理财”、“存入”两者之间会有不同考量。一部分团队成员倾向于理财文案,另一部分提出新的想法,“存入”文案更能降低用户对“理财”本身的风险意识。
  3. 设计了两个版本,用立即理财,与立即存入两个文案。
  4. 实验进行2周,并得出显著性结果。

 

python:一文带你搞懂AB测试_机器学习_08

 

可见,实验存在显著性差异。同时转化率提升15.45%,并且置信区间在客户能接受范围内。该实验,取得成功。

3.A/B测试的好处

  • 消除客户体验(UX)设计中不同意见的纷争,根据实际效果确定最佳方案;
  • 通过对比试验,找到问题的真正原因,提高产品设计和运营水平;
  • 建立数据驱动、持续不断优化的闭环过程;
  • 通过A/B测试,降低新产品或新特性的发布风险,为产品创新提供保障。

4.AB测试的基本步骤

AB测试是一个反复迭代优化的过程,它的基本步骤如下图所示可以划分为:

 

python:一文带你搞懂AB测试_大数据_09

 

1)现状分析并建立假设:分析业务数据,确定当前最关键的改进点,作出优化改进的假设,提出优化建议;比如说我们发现用户的转化率不高,我们假设是因为推广的着陆页面带来的转化率太低,下面就要想办法来进行改进了

2)设定目标,制定方案:设置主要目标,用来衡量各优化版本的优劣;设置辅助目标,用来评估优化版本对其他方面的影响。

3)设计与开发:制作2个或多个优化版本的设计原型并完成技术实现:

 

python:一文带你搞懂AB测试_人工智能_10

 

4)分配流量:确定每个线上测试版本的分流比例,初始阶段,优化方案的流量设置可以较小,根据情况逐渐增加流量。

 

python:一文带你搞懂AB测试_数据分析_11

 

5)采集并分析数据:收集实验数据,进行有效性和效果判断:统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。

 

python:一文带你搞懂AB测试_python_12

 

北极星指标(North Star Metric),也叫作第一关键指标(One Metric That Matters),是指在产品的当前阶段与业务/战略相关的绝对核心指标,一旦确立就像北极星一样闪耀在空中,指引团队向同一个方向迈进(提升这一指标)。

6)做出决策:根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验

5.A/B测试的原理——假设检验

 

python:一文带你搞懂AB测试_数据分析_13

 

因为AB测试是检验来自两个组样本平均数的差异性,从而判断它们各自代表的总体的差异是否显著,因此使用的是 两个总体均值之差的检验

统计量:

 

python:一文带你搞懂AB测试_数据分析_14

 

6.AB测试案例

6.1 案例背景

某公司给网站投放广告的时候,一开始给用户看到的落地页是访问课程资料,现在公司又推出了开始免费试学这个落地页,现在需要检验新落地页是否优于旧的落地页。

假设:新落地页的转化率优于旧落地页

制定方案、设计开发:已完成

分配流量:通过对userid进行hash,将用户分成两组old_page和new_page

采集数据:下面是测试的24天数据:

 

python:一文带你搞懂AB测试_python_15

 

user_id是用户的id; timestamp 是用户访问页面的时间; group 表示把新的落地页分到treatment组、把旧的落地页分到了control组; landing_page表示的是落地页; converted 表示的是否转化,1表示转化;

6.2 代码实现

  • 导包
python   import pandas as pd
  • 加载数据
# 读取数据,查看前5行   
df = pd.read_csv("ab_test.csv") df.head() # 数据预览,查看数据有多少行、多少列 df.shape
# 查看数据中是否有空值 df.isnull().any() df.info()
  • 去掉错误行

treatment和new_page对应,control和old_page对应,如果不对应,就是错误数据,需要去掉。

# 下面这句代码,展示的就是group=treatment且landing_page=old_page和group=control且landing_page=new_page,这样的错误行;   num_error = df[(df.group == "treatment")!=(df.landing_page == "new_page")].shape[0]   
num_error
# 去掉错误行后,再次查看是否还存在错误行
print("没有删除错误行之前的记录数:", df.shape[0])
df2 = df[(df.group == "treatment")==(df.landing_page == "new_page")]
print("删除错误行之后的记录数:", df2.shape[0])
print("错误行共有",str(df.shape[0]-df2.shape[0]),"条记录")
num_error2 = df2[((df2.group == "treatment")!=(df2.landing_page ==
"new_page"))].shape[0]
num_error2
  • 去除重复数据
# 查看是否有重复行  
print("数据的记录数为:", df2.user_id.shape[0])
print("将user_id去重计数后的记录数为:", df2.user_id.nunique())
# 去除重复的行
df3 = df2.drop_duplicates(subset=["user_id"],keep="first")
df3.shape[0]
  • 观察两组的转化率
A = df3.query('group=="control"').converted#对照组 
B = df3.query('group=="treatment"').converted#实验组
print('策略A的均值是:',A.mean())
print('策略B的均值是:',B.mean())

 

python:一文带你搞懂AB测试_python_16

思考一下:根据上述结果,老页面的转化率比新页面的转换率好,是不是就可以说明老页面好呢?

python:一文带你搞懂AB测试_人工智能_17

标签:AB,版本,python,df2,df,测试,搞懂,page
From: https://blog.51cto.com/u_8238263/6008218

相关文章

  • HarmonyOS初探03——DevEco Studio创建应用问题ERROR Unable to tunnel through proxy
    问题在内网环境下首次使用DevEcoStudio创建应用时,可能会报如下问题:ERROR:Unabletotunnelthroughproxy.Proxyreturns"HTTP/1.1403Openproxy_Blocked_URL_list"我......
  • FPGA中的Logic Cells, Logic Slices, Configurable Logic Blocks and Gates 的定义
    一个逻辑单元(logiccell) 包含了一个查找表,一个触发器和与附近单元的连接电路。查找表使用组合逻辑实现了一个4输入的逻辑表达式(与,或,与非,加等)。一个逻辑片(logicslice......
  • [硬核] Bootstrap Blazor Table 综合演示例子
    知识点:1.导入导出2.分页功能3.增删改查4.批量删除5.批量编辑(审核)6.列排序与列搜索7.顶部搜索实现所有列搜索8.高级搜索实现多条件搜索9.顶部与刷新与视图列10......
  • docker-compose部署zabbix
    前期准备工作新建必要文件夹mkdir-pzabbix/{etc,fonts}准备字体文件存放在./zabbix/fonts/下就可以不过名字必须叫DejaVuSans.ttf可以根据自己的需求,在windows......
  • 为什么你应该使用NumPy数组而不是嵌套的Python列表?
    在本文中,我们将向您展示为什么使用NumPy数组而不是嵌套的Python列表,以及它们之间的异同。PythonNumPyLibraryNumPy是一个Python库,旨在有效地处理Python中的数组。......
  • Python实现排序
    冒泡排序交换排序相邻元素两两比较大小,有必要则交换元素越小或越大,就会在数列中慢慢的交换并“浮”向顶端,如同水泡咕嘟咕嘟往上冒核心算法排序算法,一般都实现为就......
  • abc243 E - Edge Deletion
    题意:给定无重边无自环的带正权无向连通图,问最多删除几条边能保持所有点对的最短距离不变\(n\le300\)思路:删除边\(u\overset{w}{-}v\)当且仅当原图中存在其它路径的......
  • Python闭包和装饰器的学习
    之前看了不少的帖子,总是看了这篇帖子说的理解了,换篇帖子说的又不理解了,把人弄晕了,究其原因还是因为没有把底层原理理解。这两个概念总是放在一起说,两者之间肯定是有关系的......
  • Matlab笔记--Matlab概述(初登场)
    Matlab概述安装MATLAB教程可以参考这里:https://www.cnblogs.com/sixuwuxian/p/15858196.htmlMatlab的启动右键图标,选择属性,可以设置Matlab的启动目录Matlab的退出1、......
  • IntentGC-A Scalable Graph Convolution Framework Fusing Heterogeneous Information
    IntentGC-AScalableGraphConvolutionFrameworkFusingHeterogeneousInformationforRecommendation,KDD19基于异构图神经网络的推荐算法,ppt笔记......