内容概览:
A/B测试
A/B Test简介:
简单的说,A/B测试是在同一时间段内,给多组特征相同的用户展示优化前(对照组)与优化后(实验组)的产品,通过实验组和对照组关键指标的数据分析,验证一个新的产品的交互设计,产品功能或策略,算法的效果,得出效果是否复合预期的结论。A/B测试可以科学的检验变更的好坏,是精细化运营的必备手段
A/B测试的流程
- 建立实验目标,收集数据并发现问题,提出变更假设:通常为了实现某一数据指标的提升,通过用户调研,竞品调研,技术调研等方法进行数据分析,归纳整理,再根据数据分析的结果提出变更假设。
-
实验设计:主要分四步:确定检测指标,确定实验受众,确定样本量以及确定实验时长
1)确定检测指标:围绕核心指标及流程性指标进行指标监测体系建立
2)确定实验受众:主要关于实验展开的用户的特征的确定
3)确定样本量:可以通过对当前版本的转化率以,预期的转化率及显著性水平的设定,获得每组实验需要的样本数量。网址可参考:https://www.eyeofcloud.com/124.html
4)确定实验时长:通常由样本量的水平以及参与实验的人数来确定实验时长。 - 功能开发,开始试验:将实验目的,实验假设,实验方案及流量配置等信息反馈开发完成功能优化,同时展开实验
- 数据收集,分析评估:通过显著性假设检验,对核心指标数据进行数据分析,判断变更是否能显著性达到预期目标。如果通过则发布产品,否则重新设计实验。
显著性假设检验
- 假设检验的基本原理:小概率事件在一次抽样中几乎不可能发生。通过正态总体分布定理,构造检验统计量,再根据显著性水平以及检验统计量的分布类型确定拒绝域及接受域,判断当假设H0成立时检验统计量的范围,来决定是否接受假设H0.
- 零假设与备择假设:一种叫原假设,也叫零假设,用H0表示。原假设一般是统计者想要拒绝的假设。另外一种叫备择假设,用H1表示。备则假设是统计者想要接受的假设。
- 单侧检验与双侧检验:备择假设没有特定的方向性,形式为“≠”这种检验假设称为双侧检验;备择假设带有特定的方向性 形式为">""<"的假设检验,称为单侧检验 "<"称为左侧检验 ">"称为右侧检验。
-
弃真错误与取伪错误:
1)弃真错误也叫第I类错误或α错误:它是指 原假设实际上是真的,但通过样本估计总体后,拒绝了原假设。这个错误的概率我们记为α。
2)取伪错误也叫第II类错误或β错误:它是指原假设实际上假的,但通过样本估计总体后,接受了原假设。这个错误的概率我们记为β。
3)当样本空间固定的情况下,弃真错误与取伪错误不可能同时都很小。通常我们会控制第一类错误的概率,因而H0通常会设置要拒绝的假设。 - 显著性水平α:显著性水平是指当原假设实际上正确时,检验统计量落在拒绝域的概率,简单理解就是犯弃真错误的概率。
- 拒绝域与接受域:通过显著性水平以及检验统计量的分布情况,可以得到相应的分位点,以分位点作为接受域与拒绝域的界限,此外临界值计入拒绝域。分位点计算网址参考:https://goodcalculators.com/z-score-calculator/
-
假设检验的步骤:
1)提出原假设与备择假设
2)构造检验统计量,检验统计量可依据正态总体抽样分布定理构造检验统计量。
3)通过显著性水平以及检验统计量确定接受域与拒绝域
4)检验统计量的范围确认,得出拒绝H0或者接受H0 -
检验类型与检验统计量:
1. 单正态总体的假设检验
1)样本总体 >30 的检验:
2)样本容量 <30 的检验:
3)总体成数的检验
样本成数:样本中具有某一相同标志表现的单位数占样本容量的比重,记为p
总体成数:总体中具有某一相同标志表现的单位数占全部总体单位数的比重,一般用π表示
2. 双正态总体的假设检验
1)双样本总体 >30 的检验:
2)总体成数的假设检验
当n1P1、n1(1-P1)、n2P2、n2(1-p2)都大于或等于5时,就可以称为大样本
2.1)原假设为π1-π2 =0这种类型
检验统计量:
2.2)原假设为π1-π2 =d0(d0≠0)这种类型
检验统计量:
案例:支付宝营销策略效果分析
1. 背景:
广告收入与平台佣金是支付宝收益的重要渠道之一,提升支付宝广告的点击率不但可以获取广告费用,同时对服务产品的付费率也有很大的帮助。为了进一步提高广告的点击率,平台设计了两种营销策略进行A/B测试,通过对测试结果显著性假设检验分析确定营销策略的使用。
2. 实验目的:
分析营销策略一与策略二能否实现广告点击率提升一倍。
3. 数据来源
数据来自阿里云天池:https://tianchi.aliyun.com/dataset/dataDetail?dataId=50893
4. 数据分析
import pandas as pd
import numpy as np
import matplotlib as plt
4.1 数据导入:
# 导入数据,并设置表头
data = pd.read_csv('audience_expansion/effect_tb.csv',header = None)
data.columns = ['dt','user_id','label','dmp_id']
data = data[['user_id','label','dmp_id']]
data.head()
4.2 数据清洗
- 观察数据
# 查看数据
data.info()
data.describe()
数据类型无需处理
user_id,label,dmp_id三列数据均相同,无空值
- 重复值查看
# 查看是否有重复值
data[data.duplicated(keep = False)].shape
有25966条重复信息
- 删除重复值
# 删除重复值,保留第一个值
data = data.drop_duplicates(keep = 'first')
4.3 假设检验
1. 确定样本所需容量
通过当前的广告点击率,目标广告点击率,显著性水平确定样本所需容量
# 当前广告点击率:
round(data[data['dmp_id'] == 1]['label'].mean(),3)
# 目标广告点击率
round(2 * data[data['dmp_id'] == 1]['label'].mean(),3)
当前广告点击率为:0.013,目标广告点击率为:0.025,显著性水平设定为0.05
经计算,各样本容量至少应为1400
各组样本空间为
data['dmp_id'].value_counts()
2. 各组广告点击率
# 当前广告点击率:
data[data['dmp_id'] == 1]['label'].mean()
# 策略一对照组广告点击率
data[data['dmp_id'] == 2]['label'].mean()
# 策略二对照组广告点击率
data[data['dmp_id'] == 3]['label'].mean()
当前广告点击率为:0.0126
策略一对照组广告点击率为:0.0153
策略二对照组广告点击率为:0.0262
目标广告点击率为:0.025
显然策略一未达到目标点击率,目标而达到目标点击率
通过显著性假设检验,查看策略二是否显著
3. 提出零假设与备择假设
零假设 H0:P1 >= P2
备择假设 H1:P1 < P2
4. 构造检验统计量
# 用户数
# 对照组样本量
n_p1 = len(data[data['dmp_id'] == 1])
# 策略二样本量
n_p2 = len(data[data['dmp_id'] == 3])
# 点击数
# 对照组点击数
label_p1 = len(data[(data['dmp_id'] == 1) & (data['label'] == 1)])
# 策略二点击数
label_p2 = len(data[(data['dmp_id'] == 3) & (data['label'] == 1)])
# 点击率
# 对照组点击率
rate_p1 = label_p1 / n_p1
# 策略二用户数
rate_p2 = label_p2 / n_p2
# 合并点击率:总点击数/总用户数
rate_p1p2 = (label_p1 + label_p2) / (n_p1 + n_p2)
# 检验统计量
z_p1p2 = (rate_p1 - rate_p2)/np.sqrt(rate_p1p2*(1 - rate_p1p2)*(1/n_p1 + 1/n_p2))
z_p1p2
当零假设 H0:P1 >= P2为真时,检验统计量为-59.44
5. 确定分位点
单侧检验,显著性水平取0.05,通过Z检验查表得起分为点为:1.6448536
6. 检验统计量确认
根据备择假设值,为左侧检验,有正态分布的对称性可知,分为点为:-1.6448536
当检验统计量 < 分为点时,为拒绝域,反之为接受域
显然-59.45 < -1.6448536,拒绝假设H0,备择假设P1 < P2成立
5. 结论:
综上所述,两种营销策略中,策略一为达到实验目标,策略二达到实验目标。通过对策略二显著性假设检验,策略二对广告点击率有显著提升效果,因而在两组营销策略中应选择第二组进行推广。