如何定义一个评价指标

这是上一篇文章什么是 A/B test的续集,上一篇主要讲述 A/B 测试的历史,这里接着讲如何选择指标。

从本人的经验来看,一个指标怎么选择确实重要,但更重要的是需要自上而下理解且落实科学实验。而不是拍脑袋想指标,中途随意更换指标,汇报时仅罗列有利的指标。

如果要用一句话解释,如何定义一个评价指标,那一定是“以始为终”。在定义一个指标的时候,要想一想为什么要定义这个指标,这个指标的定义是为了说明什么情况,如果这个指标发生变化,将需要怎么去解释它。

指标定义的两种情况

在这里,定义指标的时候有两类:一是不变量,即变量组和对照组的都应该相同;另一个是变量,即需要观察改变的量。

对于不变量,需要注意两者的总量是否相同,数据的分布是否相同。以上保证实验的正常进行。对于变量,首先思考高层次的商业指标。诸如收益、市场份额、用户量等。接下来就是细节的指标,如用户体验,网页停留时长。

例如,在游戏中,新手教程没完成的玩家,虽然不能直接知道原因,但根据经验,可能是引导时间太长、网络卡顿或者是别的原因。类似这样的情况,是用户体验上的问题。后面也会有一些方法提到如何去评估它。

在实验中,可能得到的不是想要的信息、或者实验时间太短,得到的结果不准确。甚至有些东西无法衡量,这种情况又该如何去评估它呢。别急,下面的内容会给你回答。

自顶向下设计评价指标

如何确定指标

  1. 高层次的指标(如:活跃用户数、点击转化率 CTR)
  2. 指标细节(如:如何定义用户活跃)
  3. 使用一组指标,并将他们整合为一个单一指标(如:总体评价指标(OEC))

对于评估,可以选择一个指标或一套指标。如果是使用一套指标,可以把他们聚合成一个指标,比如构造一个目标函数,或者是简单的加权指标。

最后一点需要考虑的是:指标的普适性有多少。如果你在运用 A/B 测试,最好能有一个指标能够贯穿整个体系。

举个例子:用户漏斗。

它表示用户通过站点执行的一系列步骤。 之所以被称为漏斗,是因为每个后续阶段的用户数都少于上面的阶段。 每个阶段都是一个指标——总数,比率和概率。

数据不足怎么办

有些数据可能难以获得,主要原因如下:

  • 没有数据的权限
  • 需要较长时间去收集数据

使用外部数据

其它数据收集的技巧:3种公司常用的方法

  1. 数据中间商
  2. 调研公司
  3. 学术文章

以上能够帮助你依照整个行业设定指标。

额外的内部数据

额外的内部数据也可被使用,例如:

  1. 回溯性分析:查看历史数据以找寻改变并进行评估
  2. 调研与用户研究:这个帮助你找到你想研究的点

以上办法的缺点是它只告诉了你相关性、没有告诉你因果性,而实验一定程度上可以解释因果。

最后,别忘了与你的同事交换意见,看看他们认为重要的指标有哪些。

附:[其它获得额外数据的方法](<https://s3-us-west-2.amazonaws.com/gae-supplemental-media/additional-techniquespdf/additional_techniques.pdf):

  1. 用户体验研究(UER)——高深度少用户。这也适用于头脑风暴,在 UER 中也可以使用诸如眼动相机的设备,同时回溯历史进行分析。
  2. 焦点小组——中等深度中等规模用户。能够在一些假设上获得反馈,但也容易陷入集体思想的情况(即真正的个人意见难以获得表达)
  3. 调研报告——深度较低但用户规模大。对于一些难以直接衡量的指标很有用。不能用于直接和其它指标比较,因为调研的对象和指标很可能与大盘不同。

指标的实际例子

高层次指标:点击率

  • 定义一:Cookie 的总点击次数除以 Cookie 去重后的总数
  • 定义二:被点击的页面数除以总页面数
  • 定义三:总的页面点击次数除以总页面数

可能还需要过滤爬虫、牟利等行为以消除数据偏差。通过切片来判断数据是需要偏置还是过分偏置。在过滤掉数据后,计算每个切片的评价指标表现。如果数据表现有偏差,那说明数据里可能还需要调整。

为了消除数据周期带来的周末效应,最好按周或者按年进行数据的划分。

指标的特性

指标的敏感性和鲁棒性

  1. 敏感性和鲁棒性:敏感性是指指标对所关系的事物是否足够敏感,而鲁棒性性是指对不关心的事物是否足够不敏感。这可以通过预先小规模实验,来验证指标是否符合直觉。另一个方法是使用 A/A 测试,也就是什么都不改变,以此来排除一些伪关系。
  2. 分布:通过对历史数据的分析得到。

指标的分类

4类指标

  1. 计数或者求和(如:访问页面的用户数)
  2. 指标的分布-平均数、中位数和百分位
  3. 概率与比率(rates)
  4. 比例(ratios)

绝对指标与相对指标的选取

比较测试组和控制组的最简单方法是做差。

如果在做大量的实验,比较好的方法是多做相对的比较。比如百分比的变化情况。

计算百分比指标的优势在于,你有一个明确的边界,该边界不会随着时间变化。如果同时在运行多组指标,那么你的绝对数据很可能经常变动。这时,使用相对指标的好处就显现出来了,数据不会随着系统的变化发生大幅度的改变。

相对指标的主要缺点是:其灵活性和比例的相对差异不如绝对指标明显。

参数估计

在实验前,需要检查指标的分布情况,以决定实验的规模、评估的置信区间以及支撑最后的结论。

如果要检查的指标分布区间很大,那么最后的结果意义可能不大。

为了计算置信区间,需要

  • 方差(或者标准差)
  • 分布

对于二项分布,估计的方差为 p(1−p)/N。估计的均值方差为σ^2/N。如果原始数据是正常的,则中位数将是正常的。但如果原始数据不正常,则中位数可能不正常。由于中心极限定理,平均值通常是正态分布的,而与原始数据的分布无关。

例如:

x <- c(87029, 113407, 84843, 104994, 99327, 92052, 60684)
stder <- sd(x)/sqrt(length(x))
conf95_min = mean(x) -1.96*stder
conf95_max = mean(x) + 1.96*stder
conf95_min
## [1] 79157.54
conf95_max
## [1] 104367

非参数方法

这是一种在不对分布进行假设的情况下分析数据的方法。 在谷歌,很少使用上面参数估计的方式,他们使用基于 A/A 测试的结果来评估方差。 如果在 A/A 测试中发现指标存在很多变化,则该指标可能过于敏感,无法使用。

比起进行多组 A/A 测试,一种方法是进行大量的 A/A 测试,然后进行自助(bootstrap)来生成多组样本并测试变化范围。

通过 A/A 测试,可以

  1. 将结果与期望进行比较(健全性检验)
  2. 根据经验估计方差,并使用对分布的假设来计算置信度
  3. 直接估计置信区间而不用做任何数据假设

总之,不同的指标具有不同的变化范围。某些指标的变化范围可能很大,即使它们具有商业或产品意义,也会使它们无法使用。对待他们,需要非常小心。

对于许多分析师而言,与实际运行实验相比,大部分时间用于验证和选择指标。能够标准化定义指标在测试中至关重要。

例如:网站延迟测试

定义:是在谈论加载第一个字节和加载最后一个字节的时间,还是说别的什么东西呢。

数据分布:此外,对于延迟,平均值可能根本不会改变。信号(例如慢速/快速连接或浏览器)会导致分布中十分集中,并且没有对应的调整方法。

对策:在这种情况下,就需要查看百分位分布。这里的关键是要建立起直觉,必须了解数据和业务,并与工程师一起理解数据是如何被记录的。