从不均匀性角度浅析AB实验 | 京东云技术团队

news2024/11/25 16:26:24

作者:京东零售 路卫强

本篇的目的是从三个不均匀性的角度,对AB实验进行一个认知的普及,最终着重讲述AB实验的一个普遍的问题,即实验准确度问题。

一、AB实验场景

在首页中,我们是用红色基调还是绿色基调,是采用门店小列表外+商品feed(左图),还是采用门店大列表囊括商品feed(右图),哪种更吸引用户浏览下单呢,简单来处理让50%的用户看到左图效果,让50%的用户看到右图效果,最终通过点击量,单量等指标进行比对得出结论,这是典型的AB实验场景

二、AB实验的定义

A/B实验就是针对想迭代的产品功能,提供两种不同的备选解决方案,然后让一部分用户使用方案A,另一部分用户使用方案B,最终通过实验数据对比来确定最优方案。

从定义里我们就可以看出来,最直观的一个概念,就是用户的分流,此时就涉及到分流人数是否均匀的问题,即人数比例的均匀性。

三、AB中的三个不均匀

1、人数比例的不均匀

目前AB实验的分流核心算法是通过的哈希算法,假设我们按用户名做为分流因子,使用murmurhash算法,以100桶制为例,确定一个人的位置的算法就是

//将用户名通过hash算法计算出一个整数
int hashNum = MurmurHash3.murmurhash3_x86_32(useName)
//整数值对100取模
int bucket = hashNum % 100;

当我们定义一个实验两个策略的人数均为50%时,那么

bucket为0-49的用户由AB系统标记为A,业务系统根据A标记,使得用户使用方案A

bucket为50-99的用户由AB系统标记为B,业务系统根据B标记,使得用户使用方案B。

可是我们都知道哈希算法并不是绝对均匀的,当100人时,基本上不会出现有50个人走A,50个人走B,但是1万个人的时候,两部分流量可能就接近了1:1,10万人的时候可能更接近1:1。

之前有位运营的同学问过,为什么不能用一种很均匀的算法,比如第一个人来了,放入A,第二个人来了放入B,第三个人来了放入A,第四个人来了放入B…,这样一天1W个人来,5000个取A策略,5000个取B策略。

假设我们真的这么做了,第一天是OK的,第二天进A只来了4000人,这样还是不均匀的,如果你第二天仍然按第一天的规则重新分配,这样会有一部分人乱了策略,不符合我们固定人群走固定策略的实验目的。

所以说这个不均匀是无解的,HASH算法是目前最理想的解决方案,前提是你需要一定的流量,流量越大,分流相对就比较准确。

2、人群素质的不均匀

我们假设流量足够大,人数比例很均匀了,但是还有个问题就是人群素质的均匀问题。这里的素质包括消费能力,活跃度,年龄等各种人群因素。

假设现在我们的活动统一采用的A策略(现状),我们想验证一下B策略(新策略)会不会带来客单价的提升,就直接做了AB实验,还按1:1比例来分流,发现使用A方案的人群客单价是100,使用客单价B的人群是96,此时我们能认为原有A方案优于B方案吗?其实是不能的,怎样确定这种人群素质的差异呢,可以采用AA实验,就是两部分人都走A,进行分开统计,可能会发现,位于0-49桶的人群本身客单价就是100,而位于50-99桶的人群可能只有94,这么看来B方案是能提升客单价的,因为位于50-99桶的人群本身指标就差一些。

当然AA不是必须的,可能你有整体的客单价指标,上了B策略后发现整体提升了,这种情况相当于灰度验证了,但实际情况是比较复杂的,整体指标你是不清楚的(因为这里的整体可能只是你取的业务中的一部分流量)。

所以解决素质不均匀的手段就是采用AA提前确定差异性,再在这个差异性基础上看差异的变化。

3、实验间影响的不均匀

这个不均匀性是最复杂的,一般做实验我们走两种极端:

第一种是完全不复用人群,每个实验人群都是独立的,这样的话效果比较准确,但是弊端是,当所有流量都被用去后,不能有新实验开始,必须等待有结束的实验后才能继续做。

第二种,所有实验都用全部流量,此时我们认为实验虽然互相之间有影响,但是这种影响是正交的,量大的时候应该是均匀的,如下图所示,P实验的两个策略人群,到Q实验时,对Q的两个策略影响是均匀的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FXa0Gl2-1682663096506)(https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-03-10-16-200Wn6KDEqJcwuMBn.png)]

这种可以满足无限个实验,想做多少实验都可以,但弊端是,实验太多,必然有影响不均匀的,且我们无法消除这种不均匀。

所以我们想能不能结合以上两种情况来处理呢,结合google的Overlapping Experiment Infrastructure文章我们设计出分层的实验管理模型

首先我们将总流量分成两部分,正交域,垂直域(含对比区)

我们假设如图取80%的流量用做正交阈,20%用作垂直域,垂直域中有5%用做对比区。

上图正交域下4个层,层内实验流量互斥,层间实验流量正交,我们将可能会互相影响的实验放到同一层内进行流量互斥,而影响不大的实验可以放到不同层内。

垂直域中的实验流量只能互斥,且不与任何实验正交,可以理解用最纯正的流量做实验,可以I1和I2两个策略间对比,也可以I1或I2和对比域(现状)比对。

那此时有一个很重要的问题需要解决,我们怎么确定哪些实验互相影响较大,需要放到同一层下。

有一些简单标准,比如入口不一样,目标不一样等等,这种可以放到不同层,我们可以忽略正交不均匀的问题,反之就不行。

比如活动页劵对单量提升度的实验和会员页面入会效果的实验,就可以放到不同层。

而首页上满减活动实验对客单价提升的实验和同样首页买赠活动对客单价提升的实验,最好是不共用用户,放到同层比较合适。

但对于很多实验是不太容易通过简单规则来确定的,需要大数据的同学和产品,甚至研发来共同决定实验放到哪些层和哪些实验互斥,这确实在实际的运作中是最难的点。

总之采用这种策略,可以复用流量的同时还可以降低不必要的互相影响,比较综合考虑了流量和准确度问题。

四、总结

现在我们对以上问题进行总结,从问题到解决方案上来认识ab实验

1、人群做不到绝对的均匀,只能通过HASH算法,结合一定的流量来解决。

2、通过AA实验,来提前确定人群素质的不均匀。最终的实验数据结合AA实验数据来确定最终效果。

3、设计出正交垂直域,正交阈内多个层,每个层内放可能相互影响的实验,层内互斥,层间正交,保留垂直域,为要求精准的实验留出流量,来解决实验间相互影响的问题。

本篇从核心分流与实验间相互影响角度讲解ab实验,希望能引起大家在做实验前能有更多的思考,来更准确的验证自己想要的效果,希望大家有兴趣的可以留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 探索程序 详细解读程序在运行过程中都发生了什么

目录 头文件-源代码 头文件重复包含 问题 解决方案 程序生成过程 预处理Preprocessi 编译Compilation 汇编Assembly 链接Linking 编译期-运行期 编译期确定 运行期确定 编译期错误 运行期错误 类和对象 宏 宏的其他用法 头文件-源代码 头文件(.h&am…

Baklib分享:关于FAQ页面的一些制作技巧

FAQ页面(Frequently Asked Questions)是企业网站中常见的一种页面,主要用于解答客户常见的问题。一个优秀的FAQ页面不仅能够提高客户的满意度,还能够减轻客服部门的工作量。下面将介绍一些制作FAQ页面的技巧,并推荐使用…

Mysql使用函数后不走索引怎么优化?

网上很多人说mysql一旦使用函数就不走函数,但是事实真的是如此吗?我先说明,并不是如此的,本篇文章会通过DAYOFWEEK()和substr()两个函数作为条件查询,看看究竟是否会走索引(其他函数同理)&#…

15.基于主从博弈的智能小区代理商定价策略及电动汽车充电管理

说明书 MATLAB代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 关键词:电动汽车 主从博弈 动态定价 智能小区 充放电优化 参考文档:《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现 仿真平台&#…

【ChatGPT】如何修复access denied you do not have access to chat.openai.com

文章目录 一、前言二、是什么导致 ChatGPT 访问被拒绝错误?三、如何修复 OpenAI 上的访问被拒绝?3.1 清除 Cookies 和缓存3.2 检查账户登录凭证3.3 允许请求的权限3.4 从其他浏览器登录OpenAI3.5 联系 OpenAI 客户支持 四、ChatGPT 支持的国家和地区 一、…

delphi使用Edge Browser浏览器组件

RAD Studio 10.4在VCL Web浏览器上具有一项新功能。它是Edge Browser,它具有新功能,并且比以前的Web浏览器更具兼容性。 这是在C Builder和Delphi中使用Edge浏览器的快速帮助。 在Windows上安装“ Edge ”版本从RAD Studio的GetIt菜单下载“ Edge SDK…

JMeter的使用(二)

九、直连数据库 通过直连数据库让程序代替接口访问数据库,如果二者预期结果不一致,就找到了程序缺陷。 获取某条学院的名字,放在百度搜索: JMeter 不具备直连数据库功能,必须整合第三方(jar包)实现配置数据库的连接通过JDBC Re…

token 登录流程

客户端用账号密码请求登录服务端收到请求,验证账号密码验证成功后,服务端签发token,发送给客户端客户端收到token,保存下来客户端每次向服务器发送请求资源,都携带token服务器验证token验证成功,返回资源

LINUX文件管理与编辑命令2

文章目录 一、LINUX文件管理与编辑命令总结 一、LINUX文件管理与编辑命令 Linux wc命令:统计字节数、字数、行数 Linux echo命令:输出字符串或提取Shell变量的值 Linux chmod命令:权限管理 Linux chown命令:修改文件或目录的所有者或所属组 Linux whereis命令:查找文件 Linux …

揭秘长尾关键词的力量:如何在搜索引擎上挤掉竞争对手?

现在,你已经掌握了SEO 的流程,知晓了网站优化的各种方法,也清楚了站外优化的技巧,但问题又来了:你知道优化网站,竞争对手也知道;你懂得站外优化,竞争对手也懂。在这种情况下&#xf…

AI工具究竟是帮手还是对手?

本文概要 近日育碧开发了人工智能工具 Ghostwriter,可以一键生成游戏NPC对话。不少游戏开发者担心AI写手工具的出现会让自己“饭碗”不保,但Swanson表示这个工具只是为了提供第一稿的 barks来减少对话生成工作的繁琐度。AI工具究竟是帮手还是对手&#x…

C++笔试笔记1(4399 西山居 深信服 剑心互娱 快手)

写在前头,这里面只是我在做这些公司笔试时抄下来的一部分题,并不全,但我会尽量把我所抄的每道题的知识点都贴上 1. Linux下支持的IO多路复用,有selec、poll和epoll,但Windows下仅支持select。 2. 新版C,智…

OpenGL(一)——初识和搭建

目录 一、前言 二、概述 2.1 光学 2.2 三通道 2.3 上下文Context 2.4 渲染管线 2.5 着色器Shader 2.6 缓冲区和数组 三、安装 四、运行 五、库API 5.1 核心库GL 5.2 实用库GLUT 一、前言 渲染render是用软件从模型生成图像的过程,也表示编辑视频生成想达…

2023年第二十届五一数学建模竞赛题目 B题超详细思路

详细思路以及发布视频版,大家可以去观看,这里是对应的文字版,内容相差不多。 B题:快递需求分析问题 B题的问题难度不大,难点就在于后几问的模型求解。问题多、模型多、冗杂,就是B题的特点。 难度 A>B…

代码随想录训练营day56|583、两个字符串的删除操作;72、编辑距离;编辑距离总结篇

583、两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 输入: "sea", "eat"输出: 2解释: 第一步将"sea"变…

vue3之vite创建h5项目1(创建vite项目、配置IP访问项目、配置多环境变量与预览打包生产效果、配置别名)

目录 vue3之vite创建h5项目101:创建vite项目02:配置IP访问项目 vite.config.ts03:配置多环境变量03-1:配置多环境变量之dev环境 .env.development03-2:配置多环境变量之test环境 .env.test03-3:配置多环境变…

精彩!openEuler 社区年度顶级会议发生了啥?

2023年4月20-21日,万涓汇流,奔涌向前,openEuler Developer Day2023(以下简称“ODD2023”)在上海以线上线下的方式圆满举办。 本次大会由开放原子开源基金会指导,中国软件行业协会、openEuler社区、边缘计算产业联盟共同主办&#…

移动端Touch事件点击穿透

文章目录 移动端Touch事件点击穿透问题原因解决阻止默认行为目标元素延迟隐藏 移动端Touch事件点击穿透 问题 在发生触摸动作约300ms之后,移动端会模拟产生click动作,如果touch事件隐藏了原来元素 则click总作用到它底下的具有点击特性的元素&#xff…

高铁列车粒子群算法及改进粒子群算法多目标单目标运行优化设计

问题介绍 根据表1、2、3 所列数据,以能耗、运行时间、舒适性为目标分别设计列车运行速度—距离曲线;完成单目标以及多目标优化下的列车运行对比;选择其中一种方案,设计列车速度跟踪控制算法并进行性能分析。 1 列车参数设置表优化…

陶渊明最有名的10首诗,闲适美好

他是中国第一位田园诗人,被誉为“古今隐逸诗人之宗”、“田园诗派之鼻祖”。 他是诗人、辞赋家、散文家。 他是陶渊明。 欧阳修:晋无文章,唯陶渊明《归去来兮辞》。 陶渊明不为五斗米折腰,挂冠而去,给后世留下一段…