共计 3952 个字符,预计需要花费 10 分钟才能阅读完成。
网络效应与 AB 试验
科技公司致力做出数据驱动的产品决策的趋势下,Lyft 也不能免俗。正因为如此,在线试验,或者说 a / b 测试,变得无处不在。AB 测试太火了,以至于你可能会认为它是一个齐全解决的问题。在这篇文章中,咱们将解释为什么理论状况相去甚远,在 Lyft 的拼车市场一样,零碎是依据网络动静倒退的。正如咱们将看到的,天真地将用户划分为实验组和控制组可能会影响您所关怀的成果预计。
在试验完结后要求 [数据科学家] 对后果进行剖析。[她]兴许能说出这个试验失败的起因。
— paraphrasing R. A. Fisher, 1938.
简略地说,Fisher 的意思是,实验设计很重要。以至于一个大意的实验设计有时会导致无法回答感兴趣的问题的数据。
例如: 峰时定价补贴
设想一下,如下图所示,整个 Lyft 网络被渺小的正方形区域所封装。当用户 a 和 b 关上 Lyft 应用程序 (大概在同一时间),左近只有一个驱动程序可用。咱们称这种状况为 供给有余。
图 1 . 典型的供给有余状况: 两名乘客和一名可用司机。在这个例子中,两位乘客都可能接触到峰时价格
在这种状况下,Lyft 有时会采纳峰时定价来维持驾驶员的可用性。峰时定价是以百分比示意的价格附加费,依据供给有余的水平 (+ 25%,+ 50% 等) 能够有不同的价值。为了简略起见,在这个例子中咱们假如峰时定价是二进制的 — 要么有(在某个固定值),要么没有。咱们还假如峰时定价的供应效应产生在一个比需要效应更慢的时间尺度上,因而咱们能够疏忽它们。换句话说,乘客对峰时定价的反馈比司机快。
假如咱们想要评估 Lyft 补贴 峰时定价的成果,即代表乘客领取峰时定价,甚至不向乘客展现。咱们将在随后的图片中用绿色标记示意取得补贴的乘客。
这里有一个乏味的比喻是对于两个平行宇宙的。咱们感兴趣的是 事实世界 和非事实世界 之间的区别,前者是用户在供不应求的状况下取得峰时定价,后者是 Lyft 补贴峰时定价。这两个宇宙如下图所示。请留神,如果没有任何干涉,咱们只能察看到整体状况,咱们称之为全局管制。另一方面,全局性的施策相当于对所有乘客给予峰时定价补贴。
图 2 事实和反事实的宇宙。在现实生活中(上图),两个用户都体验黄金时间。此场景也称为全局管制。在上面的图片中,两个用户都失去了峰时定价补贴——全局施策。咱们不能同时察看这两个平行的事实,并且在没有一些干涉的状况下察看全局管制。
假如外围指标是均匀实现单量(或冀望实现)。咱们想晓得这个数字在两个平行宇宙之间是如何变动的。让咱们假如一个简略的概率模型来简化这个例子。具体来说:
- 当没有峰时定价,乘客关上应用程序,看到有司机总是要求搭车
- 在峰时定价,同一位乘客有 50% 的机会要求搭车
- 无论是司机还是乘客都素来没有勾销过ーー每一个申请都会导致一次残缺的旅程
在全局管制状况下,乘客 a 和 b 的均匀乘坐次数为 0.75。为了找到起因且不失一般性,假如乘客 a 在乘客 b 呈现前几秒关上应用程序,随后半程退出,只管看到峰时定价,用户 a 也将产生一个订单,乘坐次数是 1。另一种状况,用户 a 将抉择不发动申请,那么用户 b 将取而代之实现一个订单。否则,两个用户都会回绝峰时定价,并且不会应用任何订单。依据对称性,如果 b 先关上,状况也是如此。因而,冀望是
在全局施策下,两位乘客都没有看到峰时定价,此时状况要简略得多。第一个关上应用程序的用户会主动乘坐,第二个用户就不太背运了。既然总是乘坐单程车,那么 1 也是一种冀望。比拟这两个宇宙,咱们看到全局均匀试验效应,也就是咱们想要预计的根本事实,是由
在咱们的简略模型中,补贴峰时定价导致了 1 / 3 的订单减少。这种试验成果在现实生活中当然是无奈察看到的。因而,咱们必须找到一些办法来预计它。
随机化乘客
A / b 测试干涉 (如补贴峰时定价) 的规范办法是将用户 (在本例中是乘客) 随机调配到实验组或控制组,例如将他们的用户 id 散列到桶中。在咱们的例子中,这种随机化的均匀后果是,一个用户看到峰时定价,而另一个用户看不到 – 如下图所示。这个场景对应于第三个 (互相排挤的) 平行宇宙!
图 3 . 随机用户试验的一种实现办法。在这个例子中,用户 a 在控制组中(暗藏峰时定价),用户 b 在实验组中(峰时定价补贴)
为了评估这种解决形式对于像这样的随机用户试验对外围指标的影响,人们通常会做以下操作:
- 将限定在控制组的用户预计全局管制下的外围指标。
- 将限定在实验组的用户预计全局试验下的外围指标。
- 计算 1 和 2 的估计值之间的绝对差
让咱们看看当咱们把这个逻辑利用到咱们的简略示例时会产生什么。记住,每个用户有 50% 的机会先关上应用程序。让咱们首先思考用户 b,他碰巧在实验组中(补贴峰时定价)。在咱们的简略模型中,如果她先关上应用程序,她保障会要求并实现一个订单。另一方面,如果她关上应用程序第二,她将实现一个订单当且仅当用户 a 决定不要求。这种状况也有 50% 的可能性产生,所以假如用户 a 首先关上应用程序,用户 b 心愿乘坐半程。综合所有这些,用户 b 的预期完单次数是
对于用户 A 来说,状况就更简略了。如果用户 B 先关上应用程序,用户 A 就不能乘车,因而在这种状况下,预期值是 0。咱们晓得,用户 A,谁看到峰时定价,在有司机条件下将要求中途上车。因而,A 预计实现的订单数量为
当初让咱们计算一下因为峰时定价补贴而带来的外围指标增量有多少。
显然,这比咱们下面计算的 33% 的实在成果大得多 — 咱们高估了峰时定价补贴的成果 6 倍!诚然,两个用户并不是很多,所以您可能认为这个虚构的 A/B 测试存在样本量小的问题。当然,一个用户实际上不能乘坐 0.25 次。然而设想一下,真正的 Lyft 网络是由这个两人仿真衍生而成的,它们都是随着工夫的推移独立进化的,以一个固定的速率为司机和乘客提供补给。咱们能够结构一个更大规模的例子,在大量相似用例下面计算依然实用。
统计推断
下面例子中产生的状况是因为一种称为 烦扰 (interference) 的统计景象(不要与推断混同)。为了正确定义它,咱们首先必须引入 潜在后果 的概念。潜在后果背地的想法很简略: 每一个 试验单位 (例如用户) 走来走去都带着两张纸,一张在前面的口袋里。在其中一张纸中写道,被调配到对照组。另一张纸上标记调配到实验组。这两张纸合在一起,就是一个单位的潜在后果ーー如果她加入试验,这些事件就可能产生在她身上。通常,单元调配给一个实验组被认为是确定性且惟一随机的。
因果推理的一个要害假如是,写在这两张纸上的内容不受试验单元碰巧失去的试验工作和试验中其余单元的工作的影响。当 a 单元的分组调配扭转 b 单元的任何潜在后果时,就会产生烦扰。这正是咱们在下面的样例中看到的状况,其后果是乘坐是否实现。当用户 a 的峰时失去补贴时,用户 b 不太可能实现乘车(不论用户 b 的峰时是否也失去补贴)。
在医学统计学中,烦扰的概念呈现在传染病疫苗的钻研中。疫苗对一个受试者后果的有效性取决于在他的社交圈中有多少其他人也接种了疫苗。换句话说,一个试验对象的医治能够给其余可能未经医治的试验对象提供爱护作用。后果是,实验组和未实验组之间的测量差别 (归因于疫苗的益处) 将会放大。上图中,用户 a 的峰时是对用户 b 胜利实现 Lyft 旅程的偏向的“爱护”——在这种状况下,这导致了对实在成果的夸张。通常,干预偏差能够产生在任何一个方向上。
Lyft 并不是惟一一家试图在 a / b 测试中缩小统计烦扰的科技公司。Google 和 eBay 的钻研人员在广告商或用户在网上拍卖中互动的应用程序中察看到了同样的景象。毛糙的随机化,比如说在拍卖层面,能够帮忙 (但不是齐全) 加重这种偏见。eBay 的例子特地适宜咱们的样例,因为作者形容的烦扰偏见绝对于供给和需要弹性。烦扰问题也呈现在社交网络的试验中,用户对医治的反馈可能会净化图中的邻近节点。对于绝对动态的网络,这个问题曾经获得了一些停顿,其中图聚类起着核心作用。让咱们的世界变得复杂的是,Lyft 网络是双面的(乘客和司机),它的图形构造具备难以置信的动态性。因而,烦扰很难明确地建模。
另类实验设计
随机化用户必定不是在拼车市场上构建在线试验的惟一形式。你能够抉择随机化应用程序会话,从方块到整个城市的空间单位,甚至工夫距离。这些试验单位越毛糙,在你的成果预计中对干预偏见的爱护就越强。然而,成本增加了估计量的方差,因为毛糙的单位天然少于精密的单位(方差比例是样本容量的一倍),有时也是不平均的。这个老本可能是微小的。尽管如此,在全局管制和全局试验配置之间的交替工夫距离对于 Lyft Marketplace 团队在试验晚期是一个胜利的策略。下表将这些不同的随机化计划置于偏差 - 方差折衷的间断体上。
表一 试验单元的不同抉择对应于偏差 - 方差折衷谱的不同点。在网络试验中,偏差来源于烦扰效应,方差来源于单元集基数的缩小,以及单元间的异质性
然而,要严格量化这些衡量,须要认真的模仿钻研。在咱们开始这项冒险之前,咱们须要形容 Lyft 数据迷信团队设计和构建的精密的仿真框架。侥幸的是,这正是咱们下一篇博客文章的主题,第 2 局部: 模仿乘车共享市场。 敬请期待!
你对试验设计, 市场优化, 或数据迷信感兴趣吗?Lyft 继续招聘中! 邮件至 chamandy@lyft.com.
参考资料
原文作者:Nicholas Chamandy 译者:Harry Zhu 英文原文地址:
https://eng.lyft.com/experime…作为分享主义者 (sharism),自己所有互联网公布的图文均听从 CC 版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR 专栏:https://segmentfault.com/blog…,如果波及源代码请注明 GitHub 地址:https://github.com/harryprince。微信号: harryzhustudio
商业应用请分割作者。