编程学习网 > IT圈内 > 网络效应在A/B测试中的难题怎么解
2022
12-02

网络效应在A/B测试中的难题怎么解

传统A/B测试实验设计方法在很多有“网络效应”的商业模式中(如Facebook这样的社交网站、Uber这样的双边市场)都有一定的缺陷。那么该如何调整A/B测试的实验设计方法来适应这些公司特殊的需求呢?这是很多数据工作者都深感兴趣的问题,也是求职数据岗位中的高频面试题。
本文来自前OkCupid数据科学家、现Spotify高级数据科学家Brenton McMenamin,文章记录了作者在OkCupid(约会软件)担任数据科学家时期的A/B测试实验设计探索,被业内很多人称为A/B测试的神文
OkCupid是美国的一个在线约会、交友APP,它的一套独特的配对方程式,会让你回答各种问题,你可以选择自己的答案以及希望对方选择的答案,系统会根据你的回答来计算匹配度,帮你找到匹配的人。OkCupid的数据科学团队经常用A/B测试来来衡量一项新功能对用户产生的影响,可是,在这样的社交平台中做A/B测试,和典型的A/B测试又有什么不一样的地方呢?
 典型A/B测试中的随机分配是按用户进行的。例如,如果我们重新设计了注册页面,并且想对此进行测试的话,那么一半的用户将看到新页面(“实验组”),其余用户作为基准度量则看到旧页面(“对照组”)。按照每个用户随机分配是一种简单、有效的测试新功能是否会更改用户行为的方法(新的注册页面是否吸引了更多人来注册)。 但如果要测试的产品很大程度上依赖于用户之间的互动(例如约会应用程序),则按用户进行随机分配会导致实验不可靠,从而得出无法让人信服的结论。 

为什么按照每个用户进行随机分配有可能失败?

OkCupid的最终目的是让用户彼此进行交流,因此我们经常会测试新功能是否会让用户之间更加便捷且轻松地进行互动。但是如果我们基于每个用户进行随机分配,这对一些存在用户互动的功能来说是很难进行A/B测试的。 举个例子,假设我们的一位开发人员创建了一个新的视频聊天功能,并想在功能上线之前测试人们对这个功能的喜爱程度。我们尝试设计一个A/B测试,将视频聊天这个功能随机分配给我们其中一半的用户。但是,他们会和谁一起使用该功能呢? 只有当两个用户都具有这个功能时,视频聊天才起作用,因此有两种方法可以进行此实验:
1. 允许实验组中的用户与所有人(包括对照组中的人)进行视频聊天;
2. 限制实验组的用户只能与同时也被分配到实验组的其他人进行视频聊天。
 但这两个方法都有很大的缺陷 
如果让实验组与任何人进行视频聊天,那么对照组中的用户就不再属于对照组,因为他们接触到了这个新的视频聊天功能。可是,这又是一种不彻底的体验,因为他们可以被动地接受他人发起的视频聊天,但却无法主动与自己喜欢的人发起视频对话。 那第2种方法又怎么样呢?也就是把视频聊天的发起者和接受者都限制在实验组也就是说对照组的人不会有视频聊天功能。这个方法的最大问题是,这会导致实验组和对照组的用户体验大不相同,甚至产生很多会导致实验结果偏差的用户行为改变。这是什么意思呢?你只要设身处地地想一下,如果说只有实验组的人有视频聊天功能,那么实验组的人可能会有两种行为反应:
第一种反应:有些实验组的人可能觉得一个断断续续的不怎么好用的功能还是忽略它吧,等它结束了测试期我再用,所以他们选择完全不用。那这些完全没有使用这个功能的实验组的人,就会让实验的结果出现偏差,因为他们虽然被随机地分配在了实验组,但他们却没怎么接触实验操作(也就是这个视频功能)
第二种反应:有些人可能会非常喜欢这个聊天功能,并且在使用了之后,就只想进行视频聊天了,那么这些人就只会和其他那些也有聊天功能的人交友,而不会再去理睬对照组的人了(因为对照组的人没有聊天功能),也就是说,实验组的人只和实验组的人交友聊天了。那么这会有什么问题吗?当然啦!这样一来,对照组的用户就会发现他们对实验组的用户发出的互动邀请得不到任何回应,因为实验组的人只和实验组自己玩儿了。
因此,任何一种解决方法都将导致不准确实验的结果。 

高阶效应 (higher-order effects)

按用户分配的另一个限制是无法衡量“高阶效应”(也称为“社交网络效应”或“外部性”)。当由新功能引起的变化从实验组中“泄露”出来、并影响到对照组的行为时,就会产生这个效应。 上面视频聊天的例子中就说明了这个效应的存在,但是这些高阶效应其实可能来自几乎所有的实验,甚至是一些不会马上引起用户间互动的简单的东西。 假设我们要测试一条新的规定,要求用户在自己的个人资料中加入500个字符的简介。我们希望这条新的规定能提高这些用户的产品体验。因为我们预测,当一个用户编写更多有趣的个人资料时,其他用户就会更了解他,然后就会给他发送更多的交友邀请,从而提高了他自己的用户体验。但是,我们也可以预料到,对照组的体验也会因此有所改变,即使他们没有被要求添加500字符的简介,因为:当他们看到大量涌现的有趣的个人简介时,他们自己也会更想要主动发起交流,从而也提高了他们的用户体验。 因此,从理论上讲,这个变动对实验组和对照组用户的体验都有所改善,所以我们想要将此推广给所有用户。但是,如果我们按用户分配进行A/B测试,那我们可能就看不到这样的两边同时改善的效果了,因为这样的A/B测试寻求的是实验组相对于对照组的改进,而在这样的实验中,由于两组的用户体验都提高了,那么我们很可能在实验结果中看不到任何差异。 
在这种情况下,实验组相对于对照组的改进最终掩盖了用户行为的实际变化,因为对照组对这个变化也有所反馈,所以这种变化被隐藏了。高阶效应也有可能让你产生用户行为变化的错觉,一旦向所有人推出新的功能,这些变化就会消失。事实证明,你不能完全相信在社交网络中进行的AB测试的结果。 按照群体的随机分配(Using per-community random assignment)
一种替代方法就是把用户分到不同的群体,而不是按照每一位用户来随机分组。这个方法主要针对同一群体的用户。什么是同一个群体呢?也就是如果一群用户在一个平台上主要是互相之间产生互动,而不是和其他“圈外人“产生互动,那么他们就被归类为同一组。LinkedIn和Instagram的数据科学团队就曾讨论过这种基于群体的A/B测试。但是这种方法的难点就在于怎样为你的产品来分配“群体”。通常,对于社交网站来说,可以用社交图谱来模拟用户之间的关系(通过判断他们之间是否发送信息、是否加好友、互相关注等)。每个用户是一个节点,如果两个节点之间有联系那么就会在这两个节点之间填一条边。然后你就可以通过图流划分方法(Graph Partitioning)来把节点们分成不同的群组。 但这种方法不适用于约会类的应用,因为约会类应用的目的在于认识新的朋友而非现有的联系人。所以分配群体就需要用地域的方法分割群体(比如住得近的一群用户为一组),而不是相同好友进行分组。

如何通过地域来划分群体进行实验?

那么我如何通过地域来分割群体呢?在当今社会每个城市之间的距离都是非常近的,比如城市A的这个郊区有可能紧邻城市B, 郊区的用户可以和城市A或者城市B的人交谈。所以很难把群体分离的非常精确。但我们可以采取 Shi & Malik的归一化切割法(Normalized Cut algorithm),画一个边界,使边界内的连接数最大化。 举个例子, 设城市A与城市B之间通讯的数量是X。通过计算图像中的调和量可以知道这两个城市间的相关性。设置k为相关性的总和,我们可以通过改变k在一个很宽的范围内(从5到250之间),并通过测量区域之间的消息相对于每个区域内的消息的比率来测试每一组区域在识别可分离的用户社区方面的效果。
比如在美国和加拿大城市之间的最佳分离发生在36个区域解决方案上。在定义这些区域后,我们在没有进入分割分析的新鲜实时数据上验证了可分离性,我们发现约95%的互动(即消息、喜欢、个人资料浏览)发生在同一区域内的一对用户之间。所以这个方法是可行的。这也是我们在约会类社交网站上比较推荐使用的测试方法。
结论

总而言之, AB测试在概念上虽然很简单, 但实际应用到与社交相关的产品上就变得非常困难。由于用户之间的相互影响, 标准化的测试方法可能会引领错误的方向。这种问题没有通用的解法,而是应该根据具体问题具体分析。

以上就是“网络效应在A/B测试中的难题怎么解”的详细内容,想要了解更多IT圈内资讯欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取