淘系两年半A/B实验经历,聊聊我理解的“科学实验”

news2024/12/27 0:54:02

13b2eab5f588991ed58b95ff8e1acc18.gif

在淘宝天猫两年半的A/B实验经历里,我从零到一分别经历了货架电商-淘特的A/B实验能力建设内容电商-直播的A/B实验能力建设,前者更关注实验通用能力建设,后者更关注实验科学落地。在拥抱变化的当下,专注一个领域是幸运的,因此做个总结,聊聊我理解的“科学实验”怎么做。

17cae1c232609d6f70101460748f3d37.png

背景

在淘宝直播的这一年里,我先用一个月时间独自把昆仑镜(在淘特做的实验平台)换皮上线,其中包括工程架构优化、前端优化、资源部署、实验数仓建模、业务口径梳理等,没有什么能阻止一个enfp的全栈工程师~在随后时间里承接住直播绝大部分的业务实验需求和算法实验需求,也正是我技术身份与业务身份的高度重叠,我得以在下文中结合大量业务案例,聊聊实验科学怎么做

c27a91ae5fb6d841026fb7fec1107f36.png

725adefd89b69a64315111aeb61fad4e.png

业务目标科学:增长目标应该是长期健康、可量化验证的

  案例一:「蹊跷板问题」- 此起彼伏的运营实验

034c6ab86ca3d6ae3b69863b152ee4c1.png

  • 案例分析

从实验结论可以看出,该实验显著提升人均GMV同时显著降低用户体验;这类对冲指标在业务中并不少见,例如提高人均成交笔数的同时不降低比单价、提高人均观看时长的同时不降低人均成交金额等等,如果不同的小团队恰好分配到了对冲指标(组织架构常见问题),则大团队需要合理制定目标同时,格外关注对冲指标。

  • 当前解法
  1. 由大团队维护核心指标、围栏指标,通常这块需要业务leader、财务、BI多方确定。

308e54a3e247d687b29f4763ed274e14.png

  1. 归一化渲染核心指标和围栏指标走势,观察实验推全节点对其产生的直观变化;

34d8a6aa559c3cee4f34387bc6b40b0f.png

  1. 结合长期反向桶,验证实验增量价值。(图中未展示)

  • 思考:实验管理视角下的业务OKR指标应该怎么定?

通常业务制定OKR时,会以总体指标的提升为目标,例如GMV+10%,因此实验报告里也常常会紧扣目标出现GMV+3%这类的实验结论,然而实验推全之后,可能由于UV环比下跌导致GMV下跌,从而营造出一种:“实验报告都好看,就是大盘不涨”的错觉。这类问题通常有两个思路:

  1. OKR设定为可实验证明的指标(例如人均GMV),通过这个指标来量化评估实验价值;

  2. 严格反向桶管控流程,通过反向桶预估GMV贡献;

a91f4c5b44bdda2560f0a905804829c4.png

实验设计科学

在常规实验中,由于用户规模大,往往会默认随机抽取的样本组具有同质性,同时货架电商的用户网络相对简单(分享类实验除外),也不会考虑样本间的独立性。然而,小样本量实验往往会面临同质性问题实验单元的行为溢出同样会面临样本间独立性问题。

55289aac50d76f50a98f429d1892a9fe.jpeg

简化实验流程图

  案例二:「同质性问题」,小样本量实验难进行:新主播实验
  • 案例分析

业务假设:我们通常会做大量策略实验,来提高淘宝新主播的入驻体验,以某个策略为例,我们假设该策略能够有效提高新主播积极性。

实际情况:经过业务筛选后的可实验新主播样本量较少,而主播之间的个体差异巨大,因此随机抽取的两个样本组间指标波动较大,无法开展实验。

  • 当前解法思路

2cb30f075b7c4305441b1fcca32b8571.jpeg

  1. 方差缩减:围绕实验待验证指标,适量剔除离群点(注意:剔除过多会导致实验效果偏小,剔除过少会导致波动过大,经验上至少保留到99分位),如果依然方差过大,可以适当加工为长周期指标,本案例中主播单日成交金额差异过大,我们则取了三日平均成交金额。但是,这会导致实验回收数据周期变长实验可解释性可能变差,因此需要明确实验目的,再做口径处理。

  2. 指标&维度配平:通过离线处理,获取到指标数据分布相当、维度分布相当的多组样本。

    1. 如果样本量不是很小、组内差异不太明显,可以试试简单分组配平,即每个分组取相同比例的主播参与实验。

    2. 如果样本量过小,或组内差异较大,则可以使用模型做指标、维度的配平处理,本次案例采用协变量自适应随机方法,可以稳定通过AA检验。

  1. AA检验:保证分组结果具有同质性,确保实验结论可用,这块在下文详细展开。

  • 思考

小样本量实验由于其对大盘的影响较小、实现难度较大,往往容易被忽略,然而在精细化运营下,这类实验也开始逐渐被重视起来。关于小样本量的“小”我们也需要注意,在一个真实的商品降价案例中,重复随机采样500个商品1000次,发现其均值集合并不符合正态分布,调整到随机采样10000个商品后均值开始呈现明显正态分布,因此该背景下的实验可抽样数量不得小于10000。


  案例三&四:「独立性问题」,粉丝间的社群关系导致的用户行为溢出、主播间的流量竞争关系导致的主播行为溢出,这些实验怎么做?
  • 案例分析

业务假设1:我们希望探索权益表达方式不同带来的成交增量,实验的AB组用户看到的权益表达不同;

实际情况B组用户看到权益后,分享给A组用户,而A组用户进来是看到不同的权益表达,引起用户体验不一致问题

业务假设2:我们希望通过流量调控策略把流量倾斜给符合某特定规则的主播,从而体验成交金额。

实际情况:实验组里符合规则的主播确实获得更多流量,但在总流量池子不变的前提下,实验组的主播新增流量导致其他组主播流量减少,形成了实验组的行为溢出,导致实验的独立性假设不成立。


  • 当前解法

通过将时间分割成多个时间片,并以每个时间片作为独立的实验单元,我们可以确保在同一个时间片内的所有用户都会体验到相同的策略。这种设计有效地规避了用户体验的不一致性问题。同理,在每个时间片中,所有流量都会被统一分配至一个策略之下。这样的安排从根本上预防了流量竞争和用户体验的不一致性,确保了实验的公平性和有效性。通过时间片轮转实验,我们能够在任何给定时刻为所有用户提供统一的体验,从而在实验过程中维持一致性和避免潜在的干扰。

ea2e9fef9ad8de2baa6b5d704b034932.png

缺点:

  1. 由于其实验单元为时间,所以可统计样本量较少,导致实验效果评估周期长,同时日期切片容易受热点事件影响,导致实验结论偏差。

  2. 由于需保证实验单元的独立性,且日期天然存在延续性,因此要减少日期之间的影响,例如1号的策略会影响到2号凌晨的主播(因为主播的场次容易跨天),所以日期切割需要结合业务特点,灵活选择时间切片大小和切割点。

b61bf78acefb1e710867ffb495353fbd.jpeg

实验数据可用

07c045124131ca4bb07190344af3c5c8.jpeg

  案例五:「AA检验不通过」在一次下单返红包的实验中,在分析实验数据时才发现用户分布不均匀,导致实验结论严重错误,甚至得出相反结论,浪费实验期间投入的预算等资源。
  • 案例分析

这个案例中,实验假设没有问题,问题出在分流结果严重不同质,导致的实验数据不可用,充分实验AA检验的意义:不仅保证实验数据可用,更重要的是避免因果关系误判,沉淀错误业务认知,误导业务发展方向。


  • 当前解法

采用AA日志回溯检验,提前验证数据可用:实验平台根据进桶用户的过去7天数据,判断两组用户是否同质。结合案例,采用日志回溯可在分流数据出来后,通过回溯其过去7天数据,发现两组用户实际不同质,实验应立刻停止;

建议给实验分级管控,高成本实验必须空跑一天及以上,通过AA检验结果后再上策略。这并不影响实验啥上线效率,业务放提前一天以上创建好实验即可。新用户类的实验不适用于日志回溯。

AA日志回溯检验和AA空桶检验同属于AA检,AA检验主要包括三个方面:


1、分布均匀性检验

在这次案例中,实验组和对照组在购买力分层上严重不均,从而导致其核心指标也显著不均,无法获得实验效果。注意:

cccd5b8883ed462af728b2fc154997b7.png

注意:分布不均匀并不一定表示实验数据不可用,本次案例是由于分布不均匀引起了核心指标不同质,导致了实验效果无法验证;

2、方差齐性检验 & 统计检验

在这次案例中,购买力的分布不均已经引起了指标不同质。从下图可以直观理解不同质现象,假设实验组和对照组本身同质,那么他们的数据分布应该都在绿色区域中,随后因为实验组施加了不同策略,导致实验组数据分布从绿色区域移动到了黄色区域。如果实验组未上策略就已经移动到了黄色区域,那么我们是无法证明策略对实验的影响。

d108ced35b72721ecdaf6f9b1b160f58.png

本案例中,实验组通过日志回缩检验发现自身已经处于黄色区域,这是典型的不同质实验。

b29f3b1ce172072b1362c6d9a75cbd0b.png

图为检验结果

数据分布形状主要由均值、方差影响,因此我们只需验证均值、方差是否一致,即可证明分组是否同质。

  1. 统计检验:通过双样本T检验或者多样本ANOVA检验,比较两个独立样本或配对样本的均值差异,具体检验方法可以根据实验样本量大小、样本均衡性情况、样本组数量决定。

  2. 方差齐性检验:通过Levene's Test或Bartlett's Test来验证实验组和对照组的数据方差是否一致。如果p值大于常用的显著性水平(如0.05),则可以认为组间方差是同质的。

  案例六:「异常值问题』在一次打赏实验中,发现实验效果波动较大,排查后发现榜一大哥竟能左右实验效果
  • 案例分析

在这个案例中,由于实验的用户一致性,榜一大哥会持续进入同一个实验组,于是大哥上线的天数该实验组效果就很好,大哥不在的天数则表现平平。这种实验如果没有找到这个异常值,按照常规经验难以进行分析和迭代。

  • 当前解法

方差缩减:因为异常值会影响到指标的均值、方差,因此异常值除了引起汇总结果的波动外,实验的AA检验、AB检验也都会受影响。目前根据参与实验的实际样本量,采用常用手段:四分位数间距法、标准差法、Z-Score、孤立森林等方式做动态处理。


  • 思考

A/B实验是验证因果关系的黄金标准。错误的因,只会带来错误的果。做好数据可用性验证,保证因果关系的正确发现,是沉淀实验经验,建立实验文化的必要基础。

4d7c5ca91fb44a1ded49244f9d719b9d.jpeg

实验分析科学

在获得可用的数据基础后,我们开始关注实验分析的问题,图示为一个简化的实验分析流程。

8f8d07bd28761797b8d596bfb1ddfa26.jpeg

确定需要观察的指标&维度:

在上述案例中,可以发现漏看关键指标、关键维度都可能影响实验结论产出,且实际过程中实验往往需要下钻到关键维度,根据维度项里对实验的差异反应,寻找迭代方向。

  案例七:「实验正确看数」在提单价的实验中,我们发现实验的GMV提升明显,但是观看时长显著降低
  • 案例分析

由于提高了价格带,导致部分低购用户直接选择不看了,而这部分用户本身对GMV的贡献也不大,所以实验依然能够取得明显效果,然而低购群体里的较低年龄段用户他们贡献了较多的观看时长,因此该实验的观看时长也被显著降低。

因此得出一个业务经验:提单价的实验应避免波及(低GMV贡献但高观看时长贡献)的用户。


  • 当前解法

针对不同业务背景,提前确定看数范围(指标+维度),避免经验不足引起的实验观察错误,通常这块由业务方+数据同学共同制定。

f11da38f075c3e5d4deb3d3792fa7003.jpeg

2e09ce4e39507f8dee2c4aaa03f9deb3.png

判断低响应实验
  案例八:「低响应实验」活动入口做的AB实验,响应度太低无法分析实验数据。

18b86507cd3946729c4ebb39c2bf2230.jpeg

  • 案例分析

由于活动入口只开放在实验组,且实验组中参与活动的用户只有10%不到,因此我们需要评估的实验效果是对这10%用户造成的增量效果。

然而实际分析中,由于仅10%的用户参与,除了样本量过少难以评估实验结果外,更重要的是:经过一层行为过滤后(发生主动点击行为)的残存用户是否在心智上和普遍用户已经不同质了,如果不同质,则实验结果不可用。

  • 当前解法

和小样本量实验相似,核心是获得两组可比较的样本量;与小样本量实验不同的是,低响应实验有明确的标杆人群用于对齐,因此这里通常采用分层匹配或倾向性得分等方式来获得可比较的两组样本,进行最终的实验效果分析。

  定量分析

这块在第一篇文章中已经浓重介绍过,这里不再赘述。简单提及要点:没有置信度支撑的数据叫随机波动,不要当作实验结论

cad8ac353ad818734cb32c77b2df8a68.png

思考:

实验分析是实验的最终结果,其需要相关的业务背景和专业知识,才能获得一份高价值的实验分析报告,而实验报告对组织来说就是图书馆里的书籍,一份份书籍在组织里被丰富、被传承,组成了组织的实验文化。

基于此,我们可以微调一个大模型用于实验分析,它将负责结合历史经验、当前业务背景、当前实验数据给出一个超过人工的实验报告,同时通过和它交流获取业务知识,辅助判断实验假设可行性。

be2c71669f11e0c69b4015280012a5f2.jpeg

相关资料

实验推全最终会回应到业务目标达成,我在这块的推动经验较为薄弱,如何围绕业务目标建立可量化的推全标准,这需要多方的信任基础和强大的组织推力,以后补充。

感谢领导信任,让我有机会在直播业务中完善我对A/B实验的理解;感谢大佬的大力支持,感谢所有合作的产品老师、运营老师、算法老师、工程老师、数据研发老师、数据科学老师的大力支持。

11f8398617a7ea22f2dcb3eaaca9f4c6.jpeg

团队介绍

技术线内容技术团队,是承接淘天内容电商最核心的技术力量,团队拥有非常全面的内容技术领域布局,不仅覆盖音视频编解码、流媒体传输、低延时直播等多媒体技术,也包含计算机视觉、自然语言处理、多模态內容理解、AIGC等人工智能领域。
在内容技术领域之外,团队拥有强大的算法、前端、客户端、服务端、测试开发、数据开发、数据科学团队、负责面向亿级消费者提供服务的淘宝直播、淘宝逛逛、点淘等核心业务场域;
面向千万级商家、品牌、机构、达人的内容创作工具、内容运营平台内容商业化解决方案;以及面向淘天集团电商板块各业务线的内容管理、内容总线等基石平台。
简历投递邮箱:lilijianjie.ljj@taobao.com

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

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

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

相关文章

7: 分配器

文章目录 operator new () 和 malloc()stl 中allocator的使用allocators 内部实现vc的分配器 并没有太多的技巧可言下面是BC5的stl 设计GCC的allocators2.9版本GCC使用的allocator是什么?这里面cookie的作用 4.9版本的GCC allocator operator new () 和 malloc() 所…

Windows环境下VSCode C无法跳转自动补全

前言: 本文记录了自己在配置 Windows环境下 VSCode C开发环境的遇到的问题和解决方法。 参考: vscode c语言没有代码提示_clangd提示不生效-CSDN博客 VSCODE无法跳转_vscode 不能跳转-CSDN博客 vscode c/c环境配置(MinGW)调用第三官方库…

MySQL:多表查询练习

#1.出版社信息 与 图书信息 交叉连接 select * from 出版社信息 cross join 图书信息; #2.从“客户信息”和“订单信息”两张数据表中查询购买了商品的客户信息,要求查询结果显示客户姓名、订单编号、订单状态。 select 客户信息.客户姓名,订单信息.订单编号,订单…

C++ | Leetcode C++题解之第72题编辑距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1, 0));for (int i 0; i < word1.size(); i) dp[i][0] i;for (int j…

HR面试测评,如何评估求职者的责任心?

HR招聘的过程中&#xff0c;如何去分析求职者的责任心&#xff1f;候选人是否具备责任心&#xff0c;这决定着他的工作绩效的高低&#xff0c;是企业利益的屏障&#xff0c;也是个体职业发展的基础。 &#xff08;引用定义&#xff09;责任心是指个体&#xff0c;能自觉地认识到…

HarmonyOS NEXT星河版之在线考试功能实战

文章目录 一、目标二、基础搭建2.1 定义数据2.2 mock数据2.3 主页面布局2.3.1 布局规划2.3.2 标题栏2.3.3 进度条2.3.4 答题模块2.3.5 底部按钮 2.4 主页面逻辑2.4.1 加载数据及定义变量2.4.2 上一题、下一题 三、选项点击及高亮3.1 声明对象及变量3.2 给选项注册点击事件3.3 处…

Laravel框架使用图片处理简单教程

PHP图片处理扩展包使用 文中使用的是Laravel框架&#xff0c;更多框架扩展包请点击传送门-》更多框架集成 Intervention Image 是一个开源的 PHP 图像处理和操作 库。它提供了一个更简单也更优雅的方式来创建/编辑/组合图像,并且支持最常见的两个图像处理库 GD Library 和 Im…

经验之谈——正确选择矿用旋转式孔板流量计

说到孔板流量计大家除了想到矿用旋转式孔板流量计是不是还会想到价格&#xff1f;我们举个例子&#xff1a; 10块钱的停车费你觉得贵 于是抱着侥幸心理停路边 突然一张200的罚单贴车上 你才悔不当初 早知道给100停车费也愿意 当你真正需要质量和保障的时候 多高的价格你都不嫌…

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA&#xff08;故障模式与影响分析&#xff09;是一种预防性的质量工具&#xff0c;旨在识别软件中可能存在的故障模式&#xff0c;并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中&#xff0c;选择适当的时机进行FME…

【C语言】动态分配内存

内存的五大分区 1、堆区&#xff08;heap&#xff09;——由程序员分配和释放&#xff0c; 若程序员不释放&#xff0c;程序结束时一般由操作系统回收。注意它与数据结构中的堆是两回事 2、栈区&#xff08;stack&#xff09;——由编译器自动分配释放 &#xff0c;存放函数的…

CST电磁仿真软件远场源的导出调用和提取结果【小白必看】

远场源的导出&调用(1) 提取Hybrid仿真所需的远场源&#xff01; Post-Processing > Tools > Result Templates Tools >Farfield and Antenna Properties > Export Farfields As Source 混合求解(Hybrid Simulation)是对安装在舰船等大型平台上的天线进行仿真…

【docker】常用的Docker编排和调度平台

常用的Docker编排和调度平台 Kubernetes (K8s): Kubernetes是目前市场上最流行和功能最全面的容器编排和调度平台。它由Google开发并开源&#xff0c;现由CNCF&#xff08;云原生计算基金会&#xff09;维护。Kubernetes设计用于自动化容器部署、扩展和管理&#xff0c;支持跨…

EPSON的温补晶振TG7050SKN

EPSON公司推出的温补品振(TCXO)TG7050SKN&#xff0c;尺寸大小为7.0x5.0x1.5 mm&#xff0c;具有高稳定性(105℃℃高温)等特点&#xff0c;可输出10MHz~54MHz的频率可应用在网络同步&#xff0c;BTS&#xff0c;微波&#xff0c;以及需要符合Stratum3、SyncE和IEEE1588等规范的…

张大哥笔记:商标也可以赚大钱

一大早看群聊&#xff0c;发现群里几个小伙伴在讨论商标转让的事情&#xff0c;我一时兴起&#xff0c;就想知道怎么通过商标来赚钱呢&#xff1f;不查不知道&#xff0c;原来还可以这样用商标赚大钱&#xff01; 下面我给大家掰扯一下&#xff0c;首先我们来了解一下什么是商标…

LeetCode面试298,二叉树最长连续序列(Python)

开始想着dfs&#xff0c;两种情况 1.以root为根 2.不以root为根 但是这样需要两个dfs分别进行&#xff0c;那么时间复杂度就上去了。 class Solution:def longestConsecutive(self, root: Optional[TreeNode]) -> int:def dfs(root):# 以root为根节点&#xff0c;可以延…

递归与递推---题目练习

目录 1、递归实现指数型枚举 2、递归实现排列型枚举 3、递归实现组合型枚举 4、带分数 方法一 方法二 5、翻硬币 6、飞行员兄弟 7、费解的开关 递归是指在函数的定义中使用函数自身的方法。它通过不断地将问题分解为更小的子问题&#xff0c;直到达到基本情况&#xf…

【Gaea+UE5】创建基本的大型世界场景

目录 效果 步骤 一、在Gaea中生成地形 二、确定导出的地形规模 三、在UE中创建地形 四、验证UE创建的地形规模是否正确 五、使用M4自动地形材质 效果 步骤 一、在Gaea中生成地形 1. 打开Gaea官网下载软件 2. 打开Gaea软件&#xff0c;我们可以选择一个预设的山体 创…

机器学习——4.案例: 简单线性回归求解

案例目的 寻找一个良好的函数表达式,该函数表达式能够很好的描述上面数据点的分布&#xff0c;即对上面数据点进行拟合。 求解逻辑步骤 使用Sklearn生成数据集定义线性模型定义损失函数定义优化器定义模型训练方法&#xff08;正向传播、计算损失、反向传播、梯度清空&#…

Implicit Diffusion Models for Continuous Super-Resolution

CVPR2023https://github.com/Ree1s/IDM问题引入&#xff1a; – LIIF方法可以实现任意分辨率的输出&#xff0c;但是因为是regression-based方法&#xff0c;所以得到的结果缺少细节&#xff0c;而生成的方法(gan-based,flow-based&#xff0c;diffusion-based等)可以生成细节&…

JavaScript中的RegExp和Cookie

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f506;RegExp &#x1f3b2; 1 什么是正则表达式 &#x1f3b2;2 创建…