abtest基本原理与框架一

author author     2023-05-13     510

关键词:

参考技术A 无法衡量就无法优化,对于互联网产品而言,不仅是推荐系统,整个 app 系统的更新迭代必然需要建立一套度量衡,来把控整个流程优化的方向。而 abtest 系统就是一个很好的进行变量控制和优化方向选取的工具,循环:衡量-发现-迭代-验证。所谓精细化迭代是一种建立在数据基础上的思维方式——用较少的成本获得较好的效果。无数据,不优化, 线上分流实验是进行推荐算法优化的必由之路。并且 abtest 不仅是推荐迭代的利器,他还可服务于所有需要逐步完善的产品迭代。有人说为什么需要 abtest ,为什么不能够前后进行实验比较;因为同时期测试的 abtest 非常有必要的原因是不同时间的测试无法说明 b 比 a 好,通常时间也是一个变量,比如电商的双十一等。

在网络分析中,A / B 测试(桶测试或分流测试)是一个随机实验,通常有两个变体,A 和 B 。利用控制变量法保持有单一变量的前提下,将 A 、B 数据进行对比,得出实验结论。AB 是一种科学的利用数据证明方案可行性的手段,一般在网站中广泛使用。通过 abtest 系统对迭代方案进行实验, 并结合数据进行分析,反向再验证和驱动方案,是一个发现问题、提出假设、印证猜想、不断优化的过程。合适的推荐方法是要经过不断的实验去验证,验证的过程也是在校验数据,从而优化推荐系统策略,最终提升用户新增和留存。

1. 指标定义

在 abtest 前,我们需要梳理出我们关心的若干指标,并选择某个指标作为北极星指标,如点击率、转化率、浏览时长、gmv 、客单价等,未来讨论的推荐系统的相关优化也将围绕若干个目标进行。也有人将核心的指标成为北极星指标,北极星指标经常在增长黑客中被使用。来自微软 Bing 的例子:Bing 希望优化长期查询份额 ( 市场中的查询百分比 ) 和长期收入。短期内,通过展示更多广告很容易赚钱,但它可能会损害用户体验。所以其实短期和长期指标的定义也很重要,如何通过 abtest 平衡和评估长短期收益。

2. 了解几个事实

不是每个想法都是好的、大部分想法都是不好的;Many times, we have to tell people that their new beautiful baby is actually…ugly 。

根据微软官方发布的上万次 abtest 实验数据来看:

1) 1/3 of ideas were positive ideas and statistically significant

2) 1/3 of ideas were flat:no statistically significant difference

3) 1/3 of ideas were negative and statistically significant

3. 实验管理平台

3.1 实验报告

实验报告需要对脏数据进行过滤,并做一定的效果平滑,效果波动告警。异常值会产生明显的偏差: 足以导致错误的统计结果。例:亚马逊上有围绕 100,000 名用户进行的 abtest 实验,其中 2% 的用户的客单价为 30 美元, 2% 的用户客单价是 1200 美元,有时 ( 很少 ) “用户”购买足以显着扭曲结果。

3.2 分流 & 分层策略

如果流量不进行分层、分流可能会导致流量饥饿,即实验一在进行中占用了全站的 80% 的流量,实验二就只能使用 20% 的流量。因此良好的分层、分流规则可以充分使用网站的流量。常见的分流策略有:Random – 随机分流,用于可变结果集,Partition By User – 按用户切分 ,同一用户永远看到同样结果,Partition By Category – 按分类切分,针对不同分类测试算法针对性。在分流的上层则会考虑分层,并且在互联网公司中应用广泛。

通常网站会利用分层和分流的机制保证本站的流量高可用,原因有以下几点:

1)网站的流量是有限的

2)实验的对象是多层的或同一层内互不干扰的。多层:例如网站不仅仅有UI层 ( 界面 ) ,通常还有算法层等;同一层内互不干扰:例如网站的推荐位有多个 ( 首页推荐位、商详页推荐位 ) 。

3)AB tests 的需求是大量的

注意点:幂等-均匀化-并行-互斥; 分层实验,促进流量的最大化利用。

规则 1. 正交、互斥

在介绍分层规则之前,先介绍一下正交和互斥的概念。

1)正交,如何理解正交?

例如:我们有 100 个兵乓球,随机拿出来 50 个染成蓝色,50 个染成白色,则我们有蓝色、白色兵乓球各 50 个,现在我们把这 100 个兵乓球重新放在袋子中摇匀,随机拿出 50 个兵乓球,那么这 50 个兵乓球颜色蓝色和白色各 25 。当然举这个例子并不是非常的恰当,因为样本太少了,此处举例只为说明正交的意义。

正交实验:每个独立实验为一层,层与层之间流量是正交的,一份流量穿越每层实验时,都会再次随机打散,且随机效果离散。

2) 互斥,如何理解互斥?

例如:我们有 100 个兵乓球,每 25 个为一组,分别染成蓝、白、橘、绿。若 X 实验拿的是蓝色、白色则 Y 实验只能拿橘色和绿色,我们说 X 实验的和 Y 实验是互斥的。

互斥实验:实验在同一层拆分流量,且不论如何拆分,不同组的流量是不重叠的。

其中,分流及分层实验设计基于 Goolge 论文:

Overlapping Experiment Infrastructure : More, Better, Faster Experimentation

https://dl.acm.org/citation.cfm?id=1835810

流量从上往下流过分流模型:

1)规则详述:

域 1 和域 2 拆分流量,此时域 1 和域 2 是互斥的。

流量流过域 2 中的 B1 层、B2 层、B3 层时,B1 层、B2 层、B3 层的流量都是与域 2 的流量相等。此时 B1 层、B2 层、B3 层的流量是正交的。

扩展:流量流过域 2 中的 B1 层时,又把 B1 层分为了 B1-1 ,B1-2 ,B1-3 ,此时 B1-1 ,B1-2 ,B1-3 之间又是互斥的。

根据以上规则我们可以不断的在此模型中增加域、层,并且可以互相嵌套。这要与实际的业务相匹配,拆分过多的结构可能会把简单的业务复杂化,拆分过少的结构又可能不满足实际业务。

2)使用场景

例1:B1 层、B2 层、B3 层可能分别为:UI 层、搜索结果层、广告结果层,这几层基本上是没有任何的业务关联度的,即使共用相同的流量 ( 流量正交 ) 也不会对实际的业务造成结果。但是如果不同层之间所进行的试验互相关联,如 B1 层是修改的一个页面的按钮文字颜色,B2 层是修改的按钮的颜色,当按钮文字颜色和按钮颜色一样时,该按钮已经是不可用的了。因此建议同一类型的实验在同一层内进行,并且需要考虑到不同实验互相的依赖。

例2:域 1 的此种分流的意义在于,当我们做一个实验,并且希望其他任何实验都不能对我实验进行干扰,保证最后实验的可信度。

3.3 AA/AB 测试要点

1)候选策略+预测模型作为最小的考察单元

2)通过规则配置 ABtest:配置流量切分,候选策略及预测模型

3)重视抽样误差

4)关注时间周期效应

3.4 流程

1)随机分组 ( ABCDE… ) :A - 控制组,与线上一致;B - 测试组;C ...

2)收集相关数据 ( 对决策有用的数据 )

3)数据分析,必须通过假设检验来确定差异不是来自于偶然,通过因果关系证明变化由测试桶的变化带来。

4. abtest 的那些技术

4.1 为什么灵敏度 ( p-value ) 很重要

p-value 即概率,反映某一事件发生的可能性大小,主要在 abest 中说明实验的提升的显著性,并且往往与假设检验相挂钩。统计学根据显著性检验方法所得到的 P 值,一般以 P < 0.05 为有统计学差异, P<0.01 为有显著统计学差异,P<0.001 为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于 0.05 、0.01 、0.001 。实际上,P 值不能赋予数据任何重要性,只能说明某事件发生的几率。在实践中建议,运行 A / A 测试,并同时也关注相关指标及 p-value 。A / A 测试中度量的 P-value 分布应该是统一的,进行 1,000 次 A / A 测试,并检查分布是否均匀,当我们得到异常信息时,则需要纠正一些事情。

4.2 假设检验

假设检验是推论统计中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组随机变量的模型进行检验的科学假说。一旦能估计未知参数,就会希望根据结果对未知的真正参数值做出适当的推论。统计上对参数的假设,就是对一个或多个参数的论述。而其中欲检验其正确性的为零假设 ( null hypothesis ) ,零假设通常由研究者决定,反映研究者对未知参数的看法。相对于零假设的其他有关参数之论述是备择假设 ( alternative hypothesis ),它通常反映了执行检定的研究者对参数可能数值的另一种 ( 对立的 ) 看法 ( 换句话说,备择假设通常才是研究者最想知道的 ) 。

常见假设检验的种类包括:t 检验,Z 检验,卡方检验,F 检验等等。

4.3 t-test、z-test、p-value、ci ( confidence interval )

1)T检验,亦称 student t 检验 ( Student's t test ) ,主要用于样本含量较小 ( 例如 n<30 ) ,总体标准差 σ 未知的正态分布数据。T 检验是用 t 分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。

适用条件:已知一个总体均数;可得到一个样本均数及该样本标准误;样本来自正态或近似正态总体。

T 的公式:

            T=(T-μ)/S/n的平方根

若 T 值大于临界值,则拒绝原假设,否则不拒绝。

2)Z 检验是一般用于大样本 ( 即样本容量大于 30 ) 平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数平均数的差异是否显著。当已知标准差时,验证一组数的均值是否与某一期望值相等时,用 Z 检验。

Z 检验的步骤 适用条件:已知一个总体均数;可得到一个样本均数及该样本标准误;样本来自正态或近似正态总体。

第一步:建立虚无假设,即先假定两个平均数之间没有显著差异,

第二步:计算统计量 Z 值,对于不同类型的问题选用不同的统计量计算方法.

如果检验一个样本平均数 ( x ) 与一个已知的总体平均数 ( μ0 ) 的差异是否显著。其 Z 值计算公式为:

            Z=(X-μ)/S/n的平方根

若 Z 值大于临界值,则认为为二者有差异,否则认为没差异。

注:事实上由于总体参数标准差未知,因此一般使用 T 检验。

3)p-value ,就是当原假设为真时,所得到的样本观察结果或更极端结果出现的概率。如果 p-value 很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,p-value 越小,我们拒绝原假设的理由越充分。p-value 代表的是不接受原假设的最小的显著性水平,可以与选定的显著性水平直接比较。例如取 5% 的显著性水平,如果 p-value 大于 5% ,就接受原假设,否则不接受原假设。这样不用计算 t 值,不用查表。p-value 能直接跟显著性水平比较;而 t 值想要跟显著性水平比较,就得换算成 p-value ,或者将显著性水平换算成 t 值。在相同自由度下,查 t 表所得t统计量值越大,其尾端概率 p 越小,两者是此消彼长的关系,但不是直线型负相关。

原文来自 :https://mp.weixin.qq.com/s?__biz=MjM5MzY4NzE3MA==&mid=2247487857&idx=1&sn=c20fb1564775851205936de162b184cf&chksm=a692629c91e5eb8a75738250e77d99d01617317727ba4a69d089fa7c0326857f62d849d29b13&mpshare=1&srcid=1111JsBtvs15AGzNt7AXQWAX&sharer_sharetime=1605067338008&sharer_shareid=52006a0d19edf83d2b8be98f4d8fe935&scene=2&subscene=2&clicktime=1609155182&enterid=1609155182&ascene=2&devicetype=android-28&version=3.1.0.3004&nettype=3gnet&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=A626aGN2xum%2F6aauwzSOnHI%3D&pass_ticket=vPmu71dSgh0Cxqe85ss3vXTyn4Dv3EhDOQs27%2F%2FmGhEQEuZmxcRa0n%2B%2BVmZeV%2F1Q&wx_header=1&platform=win

zookeeper原理与实践(一)----zookeeper的基本功能

...解什么是zookeeper了。我们通过一个zk的实际例子来了解,基本所有公司都有这样的需求:在使用rpc进行服 查看详情

cordova框架基本原理

最近在做混编项目,也是从项目里开始接触Cordova框架,网上很多帖子都总结的很好,我还是要总结一下,便于加深一下。Cordova框架是一个可以让JS与原生代码(包括Android的java,iOS的Objective-C等)互相通信的一个库,并且提供了一... 查看详情

ace_tao008reactor基本原理与说明(代码片段)

...或多或少用到了Reactor框架。本文先分析Reactor构架模式的基本原理,然后利用ACEReactor框架实现服务器程序,最后分析Reactor框架的实现。Reactor框架支持的事件类型包括IO事件、信号量事件、定时器事件和Notify事件。示例应... 查看详情

《java游戏编程原理与实践教程》读书笔记(第4章——java游戏程序的基本框架)(代码片段)

第4章Java游戏程序的基本框架4.1动画的类型及帧频4.1.1动画类型动画分为影视动画和游戏动画两种。游戏动画是在屏幕上显示一系列连续动画画图的第一帧图形,然后在每隔很短时间显示下一帧图像,如此反复,利用... 查看详情

ssm框架基本原理

一、前言 SM框架是标准的MVC模式,将整个系统划分为四层:View层,Controller层,Service层,Dao层SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项... 查看详情

分布式开源调度框架tbschedule原理与应用

主要内容:第一部分TBSchedule基本概念及原理1.概念介绍2.工作原理3.源代码分析4.与其它开源调度框架对照第二部分TBSchedule分布式调度演示样例1.TBSchedule源代码下载2.引入源代码Demo开发演示样例3.控制台配置任务调度4.selectTasks方... 查看详情

tld视觉目标跟踪框架原理与实践

...,通过对该课程的学习,能够对计算机视觉技术中的一些基本问题有一定的认识和理解,进而达到技术进阶的目的。课程链接:TLD视觉目标跟踪框架理论与实践。TLD框架的内容是非常丰富和广泛的,涵盖了计算机视觉中的一些基... 查看详情

ftp服务原理与基本配置

...是一种文件传输协议,分为主动模式与被动模式主动模式基本原理:主动:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务... 查看详情

[激光原理与应用-18]:《激光原理与技术》-4-粒子数反转与“光”强放大的基本原理

目录一、热平衡: 受激辐射<=受激接收二、“光”相干放大三、粒子数反转(populationinversion)四、实现粒子数反转的装置:泵浦五、实现粒子数反转的条件六、实现粒子数反转的工作物质七、实现粒子数反... 查看详情

spring框架的基本原理(代码片段)

一:spring基本概念1)struts2是web框架,hibernate是orm框架2)spring是容器框架,创建bean,维护bean之间的关系3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件&# 查看详情

数理统计的基本概念与基本原理

第六章数理统计的基本概念与基本原理一、基本概念总体、个体、样本常用的统计量样本均值X¯=1n∑i=1nXi\\barX=\\frac1n\\sum_i=1^nX_i样本方差S2=1n−1∑i=1n(Xi−X¯)2S^2=\\frac1n-1\\sum_i=1^n(X_i-\\barX)^2样本的kk阶原点矩Ak=1n∑i=1nXkiA... 查看详情

深度学习原理与框架-递归神经网络-rnn网络基本框架(代码?)1.rnn.lstmcell(生成单层lstm)2.rnn.dropoutwrapper(对rnn进行dropout操作)3.tf.

问题:LSTM的输出值output和state是否是一样的1.rnn.LSTMCell(num_hidden,reuse=tf.get_variable_scope().reuse) #构建单层的LSTM网络参数说明:num_hidden表示隐藏层的个数,reuse表示LSTM的参数进行复用2.rnn.DropoutWrapper(cell,output_keep_prob=keep_p 查看详情

tensorflow101|原理与概念

...原理与概念介绍。使用TensorFlow框架实现神经网络计算的基本原理是将计算的定义与执行相互分离,其中计算通过数据流图定义,会话执行数据流图上的操作。数据流图定义了 查看详情

celery框架的基本使用与介绍(代码片段)

目录Celery介绍、安装、基本使用一、Celery服务1、celery架构2、celery快速使用3、celer包结构【使用包写一个小游戏】Celery介绍、安装、基本使用一、Celery服务什么是Celery:Celery是一个简单、灵活且可靠的,处理消息的分布式系统Celery... 查看详情

spark:基本架构及原理

转自:http://www.cnblogs.com/tgzhu/p/5818374.htmlApacheSpark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapRe... 查看详情

abtest-system后台系统设计与搭建

本文来自网易云社区作者:刘颂1项目背景:   2017年5月:客户端提出增加https&dns以及双cdn业务功能后台配合实现使用disconf配置针对不同的域名或者请求配置不同的https等信息   2017年7月:考拉上线了工厂... 查看详情

abtest-system后台系统设计与搭建

本文来自网易云社区作者:刘颂1项目背景:   2017年5月:客户端提出增加https&dns以及双cdn业务功能后台配合实现使用disconf配置针对不同的域名或者请求配置不同的https等信息   2017年7月:考拉上线了工厂... 查看详情

spark:基本架构及原理

     ApacheSpark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spa... 查看详情