作者介绍
@阿L
热爱学习的数据产品一枚;
持续更新 AB 测试平台系列文章;
“数据人创作者联盟”成员。
你是否遇到下面的问题?
AB 测试前定好的观察指标需要人工跑数据获取,导致实验周期拉长;
观察的实验指标数据和 BI 上存在差距,需要找数据开发询问口径和统计逻辑,导致沟通成本增大。
在上面问题的背景下,今天和大家一起聊下 AB 测试平台的指标配置能力。
1 了解实验指标
实验指标是指,我们在 AB 测试过程中,定好的用来衡量实验效果的度量。例如下面的点击转化率就是我们定好的一个实验指标。
1.2实验指标的分类
从以下两个方面可以对实验指标进行分类。
类型:
比例型实验指标,例如点击转化率、次日留存率、CTR 等;
人均值实验指标,例如人均点击次数、人均下单金额等;
两类指标的差异体现在假设检验时计算样本方差的方式,其中比例型指标是基于伯努利分布近似计算。
用途:
核心指标,用来决策测试组胜出的直接指标,例如上面表格中通过点击转化率决策,得到实验组 B 胜出;
必看指标,每一个测试需要观察的指标,虽然测试功能可能对其无直接因果关系的影响,但不能对其有显著负向的影响;
除了上面提到的几类指标,偶尔会对比一些绝对值的指标,例如总的点击用户数、总的下单金额。笔者认为只有在进入测试组人数相同的情况下,对比这样的绝对值指标才有意义。否则还是需要转化成比例型或者人均值指标,进行对比。
2 指标配置的必要性
1、实验结论要快
AB 测试平台指标固化需要研发投入,有一定的人力和时间周期成本。若测试过程中依赖实验指标固化,会延长整个测试周期,最终导致 AB 测试无法快速迭代。
2、实验指标多,无法提前全覆盖
不同的 AB 测试,观察的实验指标不同。例如 UI 测试,会评估目标点击转化率;头条 feed 流测试,会评估人均阅读时长等。
把所有可能的实验指标都固化下来,100% 无法实现。有些指标只会在特定实验观察,固化下来也会存在浪费资源。
基于以上原因,AB 测试平台具备指标配置和管理能力必不可少。一方面提升必看指标固化的生产效率,另一方面对于个性化指标,提供了快速观察的可能。
3 指标配置的原理
指标配置是一个建立在数仓中间层模型结构上,进行参数配置化的指标开发系统。可按照一定的计算规则进行自由的拼装,实现自定义指标的功能。
3.1基于埋点事件进行指标配置
这类指标配置依赖埋点管理平台中的埋点元信息。例如我们要配置一个点击注册按钮人均次数,只需要选中名为 “点击注册按钮” 的埋点事件名称,聚合方式选择 “人均次数”,即可完成指标的配置。
这种配置方式的实现原理,笔者会通过下面一个简单的例子给大家介绍,同时基于这种思想后面会引申出另一种指标配置方式。
在数仓中假设我们的埋点数据存储下面的中间层 event_data_df 中。
我们通过以下 hivesql 可以生产出点击注册按钮人均次数的指标数据。
select
day,
count(*)/count(distinct uid) as index_value
from
event_data_df
where
event_id='click_purchase'
group by
day
其中 click_purchase 是我们配置的事件名称 “点击注册按钮” 对应的事件 ID,而count(*)/count(distinct uid) 对应 “人均次数” 的聚合方式。
不难看出我们配置的埋点信息,都会拼装成一定的 sql 提交到计算平台进行计算。计算平台通过计算引擎、任务调度将指标结果计算出来,并同步至 AB 测试平台进行展示。如果要对埋点事件参数过滤或结果展示维度的配置,大家可以思考下会对应什么样的计算 sql,这里笔者就不详细介绍了。
3.2基于数仓中间层进行指标配置
在介绍之前,先跟大家聊一下模板化思维的方式。
生活中大家可能遇到过这种场景,用微波炉加热食物。时间太短,可能不热。温度太高,食物过硬。假设我们给微波炉设定个程序,第一步先用高火加热,第二步再用中火加热,一共加热 5 分钟。加热鸡腿时第一步 4 分钟,第二步 1 分钟,防止高火时间短导致不热;加热馒头时,第一步 1 分钟,第二步 4 分钟防止高火导致食物过硬。
这个程序我们称为模板,每一步的加热时间是模板的参数,由我们加入的食物决定的。食物就是我们这个模板的配置项,决定模板参数的具体取值。
同样的思想,指标生产的计算 sql 中,笔者设定了以下几个参数,通过配置项进行指标的生产。
指标的数仓中间层,对应事件配置中的 event_data_df;
过滤条件,对应事件配置中的 event_id='click_purchase';
聚合方式,对应事件配置中的 count(*)/count(distinct uid)。
其中比较有难度的是对聚合方式的抽象,大家可以考虑下自己做的指标中,分别有哪些聚合方式。
4 指标配置可以带来什么
指标配置的核心思想,是建立一站式的指标可视化开发服务,覆盖了从指标定义、指标开发、任务调度、指标发布、指标应用的全过程。
指标配置应用在 AB 测试平台上,主要有以下优势:
1、指标计算逻辑清晰
每个指标基本信息、中间层模型、调度信息平台可查,数据血缘清晰明了。
2、指标口径和需求一致
AB 测试平台、BI 平台等数据平台展示的指标都是配置化生产出来的,相同指标口径和用户需求一致,不会出现跨平台的差异。
3、相同的指标需求,配置一次就够
配置的指标在 AB 测试平台上或者其他平台都可以使用,不需要重复加工生产。
5 企业内部和商业化 AB 测试平台的差异
根据笔者的调研发现,企业内部 AB 测试平台和商业化的 AB 测试平台,在指标配置功能建设上存在比较大的差异。
1、数据来源的差异
商业化 AB 测试平台会和埋点行为分析等平台形成产品合力,能够分析的数据大都是埋点 SDK 采集的用户行为数据。
而企业内部构建的数仓不仅包括用户行为数据,还有服务器日志、外部数据等。
2、产品目标人群的差异
商业化 AB 测试平台面向 B 端公司中负责数据分析的角色,且 B 端公司无法对数据源进行二次开发。
企业内部 AB 测试平台角色分工明确,数据开发负责指标生产,产品运营负责获取数据进行分析。
综上所述,企业内部 AB 测试平台指标配置会考虑提升数据开发指标生产效率,故而会优先选择基于指标数仓中间层配置指标的方式。而商业化 AB 测试平台,面向 B 端用户,需要降低配置门槛,会选择基于埋点事件配置指标的方式。
6 结尾
笔者所在公司的指标配置是一个独立的平台,在设计内部 AB 测试平台指标配置能力时,我们直接复用了指标管理平台的能力。在指标统计口径上做到了完全复用,保障了指标口径的统一。AB 测试平台负责在实验统计模型方面沉淀数据应用,如常见的实验样本量的计算、实验指标的显著性和置信区间的计算等。期待下期给大家分享这些统计模型的实现方式。