一次可信赖的实验是什么样的?
有理有据、严谨的、可解释的、禁得起推敲的、客观非主观的、
创建假设、运行实验、收集数据、提取洞察以及对假设进行验证或修改。
为什么进行实验?相关性、因果关系和可信赖度。
举个例子:与冬天相比,夏天游泳的人变多且溺亡的人数上升,同时吃冰激凌的人数也增多,因此是否“吃冰激凌”导致“溺亡”?这种听起来荒诞的结论是因为我们错误的把相关性当成了因果性。我们没有观测到“夏天气温升高”同时会影响“游泳溺亡人数”和“吃冰激凌人数”,而错误的认为两者间有直接的因果关系。要记得相关性不等于因果性。
对于这种显而易见的谬论我们可以轻易识别。那更多的是识别不到。那当我们需要去确立某种现象和结果之间的因果关系时,应该如何做呢?(在检验相关性时,能够排除其他因素影响)
随机对照实验是确立因果关系的黄金准则。对随机对照实验的统合分析则具有更强的实证性和普适性。这也正是我们为什么需要运行线上对照实验(ab test)的原因。
谷歌、领英和微软的实验平台每年可以运行成千上万个线上对照实验,并提供可信赖的实验结果。它是以高概率确立因果关系的最佳科学方法。
ab test极其强大又极其科学。
其强大之处在于:
其科学之处在于:
实验平台的设计一定是操作便利的、通俗易懂的、易于迭代的、机构内指标“约定俗成”的、“高”收益的
ab test就是线上运行的对照实验。
ab代表什么:通过分析同一总体下,由于某些不同的策略导致样本数据表现出的差异,来推断某些策略的效果。随机分组的两个正交的群体独立运行各自被施加的策略。
ab test 的基本原理是对照实验,本质是假设检验。
完整的AB测试流程包括以下几个步骤:
统一实验管理:实验的申请:实验名称,实验目的,实验起止时间,实验状态,目标指标,分组策略、申请人、实验评估审核人、实验Id(唯一性)、变体(实验组和对照组)、流量配额、分析负责人、实验结果与建议。
规范的实验报告
评估实验结果的标准化与规范化:主要是采用的统计分析方法的合理性和可解释性,以及统计显著性的阈值的确定和统一。
历史实验的复盘
工程方面:实验的迭代的详细信息记录,bug修复经验
数据方面:各个版本平台采用的指标、主要的分析方法、遇到过的逻辑陷阱、日常分析的tips等。
以下内容是关于:怎么正确的做ab test?在正确的做ab test的基础上如何做的更好?
设立实验--》假设检验--》设计实验--》运行实验并获得数据--》分析结果--》从结果到决策。
必应、领英和谷歌的实验平台都主要有以下4个组件构成:
目标指标:也被称为成功指标或北极星指标
护栏指标:保护我们不会违背假设,并有两种类型
(例:在上线新的搜索引擎时,除了目标指标比如用户的活跃量,购买率等,加入护栏指标如多少搜索完成,平均搜索耗时)
存量和参与度指标:
业务和运营指标:
数据质量指标:
综合评估标准OEC: 即实验的响应变量或者叫因变量。
注意两端之间实验实施的差异和数据回收的差异。
4.3.1 日志的记录
前后实验日志的收集分工、实施便捷程度。
4.3.2 多个源头日志的连接
日志通常是来自不同的源头,重要的是要确保相关的日志可以被下游轻松地处理、利用和合并。首先,必须有一种连接日志的方法。理想情况下是所有的日志都有一个共同的标识符作为连接键。连接键必须表明哪些事件是来自同一用户或者随机化单元。
4.3.3 监控原始日志质量
变体分配是将用户前后一致地分配给一个特定的实验变体的过程。在实验平台的早期阶段,因为实验个数少,所以经常会分配所有的流量,是每个实验变体接收一个总流量的给定比例。随着实验平台的成长,实验个数越来越多,因为要为每个实验提供足够的统计功效,所以必须为每个实验变体分配足够比例的用户。为了扩大实验数量,用户必然处于多个实验中。这是如何运作的呢?
https://blog.csdn.net/duck_genuine/article/details/108871414
https://blog.csdn.net/huchao_lingo/article/details/109922908
4.4.1 单层方法
使用哈希函数将用户一以贯之地分配到分桶,从而完成分配。例如,我们使用1000个不相交的分段,并指定哪个变体分配到哪些分桶。具有200个分桶的变体则分配到20%的流量。
传入请求中有用户UID
f(UID)%1000 = mi
对照组 m1-m200 |
实验组1 m201-m400 |
实验组2 m401-m600 |
实验组3 m601-m800 |
实验组4 m801-m1000 |
用户分配到哪个分段必须是随机的。但也是具有确定性的。
监控分配很关键
4.4.2 并行实验
随着时间推移和实验平台的完善,为了扩大实验数量,用户必然处于多个实验中。这是单层方法无法实现的规模,必须转向某种并行(也称为重叠)实验系统,其中每个用户可以同时在多个实验中。实现此目的的一种方法是拥有多个实验层,其中每层都类似于单层方法的操作。为了确保跨层之间实验的正交性,在用户分配分桶时添加层ID。
此处还需要注意实验标识符的分配:确保实验标识符分配的独立性和跨实验分配的独立性。
流量正交
对于分层实验有个很重要的点就是每一层用完的流量进入下一层时,一定均匀的重新分配。图中的箭头展示的很清晰,第一层中每个实验的流量会重新分组进入到第二层中的每个试验中。所以整个流量有一个分散,合并,再分散的过程,保证第二层中的每个实验分配的流量雨露均沾,这就是所谓的流量正交。
从上图可以看出,即使第1层的2号桶的实验结果比其他几个桶效果好很多,由于流量被离散化,这些效果被均匀分配到第2层。(第3层及后面层类同),这样虽然实验效果被带到了下一层,但是每个桶都得到了相同的影响,对于层内的桶与桶的对比来说,是没有影响的。而我们分析实验数据,恰恰只会针对同一实验内部的基准桶和实验桶。
分层原则
通常来说有依赖关系的实验点(变量)必须划分在同一层,例如页面背景颜色和字体颜色必须在同一层,如果页面背景颜色和字体颜色都被设置成蓝色,那么我们就看不到页面上的字了),没有依赖关系的实验点(变量)可以划分在不同层,每个变量实验点只出现在一个层中,不会出现在多层中。
实验粒度:实验对象的粒度,有用户级别(常用),页面级别、会话级别等。
选择随机化单元要考虑的一个维度是颗粒度。
确定颗粒度时,主要考虑两个问题:
注意事项:
4.5.1 随机化单元和分析单元
随机化单元和分析单元必须是独立同分布的。
4.5.2 用户级别的随机化
因为用户级别的随机化可以避免用不体验的不一致,并且可以长期测量用户留存等,所以是最常见的。
匿名用户ID或者设备ID在测试用户跨登录边界的过程中,例如新用户的引导过程,包括首次登陆时会更有效。
4.6.1 什么是放量?
实验的流量释放。是逐步放量到给定配额还是一次到位。
有效放量需要权衡三个关键因素:速度、质量和风险。
缩量:当实验出现问题明显问题时,需要非常快地将流量降为0,以减少对用户的影响。
4.6.2 SQR放量框架
对于逐步放量的过程,如何在控制风险和提高决策质量的同时快速迭代?换句话说,我们该如何权衡速度、质量和风险(Speed,Quality and Risk, SQR)。
假如我们某次实验得到的是100%的流量,通常意味着将50%的流量分配给实验组来提供最高统计灵敏度。这会带来最快和最精确的测量。然而,为了降低影响和潜在风险,我们通常需要从小范围曝光开始,而不是一下将实验流量全部放量。
还要考虑新服务或端点可以负荷的不断增加的流量。
另外一点,对于需要测量影响是否是长期可持续的,往往会留出一小部分用户(例如%~10%)在一段时间内不运行任何实验,这需要一个长期的留出(holdout)放量阶段。
4.6.3 四个放量阶段
4.6.4 最终放量之后
需要在放量之后即实验数据收集结束后进行不同的清理,诸如无用代码的删除,相关参数初始化等等。
SQR: Balancing Speed, Qality and Risk in Online Experiments
4.7.1 数据处理
4.7.2 数据计算
计算细分群和指标,并汇总结果以获得每个实验的概述统计量,包括实验效应本身(例如指标差异的均值或百分位数)和统计显著性(p值、置信区间,贝叶斯检验)。也可以在数据计算阶段寻找其他信息,例如哪些细分群有趣等等。
那么该如何架构数据计算呢?
首先,假设实验单元是用户
为了确保速度和效率以及正确性和可信度,我们需要在机构内:
4.7.3 结果汇总和可视化
直观的总结和高亮标出关键指标和细分群。
统计功效越大,越能发现更小的效应。
我们大部分的情况是依据组内和最间方差去做很多结论性判断的,包括样本量估算也是要依靠方差的。方差的正确估算是至关重要的。
5.2.1 常见陷阱
如果我们不能正确的估算方差,那么p值和置信区间都将是错误的,得到的实验结论也将是错误的。
5.2.2 提高灵敏度("花小钱办大事儿")
运行对照实验时,如果实验效应存在,我们希望检测到该效应。这种检测能力通常被称为统计功效或者灵敏 度。一种提高灵敏度的方法就是减小方差。
a/a测试:像a/b测试一样把用户分成两组,但b和a是一样的(因此命名为a/a测试)。有时候也称为空测试。
Trustworthy Online Controlled Experiments: Five Puzzling Outcomes Explained
5.3.1 为什么运行A/A测试
5.3.2 如何运行A/A测试
理想状态下,模拟1000个a/a测试然后把p值的分布画出来,如果分布离均匀分布很远,那么系统是有问题的。在解决这些问题前,a/b测试系统是不可信赖的。
运行1000个a/a测试的成本很高,但有一个小tips可以使用:重播上周数据。由于没有进行产品和功能的改动,每次迭代时,选择一个对用户分组的随机化哈希值。通过重播上周数据,只需要模拟a/a测试时的用户分配,将用户分成两组。然后对感兴趣的指标生成p值,并把每个指标的p值累积起来画成直方图。接着进行拟合优度测试来判断是否符合均匀分布。
5.3.3 A/A测试失败时
p值分布不符合均匀分布时常有以下几种常见情况:
很多人假设实验会按照设计运行。如果假设不成立,那么分析会产生严重的偏差,同时所得出的一些结论也会失效。可信度相关的护栏指标就至关重要,样本比率不匹配(Sample Ratio Mismatch,简称SMR)是常用的可信度相关的护栏指标。
5.5.1 样本比率不匹配(SMR)
SMR检测的是两个实验变体(通常是一个实验组和一个对照组)的用户量的比率。如果实验设计要求曝光特定的用户比率(假如1:1)到实验的两个变体,那么实际得到的比率应该和设计的比率匹配。不同于一般指标可能会被实验改定影响,将一个实验变体曝光给一个用户的决定必须和实验改动独立,所以实验变体的用户比率应该与实验设计的相符。
当样本比率指标的p值很低的时候(标准t检验或卡方检验计算相应的p值),即基于设计的比率,观察到观测结果的比率或更极端情况的概率很低,那么这样就是样本比率不匹配,且其他所有指标也很可能不再有效。
微软大约6%的实验表现出SRM。
一些引起SRM的原因:
5.5.2 调试SMR
基于上述提到的一些原因,给出的常见调查方向:
5.6.1 分析流程的规范
5.6.2指标与分析方法的规范
5.6.3 实验结果可视化与实验报告
5.6.1 假设检验、显著性水平α、P值、置信区间
https://blog.csdn.net/itslifeng/article/details/108139122
5.6.2 为什么是p值?为什么不是p值?
https://zhuanlan.zhihu.com/p/61819043
5.6.3 贝叶斯检验
https://mp.weixin.qq.com/s/IdlqK3oPtF8tBdo_0xzBHA
美团设计
https://tech.meituan.com/2019/11/28/advertising-performance-experiment-configuration-platform.html
谷歌是如何高效做AB实验的
https://blog.csdn.net/shangpairen/article/details/105232249
AB实验平台在贝壳找房的设计与实践
https://blog.csdn.net/GFJ0814/article/details/92422510
推荐策略平台与ABTEST实验结合
https://blog.csdn.net/duck_genuine/article/details/108873102