摘要:确定分流方案使用各类平台分配流量。备择假设与零假设相反,即实验者希望证实的假设。虽然该数据集的统计结果与支付宝的实际规模有偏差,但不影响解决方案的适用性。选定统计方法由于样本较大,故采用检验。
本文全程干货,建议朋友们收藏后慢慢阅读!
另外,我主页上还有不少与ABTest和数据分析相关的博客,感兴趣的朋友可以再去看看,希望能给你带来收获!
ABTest类似于以前的对比实验,是让组成成分相同(相似)的群组在同一时间维度下去随机的使用一个方案(方案A、或者B、C…),收集各组用户体验数据和业务数据,最后分析出哪个方案最好。
PS: 先说一下,这里的实现步骤并非权威步骤,不是一定要这么划分。
要想充分搞懂ABTest,必须理解它的原理——假设检验。
在一个设计适当的 ABTest中,处理 A 和处理 B 之间任何可观测到的差异,必定是由下面两个因素之一所导致的。
假设检验是对 ABTest(或任何随机实验)的进一步分析,意在评估随机性是否可以合理地解释 A 组和 B 组之间观测到的差异。
这里需要介绍一下几个专业术语:
假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。小概率思想是指小概率事件在一次试验中基本上不会发生。反证法思想是先提出检验假设,再用适当的统计方法,利用小概率原理,确定假设是否成立。对于不同的问题,检验的显著性水平α不一定相同,一般认为,事件发生的概率小于0.1、0.05或0.01等,即“小概率事件”。但是,如果说你犯下第一类错误(即拒绝正确的假设: H 0 H_0 H0是真,但拒绝 H 0 H_0 H0)的成本越高,你的α值就要设置得越小。
接下来介绍假设检验的基本步骤:
如何选定统计方法?那就得判断你的样本统计量符合什么分布了。
上图就是判断一个样本统计量符合什么分布的流程图,非常nice!
下面呢,则是关于Z分布,T分布,卡方分布的简单了解,其中注意考虑多个总体问题时如何计算处理。
接下来再看一下这几种分布的概率密度分布图。
可以看出,T分布与标准正态分布(Z分布)都是以0为对称的分布,T分布的方差大所以分布形态更扁平些。
双侧检验:
单侧检验:
卡方分布:
拒绝域:
(卡方分布在左侧的拒绝域特别小,所以拒绝的区间的值也比较少),所以卡方检验的拒绝域一般
放在右侧。F分布同理。
项目来源:
https://tianchi.aliyun.com/dataset/dataDetail?dataId=50893
数据介绍:
从支付宝的两个营销活动中收集的真实数据集。该数据集包含支付宝中的两个商业定位活动日志。由于隐私问题,数据被采样和脱敏。虽然该数据集的统计结果与支付宝的实际规模有偏差,但不影响解决方案的适用性。
主要提供了三个数据集:
本分析报告的主要使用广告点击情况数据,涉及字段如下:
接下来正式开始实战。
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inlinedata = pd.read_csv("effect_tb.csv",header = None)data.columns = ["dt","user_id","label","dmp_id"] # 文件中没有字段名# 日志天数属性用不上,删除该列data = data.drop(columns="dt")data
data.info(null_counts = True)
查看数据统计情况,主要是看dmp_id。
data.describe()
接下来查看数据重复情况。
data[data.duplicated(keep = False)]
存在重复项,需要进行去重。
data = data.drop_duplicates()# 检查是否还有重复项data[data.duplicated(keep = False)]
从先前操作已知数据类型正常,接下来利用透视表来看各属性是否存在不合理情况。
data.pivot_table(index = "dmp_id",columns = "label",values = "user_id",aggfunc = "count")
从以上看出属性字段无异常取值,无需进行处理。
在进行ABTest前,需检查样本容量是否满足试验所需最小值。
这里需要借助样本量计算工具:https://www.evanmiller.org/ab-testing/sample-size.html
首先需要设定点击率基准线以及最小提升比例,我们将对照组的点击率设为基准线。
data[data["dmp_id"] == 1]["label"].mean()
对照组的点击率为1.26%,假设我们希望新的营销策略能够让广告点击率至少提升一个百分点,则算得所需最小样本量为2167。
data["dmp_id"].value_counts()
可得411107和316205远大于2167,满足最小样本量需求。
我们先查看一下这三种营销策略的点击率情况。
print("对照组: " ,data[data["dmp_id"] == 1]["label"].describe())print("策略一: " ,data[data["dmp_id"] == 2]["label"].describe())print("策略二: " ,data[data["dmp_id"] == 3]["label"].describe())
可以看到策略一和策略二相比对照组在点击率上都有不同程度的提升。
其中策略一提升0.2个百分点,策略二提升1.3个百分点,只有策略二满足了前面我们对点击率提升最小值的要求。
接下来需要进行假设检验,看策略二点击率的提升是否显著。
设对照组点击率为 p 1 p_1 p1,策略二点击率为 p 2 p_2 p2,则:
由备择假设可以看出,检验方向为单项检验(左)。
由于样本较大,故采用Z检验。此时检验统计量的公式如下: z = p 1 − p 2 ( 1 n 1 + 1 n 2 ) × p c × ( 1 − p c ) z= /frac{p_1-p_2}{/sqrt{( /frac{1}{n_1}+/frac{1}{n_2})/times p_c /times (1-p_c)}} z=(n11+n21)×pc×(1−pc)p1−p2其中 p c p_c pc为总和点击率。
# 用户数n1 = len(data[data.dmp_id == 1]) # 对照组n2 = len(data[data.dmp_id == 3]) # 策略二# 点击数c1 = len(data[data.dmp_id ==1][data.label == 1])c2 = len(data[data.dmp_id ==3][data.label == 1])# 计算点击率p1 = c1 / n1p2 = c2 / n2# 总和点击率(点击率的联合估计)pc = (c1 + c2) / (n1 + n2)print("总和点击率pc:", pc)
# 计算检验统计量zz = (p1 - p2) / np.sqrt(pc * (1 - pc)*(1/n1 + 1/n2))print("检验统计量z:", z)
这里我去 α /alpha α为0.05,此时我们利用python提供的scipy模块,查询 α = 0.5 /alpha=0.5 α=0.5时对应的z分位数。
from scipy.stats import normz_alpha = norm.ppf(0.05)# 若为双侧,则norm.ppf(0.05/2)z_alpha
z α = − 1.64 z_/alpha = -1.64 zα=−1.64, 检验统计量z = -59.44,该检验为左侧单尾检验,拒绝域为{z< z α z_/alpha zα},z=-59.44落在拒绝域。
所以我们可以得出结论:在显著性水平为0.05时,拒绝原假设,策略二点击率的提升在统计上是显著的。
假设检验并不能真正的衡量差异的大小,它只能判断差异是否比随机造成的更大。因此,我们在报告假设检验结果的同时,应给出效应的大小。对比平均值时,衡量效应大小的常见标准之一是Cohen’d,中文一般翻译作科恩d值: d = 样 本 1 平 均 值 − 样 本 2 平 均 值 标 准 差 d=/frac{样本_1平均值-样本_2平均值}{标准差} d=标准差样本1平均值−样本2平均值
这里的标准差,由于是双独立样本的,需要用合并标准差(pooled standard deviations)代替。也就是以合并标准差为单位,计算两个样本平均值之间相差多少。双独立样本的合并标准差可以如下计算: s = ( ( n 1 − 1 ) × s 1 2 + ( n 2 − 1 ) × s 2 2 ) n 1 + n 2 − 2 s=/frac{((n_1-1)/times s^2_1+(n_2-1)/times s^2_2)}{n_1+n_2-2} s=n1+n2−2((n1−1)×s1
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122018.html
摘要:且本小白也亲身经历了整个从小白到爬虫初入门的过程,因此就斗胆在上开一个栏目,以我的图片爬虫全实现过程为例,以期用更简单清晰详尽的方式来帮助更多小白应对更大多数的爬虫实际问题。 前言: 一个月前,博主在学过python(一年前)、会一点网络(能按F12)的情况下,凭着热血和兴趣,开始了pyth...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:财富管理专场上,蚂蚁金服微贷事业群高级前端技术专家王卓做了主题为蚂蚁微贷互动营销技术体系实践的精彩分享。通过互动技术,最终实现拉新,留存和促活等目标。营销技术方案对接研发平台,通过凤蝶系统和研发管理体系进行打通。 摘要:以数字金融新原力(The New Force of Digital Finance)为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办。财富管理专场上,蚂...
摘要:月日,第六届大会在深圳召开。这是这次大会的第二站活动,第一站已在上海成功举办。深圳站视频及,请在公众号后台回复,获取分享链接。据介绍,目前支持多种开发库,如内置和等。该协议的推出,是为了统一标准,提高效率。 本文为 PyChina 和「编程派」联合首发,作者为 EarlGrey。「编程派」是一个专注 Python 学习交流的微信公众号。 9 月 25 日,第六届 PyCon China...
阅读 994·2023-04-25 19:35
阅读 2631·2021-11-22 09:34
阅读 3679·2021-10-09 09:44
阅读 1713·2021-09-22 15:25
阅读 2931·2019-08-29 14:00
阅读 3371·2019-08-29 11:01
阅读 2594·2019-08-26 13:26
阅读 1735·2019-08-23 18:08