聊聊AA实验的波动性

当我们在实验评估系统上开启一个实验组和对照组配置一摸一样的实验时,我们称之为AA实验。AA实验通常用来辅助观察指标在产品不做改变时的偏差范围。我们通常会在实验里加一个和对照组一模一样的实验组来观察这个偏差,而如果这个偏差很大,通常你的AB实验也容易结果不置信。本文的目标受众是需要在实验评估系统上做实验,发现AA实验的指标差异很大,又懒的再回去翻大学概率论课本的同学们。以最低的学习成本使用实验评估系统拿到高效的产出,也是实验评估组的愿景,所以我们会用尽量通俗的语言展开描述,如果你看不懂,随时拿着你的水杯来砍我(别忘了先把热水倒掉);当然,记得先留言指出没有说清楚的地方,我们会改正。

闲话少说,我们开始:

波动?啥叫波动?为啥我的AA实验指标会有波动?

举个例子。假设我在实验评估系统上开了一个AA实验。实验开启一段时间之后我们去看产出的实验指标Read/U(平均每个用户每天会有多少次阅读),虽然分配到两个组的用户使用的是完全一样的产品,但是两个组汇总到的 Read/U 均值总是有多多少少的差别。如果你重复开这个实验很多次,你会发现每次两个组上的差别都不太一样。

这种出现在AA实验上的不稳定的指标差,就是我们说的波动

产生波动的原因很好理解,一句话来说就是”随机性”。下一秒打开头条的那个用户今天会读几篇文章这完全是随机的,不可预知的。所以当你开两个完全相同的实验组的时候,因为每个组里的用户今天会读的文章数完全随机,所以最终我们拿到的两个 Read/U 指标的差别也是随机的。

怎么描述AA实验指标的波动呢?

描述波动的方法很多,对应AB实验这个应用场景,我们用 置信度置信区间来描述波动性。如果你忘掉这两个统计学概念的话,就不要去网上查了,简单说就是:

你做无数多次AA实验,指标的差落在某个范围内(置信区间)的概率有多大(置信度)

假如我们知道头条主app的 Read/U 指标,200W入组用户的AA实验在置信度为95%的时候上下波动0.62%,说明大概率下,我们做一个AA实验,Read/U 指标的变化比例会在正负0.62%以内。

如果你做的AB实验预期 Read/U 会上升 1%,那么恭喜你,做实验验证去吧;如果你做的AB实验预期 Read/U 会上升 0.1%,那么不好意思,这个变化太不明显了,假如最终实验结果真的上升了0.1%,我们很难判断这是策略生效导致的还是波动导致的。

那么问题来了:

【问】你告诉我的波动在0.62%,为啥我的AA波动出现了0.78%? 【答】因为你有95%的概率波动在0.62%以内,还有5%的概率你会遇到指标超过0.62%。出现这种意外的概率(5%)还是要比买彩票中奖高太多。最简单的办法就是重新再开一次实验。

【问】5%的意外概率我无法承受,怎么办?【答】那就看看置信度为99%的波动值吧。当然,这个数字一定会比95%的波动值大,比如说0.81%。也就是说只有1%的概率,你的AA实验波动会超出0.81%。

【问】可是我的预期变化只有0.68%,不要说0.81%,就是0.62%,变化也不够明显啊!【答】加流量吧。试想一下你在掷硬币,你抛硬币的次数越多,拿到正面的次数越接近0.5, 这说明 实验的越多(进组用户数越大),指标的结果越稳定(波动越小)。当入组用户数升高到800W时,你会发现95%的置信度下,波动会降低到0.31%。【是的,你猜对了,波动与用户数的平方根呈反比,所以用户数升4倍,波动会降一半,如果感兴趣,回去复习概率论吧】

分流不是均匀的吗?怎么入组用户数也有波动?

用户的潜台词是:”你们在逗我吗?”还真没有。再举抛硬币的例子,分流的时候一个用户会进入哪个组就好比抛硬币时会出现哪个面。因为进入哪个组和出现哪个面一样,都是 随机的。所以无论分流策略多么完美,入组用户数和其他指标一样,都存在波动性。

什么影响波动性?不同产品的相同指标波动为何不同?

入组用户数

入组用户数对波动的影响前面说过,这个不难理解。入组用户数越多,波动性越小。所以当做实验的同学发现AA波动很大时,可以考虑一下提高实验流量来提高入组用户数数量,从而降低AA波动。

指标稳定性(标准差或方差)

指标标准差描述的是指标取值的稳定程度。举一个射箭的例子。如果有小张小王两个人射箭,平均都拿8环,小张比较稳定,大多数时候都射中8环,少数时候射中7环和9环;小王发挥很不稳定,大部分时候要么10环要么6环。如果小张先射100次算平均分,再射100次算平均分(等价于我们在小张这里做了一次AA实验),两个平均分的差别体现的就是波动性。很显然,小王指标的波动性要大很多,因为他本身射箭不稳定。

类似的,例如 Comment/U 指标,因为它的取值稳定性特别差,所以我们总是能看到这个指标的波动要大于 Read/U 这些稳定性稍好的指标。怎么描述指标的稳定性呢?算个标准差吧。

有同学曾经问过为什么相同的指标相近的入组用户数,在同一个产品的国内版本和国外版本波动不一样。可以简单的看看这个指标在两个版本上的标准差,如果不出意外,波动大的那个版本的标准差也会较大。

你们是怎么计算波动性的呢?

先辈们提出并证明了一条统计学公式,简单且不严谨的说就是,如果已知母本的期望与方差,那么从该母本上的任意样本数量为N的采样得到的期望满足正态分布;正态分布的参数与母本的期望,方差和样本数量N有关。

如果我们把某个app一整天全量的日志数据作为母本,AA实验不过是在考察两个采样样本的期望的变化比。期望和方差我们都有,套入公式,我们就能得到发生在这一天的所有指标的波动性,并以此推测明天这些指标在相同app下的波动性。

其他资料

如果周末不需要陪男/女朋友,而且上面那些看得不过瘾的话,请阅读《概率论与数理统计》,随便谁出版的哪个版本都可以。

Original: https://www.cnblogs.com/softidea/p/14452167.html
Author: 沧海一滴
Title: 聊聊AA实验的波动性

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/547701/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 你的 SQL 还在回表查询吗?快给它安排覆盖索引

    什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键、聚集索引、辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引…

    技术杂谈 2023年7月25日
    051
  • 8086 汇编

    8086 汇编 1、8086汇编 介绍 2、8086汇编 内存交互 3、8086汇编 CPU 寄存结构 4、8086汇编 Debug 使用 5、8086汇编 段寄存器 6、8089…

    技术杂谈 2023年6月1日
    082
  • 我的知识星球~

    最近开始玩知识星球了。 在知识星球里面主要分享一些个人心得: 工作学习的心得体会,分享学习资料。 给热爱并愿意坚持ACM,并希望提高编程和算法能力的一些建议。 有兴趣的可以加入,希…

    技术杂谈 2023年5月31日
    082
  • excel表格宏的启用

    这两张图片都可以启用宏,任何一种方式都可以 方式1 方式2 posted @2022-03-26 16:27 LiuYanYGZ 阅读(383 ) 评论() 编辑 Original…

    技术杂谈 2023年5月31日
    077
  • AtCoder Beginner Contest 235

    AtCoder Beginner Contest 235 A – Rotate 思路分析: 因为他给的数是三位数,我们直接取出每一位,然后拼凑就可以了 代码如下: #i…

    技术杂谈 2023年7月24日
    065
  • 17. 二叉搜索树的最小绝对值和众数

    title: 二叉搜索树的最小绝对值 📃 题目一描述 题目链接:二叉搜索树的最小绝对值 🔔 解题思路 解法一:安装顺序遍历相邻作差,每一次保留上一个遍历的值,和当前遍历的值进行相减…

    技术杂谈 2023年7月24日
    065
  • APIO2022 打金记

    主场作战,优势在我! -2900¥。 中午在学校吃过饭来酒店签到,喜获电脑包一个,卫衣一件,饭票若干。 被要求在大厅录视频并喊出 “APIO2022,我们来了&#822…

    技术杂谈 2023年6月21日
    098
  • 下一步,敏捷!| 助力远程办公走向成功系列讲座

    新冠病毒的常态化让中国经济社会环境发生了翻天覆地的变化,彻底改变了很多企业在工作环境中的沟通及协作方式,并为企业带来更多不可预估的风险。 面对不断升级的风险,如何在制定灵活的办公政…

    技术杂谈 2023年5月31日
    081
  • 包机制

    ; ; 包机制 包就是装代码的文件夹。 为了更好地组织类,JAVA提供了包机制,用于区别类名的组织空间。 package 包语句的句法格式为: 一般利用公司域名倒置作为包名。 im…

    技术杂谈 2023年6月21日
    0102
  • Java基础语法(真随笔,不完整)

    ; ; 一、注释 (1)单行注释 // (2)多行注释 / / (3)文档注释 JavaDoc /* /(用来生成自己的API文档) 二、标识符 (1)都以A-Z、a-z、$、_ …

    技术杂谈 2023年6月21日
    090
  • kubernetes helm chart version appversion

    chart version appversion – 搜索https://cn.bing.com/search?q=chart+version+appversion&a…

    技术杂谈 2023年6月1日
    092
  • idea Transparent-native-to-ascii 是否需要勾选?

    首先看一下官方对该选项的解释: 第一段是说标准的Java api是用 ISO 8859-1编码 .properties文件的,所以如果你在properties文件中可以使用转义序列…

    技术杂谈 2023年7月11日
    054
  • 《大画汽车:图解汽车奥秘》—— 读书笔记

    ​ —— 图片来自绿洲·AE86 —— 本书是看过最浅显易懂的汽车书了,从汽车发展的历史,讲到发动机、变速箱等重要组件,从汽车行驶到安全,最后介绍了汽车的设计与制造流程,整体对汽车…

    技术杂谈 2023年5月30日
    093
  • 【邂逅Django】——(一)创建项目

    🔥 邂逅Django – 目录 ✅ Part 1:【邂逅Django】—— (一)创建项目 🛠️ Part 2:【邂逅Django】—— (二)数据库配置 🛠️ Par…

    技术杂谈 2023年7月24日
    061
  • 【笔试】2、勾股数元祖或者素勾股数

    package y2020.interview.huawei.gougushu; import java.util.ArrayList; import java.util.List…

    技术杂谈 2023年7月24日
    077
  • 当pytest遇上poium会擦出什么火花

    当pytest遇上poium会擦出什么火花 首先,创建一个 test_sample/test_demo.py 文件,写入下面三行代码。 def test_bing(page): p…

    技术杂谈 2023年5月31日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球