本文主要是介绍AB实验:科学归因与增长的利器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一章 AB实验的基本原理和应用
AB实验的相关概念:
3个基本参数:实验参与单元、实验控制参数、实验指标
2个核心价值:验证因果关系、量化策略效果
2个关键特性:先验性、并行性
基本流程:分流 -> 实验 -> 数据分析 -> 决策
基本要素
- 实验参与单元,关键条件:
- 实验参与单元互不干扰
- 实验参与单元合理随机化
- 足够的实验参与单元;实验实际提升效果越不明显,就需要更多的参与单元来确认实验效果。例如:点击率、曝光率等变化幅度较大的指标,变化1%,需要十万级单位;留存率变化幅度较小,需要更多;对于初创、垂类(用户只有几千或几万),只能测出3%、5%甚至10%以上的实验效果
- 实验控制参数,满足以下条件:
- 实验控制参数可分配(最关键)
- 实验控制参数容易改变
- 实验指标,满足两个基本要求:
核心价值
- 定性因果:验证因果关系,确保方向正确
相关性:当一件事情出现时,另一件事情也出现
因果关系:一件事情出现的原因是另一件事情出现,或者一件事情出现的结果是另外一件事出现
- 定量增长:实践数据驱动,精细成本收益
因果推断常用的模型:
- 潜在因果框架,Rubin因果模型(RCM)
- 因果图模型
\(T_i\)表示个体i是否进行了某个实验,实验取1,对照取0,\(\{Y_i(1),Y_i(0)\}\)表示个体i进行实验和作为对照的潜在结果,例如:\(Y_i(0)\)表示用户没有被投放红点时的活跃度,\(Y_i(1)-Y_i(0)\)表示个体接受实验后的个体因果作用。
\[\begin{aligned}
ACE(T \rightarrow Y) &= E\{Y_i(1)-Y_i(0)\}
\\ &= E\{Y_i(1)\}-E\{Y_i(0)\}
\\ &= E\{Y_i(1)|T_i=1\} -E\{Y_i(0)|T_i = 0\}
\\ &= E\{Y_i(1)|T_i=1\} -E\{Y_i(0)|T_i = 1\} + E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}
\\ &=E\{Y_i|T_i = 1\}+ E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}
\end{aligned}
\]
\(E\{Y_i|T_i = 1\}\)是实验对参与实验的人的平均因果效应,\(E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}\)是随机本组带来的选择偏差
关键特性
先验性:小流量预先获得效果评估
并行性:同一个实验对象可以有多个实验并行展开
应用场景
典型的应用场景:推荐类场景(算法优化黑盒属性)、运营类场景(长短期综合收益ROI)、UI设计和交互类场景(感性决策众口难调)
第二章 AB实验的关键问题
实验参与对象的3个问题
- 实验参与对象是否被合理随机化(性能最好:哈希函数)
- 实验参与对象是否相互独立;AB实验结果有效需要满足一个基本假设:个体处理稳定性假设(Stable Unit Treatment Value Assumption,SUTVA:任何实验单元的潜在结果不会随分配给其他单元的处理而变化)
- 实验参与对象的数量是否足够进行实验评估
实验随机分流的3个问题
- 最小分流单元采用什么颗粒度是最佳的选择(元素级别、页面级别、会话级别、用户级别)
- 在分流时,如何在不增加实验评估复杂度的情况下实验流量复用
- 对于同一个实验组中的各组对象,是否同质?存在SRM问题(样本比例不匹配)吗?
实验指标的2个问题
- 如何建立一个完善的产品指标体系,包括指标的设计、评估、进化和计算等
- 如何选择合适的实验评估指标,包括从产品视角、工程视角综合考虑,以及多个目标指标如何合并成综合评价指标(OEC)
实验分析和评估的3个问题
- 对于统计结果理解是否正确
- 如何解读实验结果中p值、置信度、置信区间的关系
- 实验得出的相对提升,究竟是一个自然波动还是真实的实验提升
- 实验参与单元的数量是否足以检验想要的实验效果
- 实验统计的power值(统计功效)是否充分
- 实验统计精度是否可以检测出业务的提升
- 实验分析的过程是否正确
- 有没有进行AA实验
- 在实验过程中有没有SRM测试
- 在实验过程中有没有偷窥实验
- 是否存在幸存者偏差、辛普森悖论
- 局部实验的结果如何推导为全局提升量、转化过程是否正确
- 实验分析的外推结果是否正确
在一些特定的情况下,实验结果被推广到实验的设置之外不再有效:
- 群体外推:结果推广到实验群体之外
- 时间外推:实验时间范围之外推广,因此不能确保长期影响和短期影响是相同的
第三章 AB实验的统计学知识
随机抽样与抽样分布
样本均值与总体均值总有差异,\(\mu = \bar{x} + \epsilon \),如何衡量\(\epsilon\),当无法得到全部用户数据时,可以采用反复抽取100个用户的方法,得到不同的随机样本,通过\(E(\bar{x})= \mu,\sigma_{\bar{x}}=\frac{\sigma}{\sqrt{n}}\)来计算总体均值
- 样本容量:每个随机样本中个体数
- 样本量:随机抽样的次数
样本容量与边际误差
- 均值类指标\(\epsilon = Z_{\alpha/2}\frac{\sigma}{\sqrt{n}}\),样本容量\(n = \frac{(Z_{\alpha/2})^2\sigma^2}{\epsilon^2}\),边际误差是业务需要检验的最低幅度变化,所以又称为最小检出水平
- 比率类指标\(n = \frac{(Z_{\alpha/2})^2\bar{p}(1-\bar{p})}{\epsilon^2}\)
假设检验
为控制第二类错误,引入一个概念——功效(power)。功效是指H0不成立时,做出拒绝H0的结论正确的概率,功效 \(= 1- \beta\),第二类错误发生的概率越小,功效越大。
例如:当\(P<\alpha\),则拒绝原假设H0,认为策略有效;
当\(P \geq \alpha\),则不能拒绝原假设H0,也不能接受H1,此时不能说明策略有效,也不能说明策略无效,需要进一步观察功效,如果功效>80%,说明犯第二类错误的概率很低,即策略有效被判断为无效的概率很低,此时策略是无效的。
弄假成真第一类:原假设为真拒绝原假设(拒真错误)——活动指标相等(假:活动无效),但判断为活动有效(真)
弄真成假第二类:原假设为假接受原假设(取伪错误)——活动指标不相等(真:活动有效),但判断为活动无效(假)
非参数检验
参数检验要求符合独立同分布,非参数的方法对总体概率没有分布的要求,不对模型做任何参数假设,完全是基于数据模拟的方法。目前使用最多的是bootstrap(有放回)和jackknife(无放回)。
多重测试问题
每次判断正确的概率为95%,对同样的事情多次判断,开设N个相同的实验组,全部判断正确的概率变为(95%)^N,问题的主要来源:
- 多次重复相同的实验;
- 多次进行相同对比;
- 实验进行过程中多次查看实验结果,即常说的实验偷窥
- 同一个实验有多个指标的情况
采用以下方式进行避免:
- 在构建实验指标体系的时候,核心实验指标的设置和选择要尽量少
- 在实验过程中不要多次查看实验结果
第四章 AB实验参与单元
实验参与单元的选择
在互联网产品的AB实验中,有以下几种比较常见的实验参与单元:
- 元素级别:指对实验元素,比如一篇文章、一首歌曲等进行随机分流并标识实验id的随机过程。(例:算法推荐信息)
- 页面级别:产品页面被视为实验参与单元,进行实验的页面每打开一次,就会被随机函数分配到不同的实验组中。
- 会话级别:用户在网站的一次访问时查看的一组页面或者是启动一次APP后在APP内的行为(启动 -> 退出)
- 用户级别:以用户为实验参与单元
选择合适的实验参与单元的关键因素:
- 实验所需要的流量以及实验检测精度
- 用户体验的连续性
注:为保证体验的稳定性和连续性,最好采用用户级别;在不影响用户体验的前提下采用更细粒度的随机单元。
用户级别的实验参与单元的常用用户标识有:
- 登录账号
- 设备ID
实验参与单元的SUTVA问题
常见问题如下:
- 什么是SUTVA?
个体处理稳定性假设(Stable Unit Treatment Value Assumption),指在AB实验分析中,假设实验中每个实验参与单元的行为是相互独立的。
- 为什么需要让SUTVA成立
AB实验因果分析主要基于鲁宾因果模型进行,分析框架的三个基本要素:
- 潜在结果:给定一个实验单元和一系列动作,把一个“实验单元-动作”确定为一个潜在结果。“潜在”表达的意思是并不总能在现实中观察到这个结果,但理论上发生。
- SUTVA:任何单元的潜在结果不会因分配给其他单元的处理而发生变化,并且对于每一个单元,不同的处理对应唯一不同的结果
- 分配机制
- 哪些情况会导致SUTVA不成立
- 直接干扰:同时访问相同的物理空间
- 间接干扰:通过某些潜在变量或共享资源,两个实验单元可以有间接连接;例:滴滴让实验组的乘客更有可能选择搭车导致司机少了
- 如何解决SUTVA不成立的问题
解决AB实验的干扰问题:
- 建立监控和报警
- 隔离法:通过识别连接介质隔离用户来消除潜在干扰,常用的隔离方法:
- 共享资源隔离
- 地理位置隔离
- 网络族群隔离:在社交网络上,可以根据节点干扰的可能性构建彼此接近的节点的簇,然后将簇作为单元独立、随机分为实验组或对照组
- 边缘度分析
- 生态经验法
- 双边随机化
最小实验参与单元数量
如何确定一个“最小”的样本量,在保证实验“可靠性”的同时,不会浪费过多流量。控制样本量的主要因素:
- 显著性水平
- 统计功效(\(1-\beta\)):实验本身有效果同时也被判断为有效果的概率。对于一个AB实验
- 第一类错误不超过5%
- 第二类错误不超过20%,功效大于80%
背后理念:宁可砍掉四个好的产品,也不让一个坏的产品上线
- 基线水平:在实验开始之前,对照组中所关心的实验指标的表现情况,即产品不做改变时的指标水平。
- 最小检出水平:用于衡量实验判断精度的最低要求
总结:计算最小实验单元就是为了将第一类和第二类错误控制在一定范围内,达到一定的实验置信度和业务评估精度,主要有四个因子:显著性、统计功效、指标(方差)、最小检出水平
第五章 AB实验的随机流量
进行用户随机分流,需要重点关注的几个问题:
- 用户如何被随机分为实验组和对照组
- 实验量增加后,流量不够用的问题和解决
- 不同层之间的正交性是如何实现并保证的
- 随机分流时如何选择散列算法
单层分流模式
适合阶段:实验初级阶段,实验数量通常很少
定义:单层指不重复利用用户,在同一个时间内,用户最多只会参与一个实验。
缺点:对并发实验数量有限制
正交分层模式
实现方法:拥有多个实验层,其中每一层的行为类似于单层方法。为了确保层间实验的正交性,在把用户分配到桶时,会添加层id,也称为盐值。层与层之间的正交性就是靠散列函数加层id的方式来保证。
正交分层模式的关键点:
- 正交性如何保证?
- 如何确定分多少层且如何使用?
全析因实验设计:将每个实验都单独作为一层
为避免同类实验碰撞,可以使用有限层的划分方式:将系统参数划分为多个层,不同层运行不同类的实验,组合在一起可能会产生较差的用户体验的实验必须放在同一层,防止向同一用户运行。关键点:
- 同类业务互斥进入同一层
- 不同类业务可以拆分到不同层,并行进行、保证实验流量足够,通过正交实现层间效果互相影响的隔离
散列算法
散列算法的考虑方面:计算性能、均匀性、相关性
计算性能:指开始分流时散列算法的速度
均匀性:指同层之中分为不同实验组的时候,每个组分到参与用户的数量尽量一致(组间差异)
相关性:指不同层的组之间的混合尽量均匀(层间差异)
常用的散列算法:MD、SHA、JDB、Murmur
注:在满足一定用户量的情况下出现了显著差异,大概率是出现了分流不均的情况,原因:系统出错、用户不同质,一般考虑在实验前进行检验(SRM检验[样本比例不匹配]、AA实验)
第六章 AB实验的SRM问题
样本比例不匹配问题(SRM)是常见的一种导致实验失败的原因。
保护指标:
- 组织性保护指标:保护指标用于保护业务不受伤害
- 实验可信度保护指标:针对实验本身的可信度(SRM指标)
什么是SRM
SRM问题是实验组和对照组之间的实验参与单元数量(比如用户数、页面数、会话数等)的比率不匹配。
导致SRM问题的原因
原因:实验的部署、执行、数据处理、分析
- 部署阶段
- 残留效应:前一个实验污染了相同用户分组的后续实验
- 触发前状态偏差
- 动态定向目标:定向目标是指实验运行在特定的用户集上,基于用户的属性和活动特征为他们提供个性化的产品体验
-
执行阶段
采用图6-2来避免出现用户过滤条件
-
数据处理和分析阶段
在数据分析阶段,SRM问题主要是分析过程中一些样本偏差被忽视,以理论的样本比例进行分析造成的错误。例如:机器人过滤;数据处理中常删除机器人流量,而机器人过滤会存在数据失真的情况,从而导致SRM问题
SRM指标计算和定位
- SRM指标计算
通过实验组和对照组实验参与单元的可比性来实现,当采样比例指标的P值很低时,应该假定大概率是系统中的某个地方存在错误。
举例:
预定比例 实验:对照 = 447500:447500 = 0.5:0.5
实际比例 实验:对照 = 445000:450000 = 0.4972:0.5
计算过程:
计算方差:\(\sigma = \sqrt{\frac{p(1-p)}{n}}=\sqrt{\frac{0.5(1-0.5)}{895000}}=0.0005285\)
计算Z统计量:\(z_{\alpha/2}=\frac{x-\mu}{\sigma}=\frac{0.4972-0.5}{0.000528}=-5.2980\)
查P值:根据Z值反查P值,\(P = 1.17 \times10^{-7}\),P值很低(远低于0.001)
做出判断:倾向认为这个实验出现了SRM问题
- 定位SRM问题
常见的定位SRM问题方法:
- 验证随机化点或触发点上游没有差异
- 验证变量分配是否正确
- 是否有相同的初始区间(一起开始实验)
- 查看细分市场的样本比率
- 每天是否有异常数据
- 某个细分市场数据是否突出
- 新老用户等
第七章 AA实验
随机选取两组用户,对这两组用户使用一样的策略,除了参与实验的对象之外没有其他不同的实验成为AA实验,也称为AA测试、空转实验,就是实验组和对照组完全相同的AB实验。
AA实验的意义
- 控制第一类错误
控制实验有效却被判断为无效的情况
- 确保用户同质
- 数据指标对齐,评估指标的可信度和可变性
将实验指标数据和大盘指标数据对齐,有两个重点检查环节:
- 生效的用户量是不是和预估的实验流量匹配
- 各项比率、人均指标是不是和大盘日志监控系统的数据对齐
如果存在指标和大盘数据存在明显差异,应该检查如下环节:
- 估计统计方差
如何运行AA实验
- 什么时候运行AA实验
一般在AB实验系统刚开始运行,或是AB实验系统采用了新的随机分流机制(新随机函数、新增加实验层、实验域等)、采用新的数据计算流等任何可能影响实验结果的重大变化的时候,建议随机运行尽可能多的AA实验。
可以模拟1000个AA实验,并根据实验结果绘制P值分布图,如果AA实验的P值分布不均匀,则AB实验系统的可信度存疑。
注意事项:
- AA实验进行3~7天,如果多项指标有显著差异,则AA实验不通过,需要重新开启AA实验
常规的实验级别AA实验保证了实验的可信度,但增加了实验的周期,加速实验进程的常用方法——日志回溯法、流量寻优法。
AA实验失败的常见原因
常见原因如下:
- 分流不随机
- 指标方差估计错误
- 最小样本量不符合要求
- 脏数据
第八章 AB实验的灵敏度
什么是实验灵敏度
灵敏度是某种测量方法对单位浓度或单位待测量物质变化的响应变量的响应量变化程度。检测能力的大小就称为实验灵敏度。
如何理解实验灵敏度?单个实验优化所能带来的提升是非常有限的,这个时候如果实验检测的灵敏度不高,就容易给出错误甚至相反的结论。
如何提升实验灵敏度
实验灵敏程度 = 对样本指标所在区间估计的准确程度,减少边际误差,提高灵敏度的方法主要有两种:1. 降低方差;2. 增加样本量
增加样本量的可控性较低,一般通过减少方差的方法,主要从三个方面入手:
- 选择指标,选择方差更小的指标
- 选择实验参与单元,选择粒度更小的参与单元以减少方差
- 在实验分组过程中,通过分层法、CUPED等方法减少因不同特征用户组间分配不均带来方差
选择指标
- 选择方差较小的指标评估
- 标准化评估指标,常见标准化方法:二值转化、对数转化、截断法、
选择实验参与对象
- 选择更细粒度的单元随机化对象
- 使用触发分析
选择实验分组
- 使用分层、控制变量或CUPED方法
- 设计配对实验:
配对设计实验的思想:在配对实验设计中向同一个用户展示实验组和对照组方案,同一个用户可以同时对这两组方案做出反馈,消除用户差异性,例如:交错设计
定向触发技术和评估
- 触发的方式:特征触发、行为触发
- 触发范围的变化:扩大触发范围、触发范围改变、机器学习模型触发范围
- 触发实验的分析需要注意的点:
- 一旦用户触发,后续实验必须将这些用户包含在其中
- 分析时间粒度的选择
- 合理计算触发实验计算提升量
- 触发检验,确保触发,应执行两项检查:
- SRM问题
- 补充分析,为从未触发的用户进行AA实验,如果统计上有显著差异,那么触发条件很有可能不正确
- 触发技术的局限性
如何验证实验灵敏度的提升
可以通过模拟实验的方法验证灵敏度的提升,模拟实验就是采用和线上完全相同的实验抽样算法,复现线上抽样效果
这篇关于AB实验:科学归因与增长的利器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!