You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
13 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 05选取实验单位什么样的实验单位是合适的
你好,我是博伟。
上节课我们确定了实验的目标、假设以及各类指标那么今天我们就来讲一讲A/B测试的第三步如何选取合适的实验单位。
前面我提到A/B测试的本质就是控制变量实验。既然是实验那就要有实验单位。毕竟只有确定了实验单位我们才能在这个单位层面进行合理的样本分配Assignment从而决定哪些样本在实验组Treatment/Test Group哪些样本在对照组Control Group
谈到实验单位,你可能会问,这有什么难理解的,实验单位不就是用户吗?
其实,这是一个非常常见的认知误区。除了测试系统的表现外,在绝大部分情况下,准确地说,实验单位都是用户的行为。因为**我们在产品、营销、业务上所做的调整,本质上都是为了观察用户的行为是否会有相应的变化**。
那么问题就来了,很多单位都可以表征用户的行为。那到底是以用户为单位,以用户的每次浏览、访问为单位,还是以用户浏览的每个页面为单位呢?
这节课,我们就来学习下常用的实验单位有哪些,以及实践中选择实验单位的三大原则。
## **实验单位有哪些?**
虽然可以表征用户行为的实验单位有很多,但综合来看,我们可以从用户层面、访问层面和页面层面这三个维度来分别学习。
### **用户层面User Level**
用户层面是指,把单个的用户作为最小单位,也就是以用户为单位来划分实验组和对照组。
那么具体到数据中用户层面都包括什么呢其实主要是4种ID。
第一种ID是**用户ID**,也就是用户注册、登录时的用户名、手机号、电子邮箱,等等。
这类ID包含个人信息它的特点就是稳定不会随着操作系统和平台的变化而变化。用户ID和真实的用户一般是一一对应的关系也是代表用户的最准确的ID。
第二种ID是**匿名ID**一般是用户浏览网页时的Cookies。
Cookies是用户浏览网页时随机生成的并不需要用户注册、登录。需要注意的是用户使用的iOS和安卓操作系统也会随机生成Cookies但是这些Cookies仅限于该操作系统内部和用户浏览时使用的设备或者浏览器有很大关系。所以综合来看Cookies一般不包含个人信息而且可以被抹除因此准确度不如用户ID高。
第三种ID是**设备ID**。它是和设备绑定的一旦出厂就不可改变。设备ID虽然不会被抹除但是如果用户和家人、朋友共享上网设备的话它就不能区分用户了。所以设备ID的准确度也低于用户ID。
第四种ID是**IP地址**,它和实际的地理位置以及使用的网络都有关系。
同一个用户即使用同一个设备在不同的地方上网IP地址也是不同的。同时在一些大的互联网提供商中很多用户往往共享一个IP地址。所以IP地址的准确度是最差的一般只有在用户ID、匿名ID和设备ID都得不到的情况下才考虑使用IP地址。
这就是用户层面的4个实验单位它们的准确度从高到低的顺序是
用户ID > 匿名IDCookies/设备ID > IP地址。
为什么我要强调这4种ID类型的准确度呢这是因为**实验单位的准确度越高A/B测试结果的准确度才会越高。**
因此当我们确定了选择用户层面的实验单位时如果数据中有用户ID就优先选择用户ID如果数据中没有用户ID比如用户出于对隐私的考虑没有注册和登录或者是测试网页的功能无需用户注册和登录那么就可以选用匿名ID或者设备ID当这些ID都没有时再选择准确度最低的IP地址。
### 访问层面Visit/Session Level
访问层面是指把用户的每次访问作为一个最小单位。
当我们访问网站或者App的时候都会有后台系统来记录我们的每次访问动作。那么我们怎么定义一次访问的开始和结束呢
访问的开始很好理解就是进入到这个网站或者App的那一瞬间。但难点就在于怎么定义一次访问的结束。在一次访问中我们可能会点开不同的页面上下左右滑动一番然后退出也有可能只是访问了一下没有啥操作甚至都没有退出就进入了其他的页面或者App。
因此考虑到用户访问的复杂性通常情况下如果用户在某个网站、App连续30分钟之内没有任何动作系统就认定这次访问已经结束了。
如果一个用户经常访问的话就会有很多个不同的访问ID。那在进行A/B测试的时候如果以访问层面作为实验单位就可能会出现一个用户既在实验组又在对照组的问题。
比如我今天和昨天都访问了极客时间App相当于我有两个访问ID如果以访问ID作为实验单位的话我就有可能同时出现在对照组和实验组当中。
### **页面层面**Page Level
页面层面指的是把每一个新的页面浏览Pageview作为最小单位。
这里有一个关键词“新的”它指的是即使是相同的页面如果它们被相同的人在不同的时间浏览也会被算作不同的页面。举个例子我先浏览了极客时间的首页然后点进一个专栏最后又回到了首页。那么如果以页面浏览ID作为实验单位的话这两个首页的页面浏览ID就有可能一个被分配到实验组一个被分配到对照组。
到这里,我们就可以对比着理解下这三个层面了。
1. 访问层面和页面层面的单位比较适合变化不易被用户察觉的A/B测试比如测试算法的改进、不同广告的效果等等如果变化是容易被用户察觉的那么建议你选择用户层面的单位。
2. 从用户层面到访问层面再到页面层面,实验单位颗粒度越来越细,相应地可以从中获得更多的样本量。原因也很简单,一个用户可以有多个访问,而一个访问又可以包含多个页面浏览。
看到这儿你可能觉得信息量有些大这么多单位具体操作时到底怎么选呢不用担心下面我就通过一个“视频App增加产品功能来提升用户留存率”的具体案例来带你一步步地选出合适的实验单位。
## 一个案例:如何选择实验单位?
某视频App最近收到了不少用户反馈其中很大一部分用户希望在没有网络或者网络不好的情况下也能看视频。于是产品经理希望增加“离线下载”的功能来提高用户的留存率。
现在产品经理要通过A/B测试来看看增加“离线下载”的功能是否真的能提升留存。那应该怎么选取实验单位呢
如果把用户层面的ID作为实验单位的话即把每个用户作为最小单位来分组由于收集样本的时间比较紧迫可能收集到的样本量就不够。因此我们要去寻找颗粒度更细的实验单位来产生更大的样本量。所以我们可以选择访问层面或者页面层面作为实验单位。
数据分析师通过查看发现数据中有访问ID但没有pageview ID所以这里选择访问层面把每一次访问作为最小单位来分组因为一个用户可以产生多次访问。
这样一来样本量是足够了,但是我们分析计算实验结果之后发现,实验组的用户的留存率不仅没有上升,反而低于对照组。
这就很奇怪了,难道是因为“离线下载”功能导致用户体验变差了吗?这不是和之前用户反馈的结果相反了吗?
于是,我们再次对这些用户进行采访调研,得到的结论确实是用户体验确实变差了,但并不是因为用户不喜欢新增加的功能。那么问题究竟出在哪儿了呢?
其实,这里的问题就在于选择了不恰当的实验单位。在刚才的实验中,我们把每一次访问作为最小单位来分实验组和对照组,就造成了同一个用户因为有多个访问而被分到了不同的组。
所以,用户在实验组时可以使用新功能,但是被分到对照组时就会发现没有新功能,让用户很困惑。就好比,昨天你还在用一个很好用的功能今天突然消失了,是不是很沮丧呢?
所以,当业务的变化是用户可以察觉的时候,我建议你一定要选择用户层面作为实验单位。
在这种情况下如果样本量不足那就要和业务去沟通明确样本量不足需要更多的时间做测试而不是选取颗粒度更小的单位。如果不能说服业务方增加测试时间的话我们就要通过其他方法来弥补样本量不足会给实验造成的影响比如增加这次A/B测试使用的流量在总流量中的比例选用波动性方差更小的评价指标等方法我会在第9节课和你讲这些方法
回过头我们再看看这个案例,是不是可以提炼些选取实验单位的经验和坑点呢?没错儿,我将其归纳为了三个原则:
1. 保证用户体验的连贯性。
2. 实验单位应与评价指标的单位保持一致。
3. 样本数量要尽可能多。
掌握了这三条原则,你就能根据实际情况去选择最佳的实验单位啦!
## **确定实验单位的三大原则**
**1.保证用户体验的连贯性**
保证用户获得最好的体验几乎是所有产品的目标之一用户体验的连贯性尤其重要视频App的例子告诉我们**如果A/B测试中的变化是用户可以察觉到的****那么****实验单位就要****选择****用户层面****。**
否则,同一个用户同时出现在实验组和对照组,就会体验到不同的功能、得到不同的体验。这种体验的不连贯性,就会给用户带来困惑和沮丧,很容易导致用户流失。
**2.实验单位要和评价指标的单位保持一致**
为什么这么说呢?我们还得从统计学上入手去理解。
A/B测试的一个前提是实验单位相互独立且分布相同的Independent and identically distributed简称IID。如果两个单位不一致就会违反相互独立这一前提破坏了A/B测试的理论基础从而导致实验结果不准确。
举个例子。如果用A/B测试来检测音乐App推送新专辑的效果评价指标为用户的新专辑收听率收听新专辑的用户数量/收到推送的用户数量),这里评价指标是建立在用户层面上的,那么实验单位一般也要为用户。
假如我们把实验单位变为新专辑页面层面由于每个用户可以多次浏览该页面所以对于同一个用户的多次页面浏览每次页面浏览其实并不是独立的IID的假设前提就被破坏了那么实验结果也就变得不准确了。
所以,在选择实验单位时,你一定要记住:**A/B测试中的实验单位应与评价指标的单位保持一致。**
**3.样本数量要尽可能多**
在A/B测试中样本数量越多实验结果就越准确。但增加样本量的方法有很多我们绝对不能因为要获得更多的样本量就选择颗粒度更细的实验单位而不考虑前面两个原则。
所以我们选取实验单位的第三个原则就是:在保证用户体验连贯性、实验单位和评价指标的单位一致的前提下,可以尽可能地选择颗粒度更细的实验单位来增加样本量。
那么现在三个原则就讲完啦,我来给你总结下:前两个原则是一定要考虑和满足的,第三个原则则是锦上添花,有条件的情况下可以考虑。
## **小结**
这节课,我详细讲解了实践中常用的实验单位及其适用范围,也结合我的实际经验,给你总结了选取不同单位时需要考量的主要因素,让你真正理解并掌握背后的逻辑,从而帮助你在将来的实践中做出正确的判断。
我还给你总结了一个简化版的决策图,便于你回顾和记忆:
![](https://static001.geekbang.org/resource/image/65/d0/65b9c0277a2ef429ccd32832057147d0.png)
在实践中,我们要考虑的最重要的两点就是:**用户体验的连贯性、实验单位和评价指标单位的一致性**。毕竟用户是上帝,维持好的用户体验适用于所有的业务/产品。所以针对用户可见的变化比如UI的改进大部分的实验都是把用户作为最小的实验单位用户ID/匿名ID/设备ID同时也把用户作为评价指标的单位。
如果你想要更多的样本量同时A/B测试的变化是用户不易察觉到的比如推荐算法的提升可以用比用户颗粒度更细的访问或者页面作为实验单位。与此同时也要让评价指标与实验单位保持一致。
## **思考题**
你平时做A/B测试时是不是都以用户为单位的学完了这节课以后你可以再回想一下有些A/B测试是不是可以用其他单位为什么
欢迎在留言区写下你的思考和想法,我们一起交流讨论。如果你有所收获,也欢迎你把今天的内容分享给你的朋友,一起共同进步!