Netfilx实例教学:如何在企业里有效落地A/B测试?

0.png

2007年,我加入了Netflix并管理一个团队,这个团队为Netflix网站创建个性化主页。要知道2007年的Netflix,刚刚从一个DVD租赁公司转型成为流媒体网站,终于实现了能让用户在自己的电脑上观看电影电视节目。而作为流媒体网站,个性化主页尤为重要。因此我加入团队后所要做的第一件事,就是为每一个即将影响用户体验的新功能和新变化进行A/B测试。

 

A/B测试背后的总体概念,是创造一套实验,有对照组和一个或更多实验组(在Netflix中这被称作‘单元’),对他们进行区别对待。在实验中,每个用户都属于唯一的单元,其中一个单元会被设计成‘默认单元’。这个单元代表着对照组,使用体验与所有没有加入实验的Netflix用户相同。——Netflix技术博客

1.png

Netflix的A/B测试流程是带有一个控制组和一个或多个测试组(Netflix内部称其为“cell”)的实验。每一个会员在一个指定的实验中只属于一个组,而其中一个cell被指定为“默认cell”。该cell代表了控制组,与其他没有被选中进行测试的Netflix会员享有同样的体验。随着测试启动,我们会追踪和记录特定的重要指标,例如播放时间和留存率等。一旦我们可以得出足够有意义的结论,我们就会进一步观察每组实验的效果,决定出每个版本中的优胜者。

于是这让Netflix从一开始就有了强烈的A/B测试文化。这种文化被Netflix的创始人Marc Randolph 记录在了《That Will Never Work》一书中。作为经验丰富的产品经理以及创始人,他想要探究什么方法才能确定有效性。

2.png

今天这篇文章,并不是像大多数关于A/B测试的文章那样笼统地介绍A/B测试的典型做法,而是为大家揭秘A/B测试在Netflix公司内部的后端流程实验平台数据库等,这可以让大家明白,要宏观地布局A/B测试如何在一家企业落地,需要怎样的技术支持与操作流程。

(文章略带技术含量,建议习惯快速浏览的读者,收藏本文,在合适的时间慢慢研读。)

A/B测试的后端流程

对于Netflix的产品来说,公司必须要注重产品的视觉效果才能充分达到吸引观众注意、改善用户体验的目的。所以Netflix开拓了一系列A/B测试用以完善图像选择,这套方法很好的解释了A/B测试的经典流程。

在下面这个例子中,我们希望通过A/B测试为某一部剧选出最受观众喜爱的海报。每一个cell(组)代表了一个备选海报。

3.png

我来详解一下这幅图:

  1. Netflix PS4 App调用Netflix API并生成一组JSON数据,包含了用户基本信息以及他们使用的设备。

  2. Netflix团队为A/B测试建造了一个客户端,这个客户端与Netflix的API相连,进而连结后台服务器并实时传输数据。

  3. A/B测试的客户端会与其他服务界面相连,收集更多的客户信息。

  4. 客户端向数据库发出指令,调用数据库中的数据以方便进行评估

  5. 在评估阶段:

    1. 服务器会首先检索每一个用户已经被分配的的所有测试组。

    2. 如果使用分批分配(batch allocation)的方法对用户进行分组,那么分组情况在进行测试前就已经明确。分批分配的优势是给了分析人员更多的灵活性,我们可以利用定制化的、简单或复杂的查询来进行测试。这些查询针对一个固定已知的会员集合,然后将这些会员集合添加到测试中。这种方法的缺点在于它缺乏分配新客户的能力,而且不能根据实时的用户行为进行分配。

    3. 如果使用实时分配方法(real-time allocation),服务器会评估用户相关信息来决定该用户是否应该被分配到其他测试中。如果是这样,该用户就会被分配到其他测试中去。实时分配提供了根据用户与Netflix的实时交互情况来进行配置的能力。只有满足特定规则且不会与其他测试产生冲突时,用户才会被实时分配到测试中。因此,该方法克服了分批分配方法存在的弱点。然而,实时分配的主要缺点是,应用和页面在进行加载时,会因为等待分配结果而引入额外的延迟。

    4. 当所有的评估和分配完成,服务器将完整的测试分组发送到A/B测试客户端,后者再将其传递到PS4 App Script。

  6. 在收到分组结果以后,PS4 App Script根据分组结果执行指令,在我们这个例子中,会给不同的组调用不同的海报图案。

  7. PS4 App Script(通过Netflix API)在UI中给用户展示相应的海报图案。

4.png

实验平台和数据库

了解了整套A/B测试的后端流程后,你需要为A/B测试准备一个“AB测试”数据库服务。在小型系统中,这可能是中央关系数据库中的一个表,但是最好用类似于Amazon DynamoDB或Apache Cassandra,将其设置为NoSQL数据源,保存细节的用户信息、抽样以及分组情况。Netflix使用的是Cassandra。我们会将分组的规则,以及测试数据存储在Cassandra数据库中。

5.png

该表为每位客户备注一行信息,注明他们参加的测试是什么,以及参加的测试单元,并且包括了加入时间的时间标志,以及测试是否处于正在进行中的标志。每当有客户连接到你的服务时,你都可以看到以上所有信息,并了解到他们参加的测试体验。每个客户都应进行少量测试。对于涉及客户的所有AB测试实验,应在你的整个系统中应用。

客户服务部门应该能够识别客户所参加的测试,并报告与测试相关产生的问题。如果对个别客户的测试频繁发生,那么应该迅速关闭测试。

 

有三种搭建数据库的方法。

  • 第一种方法,测试数据的最佳群体来源是从未见过该产品的新用户,所以测试应当作为新客户注册流程的一部分。新客户提供最具敏感性,以及客观的结果,并且他们在探索产品初期功能时通常最活跃。

  • 第二种方式建立在一些特定功能基础上,当客户满足特定场景条件时会被激活,例如在Netflix,当客户激活特定设备(例如iPad)时,他们可能被分配给特定于该设备的测试。

  • 第三种方法是随机选择一组现有客户。这有助于确保新的更改不会让习惯之前功能的顾客感到困惑。

测试样本

分配参与测试的用户数量将取决于几个因素(无需深入的统计理论),更多的用户会在较为显著的置信水平显示较小的差异。哪个测试是可快速获得且最重要的呢?这时,新用户注册成为了宝贵资源。如果考虑Netflix的经营规模,以及每天获得的新客户数量,那么与规模较小的竞争对手相比,他们可以进行更多,更大规模的测试,因此他们具有规模优势,可以用来调整产品,并保持较高的创新率。

6.png

假设你的一项服务有数百万的订阅者,且每季度增加约100万个新用户,即每天约10,000个新用户。(作为参考,Netflix在2019年第四季度每天增加近100,000个新用户)。如果要进行一个具有四个备选方案和一个对照组的测试,则可以将测试用户随机的分配为五组,并在每个测试组中每天设置2000个用户,直到每个单元达到10,000个为止。

然后,你需要等待几周,直到统计上显着的差异出现,然后再关闭测试。按照这样的规模,每个月都可以进行大量的新测试。现有的用户测试应该扩大数量,每个测试单元可增加到50,000个用户,并且应该从完全没有测试过的用户,或彼此之间不太可能交互的用户中选择。

测试结果的应用

被验证有效提高用户体验的A/B测试一般在测试结束后会为每个用户展示新功能,但如果在有些情况你对于新功能还是有所顾虑的话,你也可以使用“保留测试”(hold-back test)。“保留测试”的意思就是,每个用户都能看到新功能,但只有一小部分用户保留原有的功能和体验,以此确保新功能的确对所有用户都更好。

7.png

结语

A/B测试是研究用户行为最可靠的方式。我认为最好每月召开一次A/B测试会议,并让所有的产品经理和工程经理(包括高管)参加。在会议中展示出测试结果,并且从他们身上得到不同的反馈结果,接受尖锐的提问,以及有用建议。接下来以此确定需要进行后续测试的内容,要摒弃的内容,以及为客户开放的内容,并确定测试的新思路和优先级。

一个好的产品经理能够具有非常好的直觉和判断力。工程经理的角色是找到最快最简单的方法来实施该测试。数据科学家的目的是确保正确地收集合理的测试,并确定是否存在显着差异-不重叠的置信区间。

正如《LeanEnterprise》一书中所述,这些实践应用是基于某种假设之上的过程。如何改善在线服务或调整个性化算法的功能?以上所述是解决这个问题的基本。

如果你想学习科学、有效的、美国高科技公司内部使用的标准的A/B测试流程,不妨加入《A/B测试企业级实战训练营》二期!

在《A/B测试企业级实战训练营》中,你将使用一手数据,在业内专家的指导下,从零到完整地操作A/B测试在工作环境中实施的每一步细节。深刻领悟A/B测试在各类真实场景下、在企业中经常遇到的用户数据不完善的情况下,是如何通过实验设计克服现实难关,实现科学实验分析的。

8.png

在《A/B测试企业级实战训练营》中,你将获得:

  • 真枪实弹的A/B测试项目实操,真实数据+五大应用案例,从零学会A/B测试的里里外外!

  • 为你建立一个完整的、专业的、深度还原大公司的的A/B测试项目,让你在面试时可以自信展示自己亲自做的案例,成功拿下offer!

  • 从0到100真实操作A/B测试项目的全套流程:数据清洗、数据自动化处理、实验设计、实验执行、结果分析、报告展示。

  • 经历真实工作场景中的、各大互联网科技公司里使用的A/B测试流程,以及适应不同商业场景的各类实验/准实验方法。学会工作中最重要的分析方法!

  • 深度学习A/B测试实战中常见的测试陷阱及避免方法。

  • 牢固掌握公司里A/B测试项目中的实际SQL应用,为A/B测试搭建数据库、清理数据、创建数据集。

  • 学会用Python自动化实现A/B测试,为你的老板提高100%的工作效率!

    接受系统的统计训练,打下坚实牢固的统计基础,彻底明白A/B测试的统计原理、分析方法、实验设计方法、抽样准则。

  • 对互联网科技公司的深度剖析和指标介绍,让你自如面对各类面试考验!

  • 各大互联网、科技公司A/B testing面试题解题步骤示范与详细解析。

点击下方图片跳转至课程页面,了解更多项目详情:

本文来源:https://medium.com/swlh/ab-testing-so-you-know-what-really-works-662f5c18b354

9.jpg