Facebook如何进行商家侧的AB测试?

1.为什么要做A/B测试?

A/B测试示意图

互联网行业从业者对“A/B测试”应该并不陌生,A/B测试通过对比只有一个变量不同的同一产品的两个不同版本的表现来研究该变量的作用以及影响。

以上图图示为例,假设该场景为某内容产品,测试前对目标用户科学地随机抽样出对照组(control group, A组)和实验组(treatment group, B组),比如A组不变,B组的页面布局在文字内容,图片,颜色上有改变,若结果显示实验指标(比如用户的点击率、留存率)在B组中有置信的提升,那么可以选择B组的实验方案在全量目标用户上生效。

所以,为什么要做A/B测试呢?[1]

  • 风险控制:小流量实验可以避免直接上线效果不好造成损失。其次,实验迭代的过程中,决策都是有科学依据的,可以避免系统性的偏差。

  • 因果推断:我们相信 A/B 实验中的优化和改变最终能影响到线上数据以及用户的行为。在这个前提下,A/B 测试就是最好的因果推断工具。

  • 复利效应:A/B 测试是可以持续不断进行的实验,即使一次实验提升的效果不大,但是长期下来复利效应的积累会产生很大的变化和回报。

2. 为什么要做商家侧的A/B测试?

互联网时代,许多消费端产品其实都是双边市场(two-sided marketplaces),从连接买家和商家的商业产品,如阿里巴巴、亚马逊、京东、Facebook商店,到连接乘客与司机、旅客和房东的共享经济产品如滴滴、Airbnb,甚至包括连接浏览者和创作者的内容产品如抖音和YouTube等等。

本文谈到的产品是Facebook商店[2]。用户进入商店页后有商品的feed流,点击后用户可以给商家发消息,咨询更多信息,砍价等。

然而,这些消费端产品背后的搜索、推荐系统一般都只优化点击率、购买率等“消费者市场”(买家、乘客、旅客)关联的目标。从产品长远发展角度,优化“供应者市场”(商家、司机和房东)所关联的目标也尤为重要。

例如,在电商推荐场景下,如Facebook商店,扶持新商家是一个常见的需求,例如,我们打算通过对新商家提权(boost)的方式提高他们在推荐列表中的排序位置,当前排序函数(模型)我们标识为 [公式] ,新的排序模型我们标识为 [公式] 。我们会需要 A/B测试评估新排序函数对商家的扶持效果是否更好。

那么,商家侧的A/B测试应该怎么做呢?

  • 为什么不能做一般的A/B测试

一般的A/B测试是针对买家侧(如第1部分举例所示),而且每组流量一般比较小(如1%),所以如果在实验组中,新排序函数即使对新商家进行了扶持,但商家很可能无法感知变化,因为在其余99%的用户推荐列表里,这些新商家都未得到扶持。

  • 为什么不能简单地随机分组商家A/B测试

那么自然有人会问,能不能像随机切分用户一样,切分部分商家进行A/B测试呢?可以,但是会有错误。我们假设仍然以上述新商家扶持为例:

我们分别选取1%的商家做A/B测试。实验组中,新商家的商品,在实验组里面由于被boost,所以排序会靠前。然而,当实验推全至100%的商家,或者灰度发布、反转实验(如99%商家生效扶持策略,1%不不生效),此时就出现了问题,实验组里同样的商品在流量扩大后,排序很可能会变得靠后,因为现在有其他更多的商品得到了boost。因此,1%实验和100%推全的时候,新商家受到的影响因素是不同的,前者中的效果是虚假的膨胀,结果是不准确的。

这本质上是因为上述“朴素”的商家侧A/B测试违反了A/B测试中得到正确结论的重要的前提假设,stable unit treatment value assumption(SUTVA),翻译过来有点晦涩,叫做“个体处理稳定性假设”。在我们的例子中,不论是实验组还是对照组中的买家,其参与度(给商家发消息、购买等)只能依赖于所在室验组接受到的处理策略(例子中是排序函数),与其他组里的排序函数无关。显然,实验组中商品的位置不单单依赖于应用与他们身上的排序函数,也依赖于应用在其他商品上的排序函数。

3. Facebook如何进行商家侧的A/B测试?

针对“朴素”的商家侧A/B测试会遇到的问题,Facebook的工程师设计了一个非常巧妙的反事实的商家侧A/B测试框架。该设计基于一个反事实的特性:当在小流量的商家上实验时,实验组的商品位置排序和实验推全至100%流量以后位置排序相同。

具体方案如下:

每次请求的时候,分别由当前排序模型、新排序模型产出两个完整的排序结果。为了将两个排序结果合二为一,对于对照组中的商品,其最终的位置,在当前排序模型的排序结果中获得,对于实验组中商品,其最终位置在新排序模型的排序结果中获得。

(如图所示,其中 [公式] 表示来自对照组的商品, [公式] 表示来自实验组的商品。蓝色和绿色排序列表分别由排序模型[公式]和 [公式] 产出。)

这样一来,实验组的商品仅依赖于新排序函数,即使将实验组的新排序模型推全至100%流量,实验组中商品位置仍然不变,始终不受到其他组别中排序函数的影响,因此满足了SUTVA假设。

但是,两个排序结果会不会有冲突呢?会有,但是影响可以忽略。如商品 [公式] 的位置和 [公式] 的位置一样的时候就造成了冲突,但Facebook的做法很简单,直接随机地将一个置于另一个之前。为什么可以这么做?因为当流量小(比如1%的流量)的时候,冲突比例也很小,理由如下:

  • 列表Top10中同时包含实验组和对照组的概率是0.914%。

  • 假设列表中恰有一个实验组和一个对照组的商品,即使两个排序函数是完全无关的,恰好冲突的概率是10%。真实情况下,两个排序函数是高度相似的,越相似,其实冲突的概率就越小(理想情况下完全相同,概率是0)。

要注意的是,该方案要求一次请求同时进行两次打分,会增加一定的机器资源开销。

4. 有效性验证

为了验证提出的卖家侧A/B测试框架的有效性,需要验证卖家侧推全前后的一致性,以及买家侧和商家侧A/B实验的一致性。卖家侧实验观察的指标有两个,分别是接收到消息的条数以及成功率(接收到至少一条消息的用户占比)。买家侧实验观察指标是买家发送消息的条数。

  • 推全前后的一致性

蓝色和黄色分别表示卖家侧实验推全前、后的指标变化的相对值,黑色细线表示置信区间。如图可以看到,收到的信息数变化统计不显著,而商家成功率有显著提升。

  • 买家侧和商家侧A/B实验的一致性

买家侧发出的消息数理论上应该和商家侧一致。

他们上了三个实验组,从1至3,提权的强度逐渐变大。蓝色和黄色分别表示买家侧和卖家侧实验指标变化的相对值。如图可以看到,1组不显著,相比于2组,3组负向更多。买家侧和卖家侧实验趋势一致,符合预期。

5. 拓展

社交推荐的场景中,基于“同质性和社会影响“(Homophily and Social Influence)的假设,用户的行为会受到社交好友的影响,这会导致A/B测试时有上述类似的问题。举个例子,假设在类似于视频号的朋友页面下朋友推荐策略占主导的推荐场景中,推送的主要是用户好友有行为的内容,假设目前用户只能看到猫的内容,想做实验看看给用户只看狗的内容会有什么效果,由于小流量实验的时候,大多数好友都不在实验组当中,所以看到的内容基本都没有朋友的参与/推荐,然而,如果将实验扩大到100%的用户,朋友的参与度很可能将会是一样的(假设猫和狗的内容同样有趣)。因此,在社交网络的场景下,SUTVA假设往往不成立。

一种解决方案是采用基于聚类的随机方案( cluster-based randomization approach)[3],简单来说,就是在A/B实验之前,基于社交连接将用户进行聚类成集合/社群。最后随机分组是基于聚类处的集合层面来切分的而飞单个用户。

实现上,非社交场景下的卖家A/B测试,也可以用这种方法,但是为什么一般不建议这么做,这里留给各位思考。

6. 总结

Facebook为了更好的优化商家侧的目标,针对“朴素”的商家侧A/B测试遇到的问题,提出了一个商家侧的反事实A/B测试框架。该框架基于一个反事实的特性:当在小流量的商家上实验时,实验组的商品位置排序和实验推全至100%流量以后位置排序相同。他们在定性验证的实验中,观察到了实验与推全后、商家侧与买家侧的一致性。现在该框架已经在多个产品当中使用。

参考

  1. ^火山引擎 A/B 测试的思考与实践 https://mp.weixin.qq.com/s/45q4vrZQGLhFq6EmTypFMA

  2. ^A Counterfactual Framework for Seller-Side A/B Testing on Marketplaces https://dl.acm.org/doi/epdf/10.1145/3397271.3401434

  3. ^A Class of Unbiased Estimators of the Average Treatment Effect in Randomized Experiments. https://www.researchgate.net/publication/271390255_A_Class_of_Unbiased_Estimators_of_the_Average_Treatment_Effect_in_Randomized_Experiments

我们是设计师、工程师、梦想者,是您扬帆出海的私人顾问专家


相关内容:
[亚马逊开店深圳办事处地址在哪里]
[亚马逊开店深圳办事处地址在哪里]
亚马逊开店深圳办事处地址揭秘:一站式开店服务,轻松拥抱财富!各位亲爱的创业者们,你们好!今天要给大家带来一个好消息——亚马逊开店深圳办事处地址终于揭开了神秘面纱!在这里,
亚马逊开店卖翡翠怎么样?
亚马逊开店卖翡翠怎么样?
亚马逊开店卖翡翠:珠宝行业的巨大商机等你来挖掘!在炎热的夏季,一杯清凉的饮料、一本好书和一个精美的翡翠饰品,想必是很多人的首选。翡翠作为中国传统文化中的瑰宝之一,以其晶莹

TG客服:@SSjiejie — 官方频道:@SSwangluo

三生网络 © 2009-2023 超15年出海经验,跨境项目专家