最近一段时间在负责公司AB测试平台的建设过程中,调研了很多竞品的通用做法,其中涉及到的数据整体解决方案,包括AB测试数据采集与数仓模型、AB测试指标建设、AB测试可视化方案等,借此机会我把自己总结下来的经验分享给大家。

01 什么是AB测试

在互联网领域,AB测试常指一种迭代方法,这种方法可以指导如何改进现有产品或者服务。以提高某个产品注册页面转化率为例,AB测试过程中,我们会设计新的注册页面,和原页面相比,展示位置不同。选择用来测试的用户,让一部分用户进入新的注册页面,另一部分用户进入原注册页面。通过比较两个注册页面最终的转化,来判断新的展示位置是否可以提升注册转化率。如果新注册页面转化率高,让所有用户都进入新的注册页面,完成产品注册页面功能的改进。

以上就是一个利用AB测试迭代产品功能的具体应用,总结起来AB测试主要有以下几个步骤:

1)分析业务现状,提出目标。通过分析业务数据,确定当前最关键的改进点,明确改进的目标;

2)设计优化改进方案。设计AB测试方案的产品原型,并完成相关功能的开发和上线;

3)线上控制流量比例。制定每个测试分支的流量比例,按照分流比例开放线上流量进行测试;

4)测试效果评估并决策。AB测试进行一段时间后,通过数据对比,对AB测试分支进行显著性检验,确定最终测试结论。

02 AB测试平台的诞生

一个完整AB测试过程,会涉及产品、开发、数据部门等角色,需要合作的人员较多,环节较复杂。对于一个之前没接触AB测试的人,熟悉其中的原理并完整的实施一个AB测试有比较大的难度。在一个中大型公司,每天进行的AB测试的数量可能达到几百上千个,非常依赖一个AB测试平台,需要平台降低每个AB测试的实施门槛,并通过自动化的工具提升每个步骤的效率。

从平台能力复用的角度分析,一个公司内产品的不同模块可能都会有不同的团队负责,对应不同的工程。每个产品模块进行AB测试,如果能有一个统一的AB测试平台提供能力,可以有效避免各个模块重复建设。

基于提效和复用的目的,一般公司都会组建一个团队,可能是数据团队,也可能是某一个业务团队,负责AB测试平台的建设,支持所有业务的AB测试需求。

03 AB测试平台的功能架构

AB测试平台由三个大的模块构成,包括AB测试配置管理、在线分流服务模块、效果评估模块。

AB测试配置管理后台,主要是用于管理每个AB测试需求,提供操作界面便捷的快速调整每个测试配置。

在线分流服务模块,为每个业务提供基于用户标识进行均匀分流的能力,并完成分流信息的数据采集。

效果评估模块,基于采集的用户行为数据,建设测试指标体系,为业务提供监控预警和数据分析服务。

04 AB测试数据采集

在设计公司内部AB测试平台的数据采集方案时,我们经历过两个阶段,我们将之命名为“客户端埋点”和“服务端埋点”。

我们刚推出AB测试平台时,采用的是客户端埋点。具体方案是让接入平台的业务模块,在上报用户行为埋点时,传入用户AB测试信息。以便在效果评估阶段,根据上报数据统计出不同AB测试分支的行为数据。

因为这种方案需要业务模块一次性从AB测试平台获取所有实验信息,并传入到埋点采集的公参中,对业务有比较大的侵入。

第二个阶段,是我们提出的服务端埋点的解决方案。具体是由AB测试平台完成用户分流日志的采集,业务模块只负责采集用户行为数据。在数仓分析阶段,通过采集的分流日志中用户标识完成数据匹配。这样的好处,是业务模块无需在数据采集时添加AB测试信息。

客户端埋点方案的优点很明显,因为原始日志有AB测试信息,数据清洗统计时比较方便。但是缺点是会增加客户端的工作,在数据上报时需要拼接AB测试信息。线上同时运行的AB测试很多时,拼接上报的埋点数据时,url可能过长,存在被截断的风险。

服务端埋点方案的优点是,AB测试平台和业务客户端各自完成日志上报,且客户端只关心自己命中的策略及业务逻辑处理,与业务无关的事情涉及较少。缺点是原始日志需要进行用户标识进行关联,关联的逻辑不固定,增加了数仓建模的复杂度。

考虑到让平台能够快速推广给业务使用,降低业务接入门槛,我们采用了“服务端埋点”这种方案。

05 AB测试指标体系建设

我们在建设AB测试指标体系时,主要有两种应用场景:AB测试分流均匀性校验和AB测试效果评估。

· 均匀性校验

AB测试是基于用户标识的流量划分,底层原理是通过hash算法进行分流的。

hash(ID,layer)%100

hash算法有2个重要的特性:均匀性和一致性。

均匀性:是指流量唯一标识进行上述取模计算后均匀地落在每个区间。例如,将全站流量分成100份,那么ID%100的值为0~99,必须做到每个值分配的流量几乎相同。

一致性:是指某个流量唯一标识取模的值是一定的。例如某个流量的唯一标识符经过算法模块取模后的值为1,那么下次再经过算法取模的值还是1。

AB测试过程中,分流的目标是确保分流后的不同人群,人群对应的用户属性和用户行为一致。虽然hash算法分流,可以做到尾号号段分布均匀,但实际过程中是不一定能确保用户均匀的。我们经常遇到,因为存在不少异常用户,导致hash分流后,两组人群存在显著差异的场景,最终导致测试结论无法得出,白白浪费了时间。

所以我们的业务在AB测试过程中,会进行均匀性校验。通常的做法,是验证分流人群实验前在业务核心指标上无显著性差异。

针对以上诉求,AB测试平台提供了两个场景下的均匀性校验功能:

  1. AB测试确定分流策略时,计算过去一周每种策略,在选定的核心指标上,是否存在显著差异;

  2. AB测试运行一段时间后,根据每个分支分流的真实用户,计算其在选定的核心指标上,是否存在显著差异。

· 核心指标建设

效果评估指标分为业务核心指标和临时性指标。业务核心指标,指每个AB测试,都需要观察的指标。临时性指标,指当前模块的测试需要观察的指标,其他模块不需要观察。

一个公司的业务很多时,所有的业务核心指标无法都由AB测试平台来建设。这个时候需要联合业务的数据团队一起建设业务核心指标。

作为AB测试平台需要协同指标管理平台、数据开发平台、BI可视化平台为各个业务的数据团队提供核心指标接入的能力。具体功能有以下几个模块:

1)对接指标管理平台,获取业务核心指标范围,及指标元数据(指标名称,业务口径,指标类型,数据源,计算逻辑等信息);

2)对接数据开发平台,根据核心指标计算逻辑,生成计算任务,负责产出每个AB分支核心指标计算结果

3)对接BI可视化平台,将每个AB分支的核心指标结果和显著性等结论呈现出来。

对于用户而言,从AB测试需求的创建到最终效果评估,能在一个平台完成,是一件美妙的事情。

AB测试平台的那些事相关推荐

  1. AB 测试平台的设计与实现

    AB 测试(以下称为「试验」),本质是把选择权交给用户,让用户决定什么是最好的.我们给参与试验的不同用户,分配不同的方案,收集用户数据并加以分析,最终确定最优方案. 试验方案的分配可抽象为一个哈希函数 ...

  2. 大数据ab 测试_在真实数据上进行AB测试应用程序

    大数据ab 测试 Hello Everyone! 大家好! I am back with another article about Data Science. In this article, I ...

  3. 如何支持亿级用户分流实验?AB实验平台在爱奇艺的实践

    01 背景 随着互联网公司的产品和业务越来越多样,利用数据来驱动业务决策成为必然,而AB实验正是以数据指标来判断产品功能和运营策略迭代效果的方法和工具,其可以在保证样本同时性和同质性基础上,对比两个或 ...

  4. 阿里云开放国内首个云端数据库测试平台,云已成为数据库新标准;华为5G随行WiFi发布;科大讯飞推出 AI 专用语音芯片系列……...

    戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周五第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧! ...

  5. python 数据逐个验证_案例实战 | Python 实现 AB 测试中常见的分层抽样与假设检验 (附代码和数据集)...

    在这里插入图片描述 作者 l 萝卜 本文会将原理知识穿插于代码段中,相关代码和数据集可在公众号 " 数据分析与商业实践 " 后台回复 " AB测试 " 获取. ...

  6. 【案例】泰康集团——泰生活APP A/B测试平台场景应用

    "本项目案例由 火山引擎 投递并参与由数据猿&上海大数据联盟联合推出的"行业盘点季之数智化转型升级"大型主题策划活动之<2021中国企业数智化转型升级创新服 ...

  7. AB实验平台在贝壳找房的设计与实践

    作者雏鹰(企业代号名),目前负责贝壳找房增长方向AB实验平台研发工作. 引言 ​ 随着贝壳找房业务的不断增长,精细化运营显得尤为重要.为了保证每一次迭代,每一个方案能够真正得到用户的认可,为贝壳带来有 ...

  8. AB测试(Test)——原理与实际案例手把手教学

    使用Python进行AB测试--Udacity课程最终项目演练 目录 使用Python进行AB测试--Udacity课程最终项目演练 0 AB test基础知识巩固 1. 项目背景 2.实验概述 2. ...

  9. 辛普森悖论如何影响AB测试

    Simpson's paradox occurs when we observe a certain trend in the aggregate data but not in the underl ...

最新文章

  1. 宏基因组文章目录(9月1日更新)
  2. 在VSO8中使用QT
  3. 【Flutter】StatefulWidget 组件 ( Image 组件 | TextField 组件 )
  4. JavaScript实现单词首字母大写的方法集锦
  5. 【转载保存】java8新特性学习
  6. JDK10安装与配置
  7. QTP Reporter类封装
  8. MariaDB的官方手册译文
  9. C++读取局域网内其他计算机共享文件夹的文件
  10. android手机内存越来越小,安卓手机因软件安装失败 导致手机内存越来越小解决方法...
  11. 数学建模方法总结(matlab)
  12. 字符串哈希--聪聪的加法等式
  13. 农村土地承包经营权综合管理系统(延长30年改革试点)
  14. ShareSDK for Android 版本:V 2.5.0发布
  15. turtle画一张支票
  16. ios android流畅度,流畅度如iOS!国内最流畅Android手机推荐
  17. 5GNR漫谈15:OFDM与IFFT
  18. html h1 不自动加粗,HTML中页面编辑打印,字体不统一打印无法加粗的解决方法
  19. 小红书网页版timestamp2
  20. 诺基亚:手机免钱,靠服务收费

热门文章

  1. 敷完面膜后要擦水乳吗_敷了面膜还要擦水乳吗 敷面膜后还要擦东西吗
  2. 关于计算机专业的求职信英文怎么说,关于计算机专业英文求职信
  3. Python 列表与元组(史上最全攻略)
  4. 函数查找工具 —— 使用介绍
  5. 企业付款到银行卡API~~
  6. 08机器学习实战之BP神经网络
  7. 游戏中Buff机制及其实际运用
  8. 从经典动力学理解勒让德变换
  9. 天龙八部TLBB从0到1搭建教程-下
  10. lol现在哪个服务器有无限火力,lol国服什么时候出的无限火力(无限火力详细开启时间)...