如何支持亿级用户分流实验?AB实验平台在爱奇艺的实践
共 4309字,需浏览 9分钟
·
2021-09-02 19:41
01
背景
随着互联网公司的产品和业务越来越多样,利用数据来驱动业务决策成为必然,而AB实验正是以数据指标来判断产品功能和运营策略迭代效果的方法和工具,其可以在保证样本同时性和同质性基础上,对比两个或多个实验组在同一应用场景下的效果。
以上边的实验为例,通常一个AB实验可以拆解出以下几个步骤:
(1)找出优化指标:提升用户的转化率;
(2)提出假设:改变前端交互的UI;
(3)创建实验;
(4)衡量实验效果:得出A组转化率为23%,B组用户转化率为11%;
(5)继续优化或者结束实验:得出A组更优,上线A组策略。
爱奇艺在日常业务中,有大量AB实验落地场景。具体包含以下几类:
(1)算法类
算法类AB实验广泛的应用在搜索、推荐、广告等场景。算法同学通过AB实验来验证每一个新的策略(例如召回,排序等)对业务的提升。
(2) 产品功能类
互联网产品形态的改动是可以被用户最直观感知的部分,一个错误的产品改动会对公司带来巨大的损失。通过AB实验小流量试错,验证效果后进行全量上线,降低产品迭代带来的风险。
(3)运营类
在提倡精细化运营的时代,运营团队会进行大量的运营策略。例如用户运营(新用户免广,沉默用户召回),会员运营(到期会员复购策略),内容运营(重点内容位置)。以上策略均可通过AB实验来衡量哪一类类运营策略是更有效的。
基于以上广泛的应用场景需求,爱奇艺搭建了一个AB实验平台,包含了实验管理、用户分流和效果展示等功能。本文将对爱奇艺AB实验平台的落地实践进行详述。
02
分流模型及相关概念
Google的论文《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》是互联网行业进行AB实验的理论基石,论文中阐述的重叠实验框架,使得可在一个APP上同时进行可以说是无限个数的实验。整个分流的模型如下:
图1 分流模型
模型中有几个核心的概念:
(1)域:一部分垂直切分好的流量,一个域可以包含若干层,一个层可以包含若干实验 。
(2)层:一个或者多个实验集合,层中每个实验的流量都是互斥的。层与层之间是正交的。
(3)实验:包含流量划分配置和指标配置。实验会将分配的流量划分为多个实验组,通过对比实验组的效果验证自己的假设。
03
架构实现
AB实验已经在各行业中有着广泛的应用,爱奇艺AB实验平台参考了业界公司成功案例结合公司技术业务现状进行构建。
如下图,根据调研,结合爱奇艺的业务特性构建了与业界常用方案的一些改进点。
第一,增加了初始化的接口。APP首页有一些时效性要求非常高的实验,如果通过后端服务获取实验配置信息,需要消耗一定的时间,通过公司的云控平台,将时效性非常高的实验,在APP启动那一刻实时调用AB SDK下发至后端服务中,节约了调用SDK的时间;
第二,在对业务提供SDK服务的同时,并发的通过在线服务的模式提供API获取AB分组。这样做的目的:全量人群实验为了时效性通过SDK方式获取用户所属分组。精准人群实验为了人群的精准性,通过封装API来提供对应的服务;
第三,与业界最大的不同点是,爱奇艺的AB日志并不是在前端埋点实现的,而是通过日志服务+AB SDK回放的方式来获取行为数据用户分组。后面在数据采集章节详细介绍这类改进的原因及带来的收益。
如上图所示,爱奇艺AB实验平台主要包含AB实验管理平台、AB SDK分流、效果评估三个模块,下面分别为大家介绍这三个模块。
3.1 实验管理平台
AB实验配置平台包含实验管理、指标管理。
实验管理方便业务方在平台上管理自己的实验配置和生命周期。
一个完整的实验配置包含实验人群、关联指标、流量划分和白名单几个核心功能。
(1)实验人群:针对不同业务需求选取的用户ID,目前分为全量人群和精准人群两种类型。
其中,全量人群是指不做任何限制的人群;精准人群是指基于用户画像和行为圈定的人群,例如某一城市的人群,对电影频道有偏好的人群。
(2)关联指标:每个实验需要关联好需要优化的指标,默认会关联该业务线的北极星指标。用户可以根据自己的需要添加其它的指标。
(3)流量划分:将分配给该实验的流量划分为多个分组,每个分组有唯一标识。业务方根据标识执行不同的策略。
(4)白名单:将用户ID分配到指定的分组。白名单用户会直接命中实验分组,方便业务方测试及特定内部用户可以体验实验分组功能。
用户创建好实验后,有可能因为人群特性等原因导致分组的实验效果差异较大,阻碍用户进行效果分析。
为了解决该问题,我们提供了AA分流的功能,确保实验分组的效果指标没有显著性差异。整个流程如图如下:
图3 AA分流
3.2 分流模块
AB系统提供了HTTP 服务和SDK两种形式的分流API供业务方使用。
最初AB系统提供HTTP 服务进行分流,HTTP服务的优势是改动灵活,并且不限制客户端的语言。但HTTP服务每次分流都需要请求后端服务,并且会因为网络原因出现抖动,某些延迟比较敏感的业务方无法接受。
后续开发了JAVA SDK 和 C++ SDK, SDK通过从AB服务定时获取实验配置,实现客户端分流,避免网络通信,缩短分流耗时。SDK 分流的过程如下图:
图4 分流流程图
3.3 效果评估
效果评估是AB实验核心环节之一,AB实验平台不但需要保证用户分流的公平性,还需对实验数据进行采集,效果统计,统计分析,以此来衡量实验的成败。打造AB实验实验闭环。
3.3.1 数据采集
传统的AB实验数据采集均使用数据埋点的方式,公司在最初进行数据统计时也采取了埋点的方式进行数据统计。随着实验数量增长,埋点方式开发模式过重,容易出现错埋漏埋的问题。会造成以下后果:
(1)耗费较多时间进行问题排查;
(2)一旦发现是埋点的问题,实验数据难以得到及时观测,需要发版修正,极大地降低了实验迭代效率。
因此我们决定放弃以前端埋点的方式进行数据统计。从推荐系统的特征回访功能得到灵感,天秤基于公司的数据中台、天秤SDK对日志数据模拟线上调用,对日志数据进行模拟回放,打上用户所属的AB实验实验分组,减少了对于APP埋点的依赖,实验效果数据可快速回收,及时评估实验效果。
3.3.2 效果统计
前面章节中,提到了两个重要的概念:
(1)AB实验管理平台对接了指标系统将指标都管理起来。
(2)使用了离线回放的方式,得到用户的AB实验实验分组。
基于以上两项改进,在平台上就可支持大部分实验效果的统计,无需分析师或者数据开发进行定制化的报表开发。
3.3.3 统计分析
在前一章节,实现了效果数据的分析。
在实验组与对照组之间的指标一般都会存在指标差异。
如下表格,实验组B相对于对照组,有0.01PP的点击率提升。这个时候能否认定为实验是成功的,我们可以全量上线B组策略呢?显然是不能的,因为无法判断这个实验波动是不是在一个合理的区间范围内,没有完全排除实验一些小波动带来的影响。
对照组A | 实验组B | 变化率 | |
CTR | 45.35 | 45.36 | 0.01PP |
因此我们需要从统计学的角度出发来判定实验是否是统计显著的,实验组与对照组之间是否存在显著差异。在介绍爱奇艺的统计检验方式之前,先给大家介绍下常用的统计检验方法。
Z检验:一般用于大样本(即样本容量大于30)平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数的差异是否显著。在国内也被称作u检验。
T检验:主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。T检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。
卡方检验:卡方检验是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
这里爱奇艺最终选用了T检验的方法。为什么会选用T检验呢?主要出于以下几个方面的考虑:
(1)通过前一章节,AB实验平台已经计算出了实验关心的各项指标,例如人均观影时常,对应场景的CTR,UCTR等日均指标;
(2)基于以上指标,以至少7天实验为一个周期(文娱类APP有周末效应),可快速的计算出实验组与对照组是否有显著差异。
由于篇幅原因,具体T检验的算法不在此赘述。
04
实践介绍
目前爱奇艺AB实验系统已经服务于公司多个业务线,线上实验个数1300+,真正实现了“通过数据驱动业务”。
下图是公司产品团队在爱奇艺APP 电视剧频道页进行的页面UI改版AB实验。提升用户使用时长是爱奇艺APP核心目标之一,基于AB实验步骤,产品通过对到访过电视剧频道页的用户画像分析特点,从产品的角度出发,将频道页的UI交互设计进行相应调整如下图:
A:电视剧频道页(旧)
B:电视剧频道页(新)
A组为对照组——旧版频道页样式,B组为实验组——新版频道页。
最后通过AB实验衡量效果,新版频道页的人均正片时长提升了17.85%,如趋势图,有着显著的提升。从数据上佐证新版频道页是要显著优于旧版频道页,佐证了产品优化是成功的,为产品优化提供了决策依据。
目前平台还在快速迭代中,未来有以下几个方向的改进点:
(1)效果评估集中统计显著的算法上,急需将功效算法纳入考虑;
(2)部分实验由于样本量不足,难以得到准确的实验结论。后续会基于实验目标提示值给业务样本量预估功能。
— 完 —
点这里👇关注我,记得标星呀~
前线推出学习交流一定要备注:研究/工作方向+地点+学校/公司+昵称(如JAVA+上海 扫码加小编微信,进群和大佬们零距离
END 后台回复“电子书” “资料” 领取一份干货,数百面试手册等 历史推荐
好文点个在看吧!