申请专栏作者 参展
投稿发布
您的当前位置:主页 > 机器学习 > 正文

ABtest 和假设检验、流量分配

来源: 时间:2019-04-22
请支持本站,点击下面的广告后浏览!

我们观测到的值,并不是我们需要的参数的真实值,而是真实值的估计(举个例子,平均值和期望);这也就意味着,估计可能是不准确的,ABtest 的结果可能是错误的。直观上说,样本越多,我们可能犯错的概率越小。我们梳理了这块儿的知识,做一个学习总结。 可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

实际业务中,我们定量下面几个问题: 可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

1)ABtest 是否置信

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

2)一组 ABtest 只需要多少样本就可以有显著性 可思数据-人工智能资讯平台sykv.com

3)怎么分配流量来进行多组 ABtest 计划,保证各组测试都能显著 可思数据-人工智能资讯平台sykv.com

ABtest 和假设检验

1)中心极限定理和正态分布,z 检验 可思数据sykv.com

中心极限定理说明,在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布(具体推导参考大数定理、中心极限定理)。

内容来自可思数据sykv.com

在样本数量比较大情况下,可以采用 z 检验。 内容来自可思数据sykv.com

ABtest 需要采用双样本对照的 z 检验公式。

可思数据-AI,sykv.com智能驾驶,人脸识别,区块链,大数据

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

2)H0、H1 假设和显著性、置信区间、统计功效 可思数据sykv.com

现在假设有 A、B 两个组,我们无法确定 A、B 两个组的差异究竟是某种误差引起的,还是客观存在的。所以假定:

可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

  • H0=A、B 没有本质差异
  • H1=A、B 确实存在差异

显著性  根据 z 检验算出 p 值,通常我们会用 p 值和 0.05 比较,如果 p<0.05, 我们就接受 H0,认为 AB 没有显著差异。 可思数据-人工智能资讯平台sykv.com

置信区间 是用来对一个概率样本的总体参数进行区间估计的样本均值范围,它展现了这个均值范围包含总体参数的概率,这个概率称为置信水平。

可思数据sykv.com,sykv.cn

双样本的均值差置信区间估算公式如下:

可思数据-AI,sykv.com智能驾驶,人脸识别,区块链,大数据

可思数据-人工智能资讯平台sykv.com

统计功效 power是说拒绝零假设(H0)后接受正确的 H1 假设概率。直观上说,AB 即使有差异,也不一定能被你观测出来,必须保证一定的条件(比如样本要充足)才能使你能观测出统计量之间的差异;否则,结果也是不置信的,具体的,可以参考下面这张图: 可思数据-人工智能资讯平台sykv.com

可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

统计功效的计算公式如下:

本文来自可思数据(sykv.com),转载请联系本站及注明出处

可思数据-人工智能资讯平台sykv.com

3)版本替代决策

可思数据sykv.com,sykv.cn

做完 ABtest 后,应该用上图中的置信区间,和期望收益比较,做版本替代决策。 可思数据sykv.com,sykv.cn

比如新版本的期望收益是 2%,而检验后置信区间是 [16%,20%],那我们有理由替换旧版本。

可思数据-AI,sykv.com智能驾驶,人脸识别,区块链,大数据

业务中,我们的 ABtest 检验工具如下图所示,算法人员选择 AB 组就可以一次计算完相关检验参数:

可思数据sykv.com,sykv.cn

可思数据-www.sykv.cn,sykv.com


ABtest 的流量分配

一个 ABtest 计划需要多大样本量?

可思数据sykv.com

假设双样本都有相同的标准差  并已有估计值,知道了 n1,以及双样本的均值差 (  );再假设 power=0.8,a=0.05,那么我们可以根据公式推导出最低样本量 n2: 可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

可思数据-www.sykv.cn,sykv.com

可以使用 Python 的 statsmodels 模块的相关方法来预估最低样本数,相关代码如下: 可思数据sykv.com,sykv.cn

from statsmodels.stats.power import NormalIndPower


def main():
    zpower = NormalIndPower()
    effect_size = (1145 - 1132) / 20000.0
    nobs1 = 1200000
    print zpower.solve_power(
        effect_size=effect_size,
        nobs1=nobs1,
        alpha=0.05,
        power=0.8,
        ratio=None,
        alternative='two-sided'
    ) 


main()

 

可思数据sykv.com

这个方法可以在指定其中一些参数的情况下,求解未知的一个参数,具体用法可以参考官方文档。 可思数据sykv.com

ABtest 的流量分配框架 可思数据sykv.com,sykv.cn

一般来说,会有不同层的多组 ABtest 要进行 (从 UI 到算法到策略等),所以常规是采用多层 ABtest 框架。但是也有独占流量这种类灰度测试(比如不想引入多组测试时敏感的互斥关系,或者版本改造比较大),所以层之外,又分成若干个独立域。 可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

可思数据sykv.com

多域多层 ABtest 框架 可思数据sykv.com

layer 之间要能独立,最好 layer 之间是完全的正交测试。域之间流量分配遵循独立对等原则。 可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

新加入一组 ABtest 遵循的流程,以及流量分配方案 可思数据-AI,sykv.com人工智能,深度学习,机器学习,神经网络

现在要新加入一组 ABtest,我们遵循以下流程:

内容来自可思数据sykv.com

1)判断是否开启独占测试,否则选择加入当前某个测试域;

可思数据sykv.com

2)根据历史经验估算;(如果不好估算,那么就做一次抽样测试先,提取出大概值然后估算) 可思数据-www.sykv.cn,sykv.com

假设 power=0.8,a=0.05。再采用前述的 ABtest 样本量估算方法,计算得出需要的最低样本量 n; 本文来自可思数据(sykv.com),转载请联系本站及注明出处

3)根据最低样本量 n,判断是否需要扩充当前域的流量。由于新测试将减少旧测试所得样本量,所以为简单计,倾向于直接从主流桶中分配 r 个单位的流量进当前域,使: 内容来自可思数据sykv.com

sum(r) == n

可思数据sykv.com,sykv.cn

从而满足新旧测试的量需求;

可思数据sykv.com,sykv.cn

4)完成配置,发布版本,上线新测试。 可思数据sykv.com,sykv.cn


另外一个问题,如果一组 ABtest 效果显著有效,也不见得就能说明 ABtest 是可信的。毕竟当前的样本分布,无法代表未来的样本分布。所以,我们应该做多久的 ABtest 才可以接近真实分布呢? 这看起来没有答案,就跟我们没法有效预测单只股票的涨跌一样,也许只能在长时间周期中做完多个窗口的轮动回测,才能得到心里安慰吧 可思数据-数据挖掘,智慧医疗,机器视觉,机器人sykv.com

参考文献: 可思数据sykv.com,sykv.cn

A/B Testing Tech Note: determining sample size

可思数据sykv.com,sykv.cn

大数定理和中心极限定理http://staff.ustc.edu.cn/~zwp/teach/Prob-Stat/Lec11_slides.pdf 可思数据sykv.com,sykv.cn


转发量:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
数据标注服务

关于我们   免责声明   广告合作   版权声明   联系方式   原创投稿   网站地图  

Copyright©2005-2019 Sykv.com 可思数据 版权所有    ICP备案:京ICP备14056871号

人工智能资讯   人工智能资讯   人工智能资讯   人工智能资讯

扫码入群
咨询反馈
扫码关注

微信公众号

返回顶部
关闭