中山网站改版,建站之星使用教程,在线oa免费crm,wordpress安装后删除AB试验#xff08;三#xff09;一次试验的规范流程
一次完整且规范的A/B试验可参考下图#xff1a; 确定目标和假设 核心#xff1a;A/B测试是因果推断#xff0c;所以我们首先要确定原因和结果。目标决定了结果#xff0c;而假设又决定了原因。 如何确定 分析问题三一次试验的规范流程
一次完整且规范的A/B试验可参考下图 确定目标和假设 核心A/B测试是因果推断所以我们首先要确定原因和结果。目标决定了结果而假设又决定了原因。 如何确定 分析问题确定想要达到的结果目标其次提出解决业务问题的大致方案最后从大致解决方案中提取具体的假设假设
确定指标
指标类型
评价指标Evaluation Metrics能驱动公司实现核心价值的指标。通常是短期的、比较敏感、有很强的可操作性例如点击率、转化率、人均使用时长等护栏指标Guardrail Metrics衡量A/B测试是否符合业务上的长期目标不会因为优化短期指标而打乱长期目标。例如退订率、用户体验等
评价指标的选取标准 可归因性业务改动能引发指标变化 可测量性指标的变化是易于统计量化的 敏感性与稳定性如果实验中的变量变化了评价指标要能敏感地做出相应的变化但如果是其他因素变化了评价指标要能保持相应的稳定性。 长期与短期指标检测单次的变化时(比如单次推送/邮件)一般选用短期效果指标因为长期效果目标通常对单次变化并不敏感。检测连续的、永久的变化时(比如增加产品功能)可以选用长期效果的指标A/A测试测量稳定性如果A/A测试的结果发现两组的指标有显著不同那么就说明要么分组分得不均匀每组的数据分布差异较大要么选取的指标波动范围太大稳定性差。回溯性分析来表征敏感性回溯历史数据其他的变动非本次试验改动是否会引起该指标的明显变化。 如何选取 历史经验依据业务/产品所处阶段例如起步阶段的拉新点击率、转化率等发展与成熟阶段的平均使用时间、平均使用频率、留存率等。目标抽象可采用定性定量的方法例如用户满意度可通过用户调研进行用户满意与不满意的分组并计算一些指标找出具有明显相关的指标进行替代借鉴其他试验或网络公开试验的相关指标构建总体评价标准OECOverall Evaluation Criteria 亚马逊推送电子邮件的案例 在实验组给用户发邮件在对照组不给用户发邮件。起初的评级指标为收入结果可想而知实验组发的邮件越多收入越高。但现实情况是用户收到一定程度的邮件后就会觉得是垃圾邮件影响了用户体验而选择了退订因此会带来预期之外的损失。构建 O E C ∑ i R e v e n u e − S ∗ U n s u b s c r i b e l i f e t i m e l o s s n OEC\frac{\sum_i Revenue − S ∗ Unsubscribe_lifetime_loss}{n} OECn∑iRevenue−S∗Unsubscribelifetimelossi代表每一个用户Revenue代表每组退订的人数Unsubscribe_lifetime_loss代表用户退订邮件带来的预计损失n代表每组的样本大小。实施OEC后发现有一半以上电子邮件的OEC都是负的说明多发邮件并不是总能带来正收益 优点综合各方面的指标才能把握总体的好处避免多重检验问题 ⚠️注意当多个指标单位、大小不在一个尺度上时需要进行归一化处理 衡量评价指标的波动性 根据统计公式计算置信区间样本均值 ± \pm ±z分数*标准误差 当样本量足够大时数据服从正态分布因此可采用z分数一般我们选取95%的置信区间对应的z分数为1.96概率类指标标准误 S E p ( 1 − p ) n SE\sqrt{\frac{{p}(1-{p})}{n}} SEnp(1−p) 均值类指标标准误 S E s 2 n ∑ ( x i − x ˉ ) 2 n ( n − 1 ) SE\sqrt\frac{s^2}{n}\sqrt{\frac{\sum(x_i-\bar{x})^{2}}{n(n-1)}} SEns2 n(n−1)∑(xi−xˉ)2 经验法则一些复杂指标不符合正态分布 A/A测试跑多个不同样本大小的A/A测试然后分别计算每个样本的指标大小计算出来后再把这些指标从小到大排列起来并且去除最小2.5%和最大2.5%的值剩下的就是95%的置信区间Bootstrapping算法先跑一个样本很大的A/A测试然后在这个大样本中进行随机可置换抽样(Random Sample with Replacement)抽取不同大小的样本来分别计算指标。然后采用和A/A测试一样的流程:把这些指标从小到大排列起来并且去除最小2.5%和最大2.5%的值得到95%的置信区间。实际中更流行使用Bootstrapping算法因此一些传统简单的指标也可以用该方法计算后与传统公式进行比较如果差距较大则需要跑更多的A/A测试进行验证
护栏指标
业务品质层面是在保证用户体验的同时兼顾盈利能力和用户的参与度 网络延迟网页加载时间、app响应时间等闪退率盈利能力人均花费、人均利润等用户参与度/满意度人均使用时长、人均使用频率等 统计品质层面统计方面主要是尽可能多地消除偏差使实验组和对照组尽可能相似比如检测两组样本量的比例以及检测两组中特征的分布是否相似 实验/对照组中样本大小的比例实验/对照组中样本特征的分布
确定实验单位 三个维度 用户层面把单个的用户作为最小单位也就是以用户为单位来划分实验组和对照组。常见的如用户ID、匿名IDcookies、设备ID、IP地址。准确度上用户ID匿名ID设备IDIP地址 访问层面每次访问作为最小单位一个用户会有多个访问ID所以该用户可能同时出现在实验组和对照组 页面层面每一个新页面作为最小单位例如每次回到首页记做一次页面浏览ID 三个维度之间的关系一个用户可以有多个访问一个访问可以有多个页面浏览因此实验单位的颗粒度越来越细获得的样本量也越来越多 经验总结访问层面和页面层面的单位比较适合变化不易被用户察觉的A/B测试比如测试算法的改进、不同广告的效果等等如果变化是容易被用户察觉的那么建议你选择用户层面的单位 三大原则 保证用户体验的连贯性即A/B测试中的变化是用户可以察觉的实验单位就需要选择用户层面实验单位要和评价指标的单位保持一致再保证前两个原则的前提下样本要尽可能的多
样本量估算
合适的样本量
样本量不是越多越好时间成本试错成本 A/B测试所需的时间总样本量/单位时间获取样本量。当所需样本量越小实验时间越短实际业务场景中时间是最宝贵的资源。A/B实验中的改动也可能造成业务损害因此需要一定的试错成本。当实验样本越小时试错成本就会越低 样本量的平衡在A/B测试中既要保证样本量足够大又要把实验控制在尽可能短的时间内
样本量计算原理
计算公式 n ( Z 1 − α 2 Z 1 − β ) 2 ( δ σ p o o l e d ) 2 ( Z 1 − α 2 Z p o w e r ) 2 ( δ σ p o o l e d ) 2 n\frac{(Z_{1-{\frac{\alpha}{2}}}Z_{1-\beta})^2}{(\frac{\delta}{\sigma_{pooled}})^2}\frac{(Z_{1-{\frac{\alpha}{2}}}Z_{power})^2}{(\frac{\delta}{\sigma_{pooled}})^2} n(σpooledδ)2(Z1−2αZ1−β)2(σpooledδ)2(Z1−2αZpower)2 Z 1 − α 2 Z_{1-{\frac{\alpha}{2}}} Z1−2α为 1 − α 2 1-\frac{\alpha}{2} 1−2α对应的z分数 Z p o w e r Z_{power} Zpower为power对应的z分数 δ \delta δ为实验组和对照组评价指标的差值 σ p o o l e d 2 \sigma_{pooled}^2 σpooled2为实验组和对照组的综合方差 如何理解power p o w e r 1 − β power1-\beta power1−β即通过A/B测试探测到两者不同的概率可理解为A/B测试的灵敏度power越大越能探测到两组的不同 样本量n的四个影响因素 显著性水平 α \alpha α显著水平 α \alpha α越小样本量越大第一类错误越小结果越精确所需的样本量自然就越大功效 p o w e r 1 − β power1-\beta power1−β功效power越大样本量越大第二类错误越小结果越精确所需的样本量自然就越大实验组和对照组的综合方差 σ p o o l e d 2 \sigma_{pooled}^2 σpooled2综合方差越大样本量越大综合方差越大说明评价指标的波动范围越大也越不稳定那就更需要更多的样本来进行实验从而得到准确的结果。实验组和对照组评价指标的差值 δ \delta δ差值 δ \delta δ越小样本量越大因为实验组和对照组评价指标的差值越小越不容易被A/B测试检测到所以我们需要提高Power也就是说需要更多的样本量来保证准确度
实践中如何计算样本量 参数默认设置 日常设置 α 5 % \alpha5\% α5% p o w e r 80 % power80\% power80%所以 n ≈ 8 σ p o o l e d 2 δ 2 n \approx \frac{8\sigma_{pooled}^2}{\delta^2} n≈δ28σpooled2 样本均分只有两组均分才能使两组的样本量均达到最大并且使总样本量发挥最大使用效率从而保证A/B测试更快更准确地进行。所以此时 n ≈ 2 ∗ 8 σ p o o l e d 2 δ 2 n \approx 2 * \frac{8\sigma_{pooled}^2}{\delta^2} n≈2∗δ28σpooled2 非均分样本的缺点 在非均分的情况下只有相对较小组的样本量达到最小样本量实验结果才有可能显著并不是说实验组越大越好因为瓶颈是在样本量较小的对照组上准确度降低。如果保持相同的测试时间不变那么对照组样本量就会变小测试的Power也会变小测试结果的准确度就会降低延长测试时间。如果保持对照组的样本量不变那么就需要通过延长测试时间来收集更多的样本 估算实验组和对照组评价指标的差值 δ \delta δ 从收益和成本的角度进行估算业务变动会带来一定的额外成本包括不限于人力成本、时间成本、维护成本、机会成本等也会带来一定的额外收益因此可以计算指标至少提高多少才能使得净收益为正。通过历史数据计算评价指标的波动范围置信区间样本均值 ± \pm ±z分数*标准误差同衡量评价指标的波动性因此可以计算指标至少提高多少才能高出波动范围的最大值。 计算实验组和对照组的综合方差 σ p o o l e d 2 \sigma_{pooled}^2 σpooled2 概率类指标 σ p o o l e d 2 p t e s t ( 1 − p t e s t ) p c o n t r o l ( 1 − p c o n t r o l ) \sigma_{pooled}^2p_{test}(1-p_{test})p_{control}(1-p_{control}) σpooled2ptest(1−ptest)pcontrol(1−pcontrol) p c o n t r o l p_{control} pcontrol为对照组中事件发生的概率即在没有A/B实验下通过历史数据计算得到。 p t e s t p c o n t r o l δ p_{test}p_{control}\delta ptestpcontrolδ δ \delta δ为上个步骤预估的差值 均值类指标 σ p o o l e d 2 2 ∗ ∑ i n ( x i − x ˉ ) 2 n − 1 \sigma_{pooled}^2\frac{2*\sum_{i}^{n}(x_i - \bar x)^2}{n-1} σpooled2n−12∗∑in(xi−xˉ)2 n为所取历史数据样本的大小 x i x_i xi为所取历史数据样本中第i个用户的使用时长/购买金额等均值类指标 x ˉ \bar x xˉ为所取历史数据样本中用户的平均使用时长/购买金额等 示例优化app某一功能提高用户注册率。计算所需的样本量 通过收益成本角度估算 δ 收支平衡 8.2 % \delta_{收支平衡}8.2\% δ收支平衡8.2%通过概率类指标计算 σ p o o l e d 2 p t e s t ( 1 − p t e s t ) p c o n t r o l ( 1 − p c o n t r o l ) \sigma_{pooled}^2p_{test}(1-p_{test})p_{control}(1-p_{control}) σpooled2ptest(1−ptest)pcontrol(1−pcontrol)。其中已知当前注册率约为60%则 p t e s t 60 % 8.2 % 68.2 % p_{test}60\%8.2\%68.2\% ptest60%8.2%68.2%。代入得 σ p o o l e d 2 0.46 \sigma_{pooled}^20.46 σpooled20.46 n ≈ 8 ∗ 0.46 0.08 2 2 ≈ 548 n \approx \frac{8*0.46}{0.082^2} \approx 548 n≈0.08228∗0.46≈548实验组与对照组样本量一致则总样本为1096
随机分组 实验分组的要求在同一时间维度下让组成成分相似的用户群参与到两组实验 定义具体表现就是每个指标在AB两组中要均衡一个好的办法是通过马氏距离来定义相似性 d ( G 1 , G 2 ) ( x ˉ 1 − x ˉ 2 ) T Σ ^ − 1 ( x ˉ 1 − x ˉ 2 ) d(G_1, G_2)(\bar{x}_1-\bar{x}_2)^T \hat{\Sigma}^{-1}(\bar{x}_1-\bar{x}_2) d(G1,G2)(xˉ1−xˉ2)TΣ^−1(xˉ1−xˉ2)原因只有排除其他协变量对实验的影响实验差异才能归因于测试变量的差异如何实现样本相似 随机化界普遍使用完全随机分组法Complete Randomization,CR即对用户ID字段进行哈希后对100取模得到一个结果值再将结果值相同的用户分入同一个桶AA测试规避不加策略对两组用户进行实验空跑观察基准指标是否显著差异。若存在差异则重新分组再重跑实验直至基准指标基本一致RR(Rerandomization)即在每次CR分组之后, 验证CR的分组结果组间差异是否小于实验设定阈值(例如0.1)相对于CR而言, RR是通过牺牲计算时间, 进行分组尝试.。相当于AA测试的工程自动化自适应分组算法(Adaptive)相比于传统的CR分组Adaptive分组的算法更加复杂在遍历人群进行分组的同时每个组都需要记录目前为止已经分配的样本数以及已经分配的样本在选定的观测指标上的分布情况。 实验结果差异的要求假设A组的结果为 r 1 r_1 r1B组的结果为 r 2 r_2 r2则AB测试的差异为 δ r 1 − r 2 \deltar_1-r_2 δr1−r2。 δ \delta δ为依赖测试样本的随机变量。应该满足以下特性 无偏性假设在1%流量上某功能可以提高10%的点击率那么在全量上也应该大约提高10%低方差方差越小可靠性越高 实验分组方式利用分层和分流的机制保证本站的流量高可用 原因流量是有限且宝贵的实验对象是多层的或者同一层内互不干扰的AB测试的需求是大量的 正交实验每个独立实验为一层层与层之间流量是正交的一份流量穿越每层实验时都会再次随机打散且随机效果离散。流量正交让业务关联度很小的实验有足够的流量同时进行(实现流量的高可用) 互斥实验实验在同一层拆分流量且不论如何拆分不同组的流量是不重叠的。流量互斥让业务关联度较大的实验流量分开避免干扰保证实验结果的可信度。 分层分流规则 规则详述 流量从上往下流过分流模型域1和域2拆分流量此时域1和域2是互斥的流量流过域2中的B1层、B2层、B3层时B1层、B2层、B3层的流量都是与域2的流量相等。此时B1层、B2层、B3层的流量是正交的流量流过域2中的B1层时又把B1层分为了B1-1B1-2B1-3此时B1-1B1-2B1-3之间又是互斥的 应用场景 如果要同时进行UI优化、广告算法优化、搜索结果优化等几个关联较低的测试实验可以在B1、B2、B3层上进行确保有足够的流量如果要针对某个按钮优化文字、颜色、形状等几个关联很高的测试实验可以在B1-1、B1-2、B1-3层上进行确保实验互不干扰如果有个重要的实验但不清楚当前其他实验是否对其有干扰可以直接在域1上进行确保实验结果准确可靠 用户进入实验的简单流程
测试时间的估算
AB实验所需时间总样本量/单位时间能得到的样本量用户行为的周期性大部分场景下用户在周末与工作日的表现有明显差异因此一次实现最少需要包含一周的时间
实施测试
初始应同比例分配极小的流量例如1%观察试验是否正常运行如果存在问题包括不限于投诉陡升、退订退费陡升、未监测到功能改变、没上报埋点等应该及时停止试验并回滚若上述未发现异常情况则可开始正常增加流量。如果实验中发现实验组数据明显较差应该及时停止试验并回滚一般性的试验开始阶段置信区间都是非统计显著的随着时间开始逐渐收敛。等到收集到所需样本且达到运行所需时间时。可以开始统计数据进行后续分析
分析测试结果
不要提前结束测试
由于样本量是不断变化的所以每次观测都可以算作一次实验。统计上A/B测试一般有5%的第一类错误率 α \alpha α也就是说每重复100次测试平均能得到5次错误的统计显著性结果。即存在多重检验问题提前观测到统计显著的结果这就意味着样本量并没有达到事先估算的最小样本量那么这个所谓的“统计显著的结果”就极有可能是错误的假阳性(False Positive)。即两组事实上是相同的而测试结果错误地认为两组显著不同
保障统计品质的合理性检验 检验实验/对照组的样本比例是否一致 测试数据要么属于实验组要么属于对照组符合二项分布。如果流量等分则进入实验组的概率为0.5根据二项分布的公式计算标准误差 S E p ( 1 − p ) n SE\sqrt{\frac{{p}(1-{p})}{n}} SEnp(1−p) 。然后以进入实验组的概率为中心构造置信区间最后确认实际的实验组占总体样本比例是否在置信区间内同理可计算对照组的。举个例子在一次等流量测试中实验组样本是315256对照组样本是315174。由于等流量分组因此样本进入实验组的概率 p 0.5 p0.5 p0.5则 S E 0.5 ( 1 − 0.5 ) 315256 315174 0.06 % SE\sqrt{\frac{{0.5}(1-{0.5})}{315256315174}}0.06\% SE3152563151740.5(1−0.5) 0.06%。则进入实验组的置信区间为 [ 0.5 − 1.96 ∗ 0.06 % , 0.5 1.96 ∗ 0.06 % ] [ 49.88 % , 50.12 % ] [0.5-1.96*0.06\%, 0.51.96*0.06\%][49.88\%,50.12\%] [0.5−1.96∗0.06%,0.51.96∗0.06%][49.88%,50.12%]。进入对照组也如此。计算实际的实验组占比和对照组占比分别为50.01%、49.99%都在置信区间内因此该次实验的两组样本量的比例通过了合理性检验 检验实验/对照组中特征的分布 常用的特征包括年龄、性别、地点、设备、活跃情况等信息特征分布合理性检验卡方检验、KS检验、相对熵KL散度、JS散度、PSI 检验不通过该怎么办 产生的问题实验/对照组样本量的比例和实验设计不相同时会出现样本比例不匹配问题(Sample Ratio Mismatch)实验/对照组的特征分布不相似则会导致辛普森悖论问题(Simpson Paradox)如何解决 和工程师一起从实施的流程方面进行检查看看是不是具体实施层面上两组有偏差或者bug。从不同的维度来分析现有的数据看看是不是某一个特定维度存在偏差。常用的维度有时间(天)、操作系统、设备类型等。比如从操作系统维度去看两组中iOS和Android的用户的比例是否存在偏差如果是的话那说明原因和操作系统有关
如何分析A/B测试结果
p值法当P值小于5%时说明两组指标具有显著的不同。当P值大于5%时说明两组指标没有显著的不同置信区间法如果置信区间包括0的话两组指标没有显著不同。而如果置信区间不包括0的话两组指标是显著不同的 经验总结一般地两种方法是等价的取其一即可。如果需要考虑成本收益的话建议选择置信区间法且要求差值 δ \delta δ的置信区间范围要比收支平衡时计算的 δ 收支平衡 \delta_{收支平衡} δ收支平衡要大 总结
从确定目标和假设到确定评价指标和护栏指标到确定实验单位到样本量估算到随机分组到测试时间的估算到实施测试到分析测试结果每一步都有规范的操作所以在日常中按照此步骤规范操作不仅能防止误操作还能定位误操作的原因。
共勉