AB Test, 终于懂了!

图片说明

​开盖

大家好,我是午餐肉,这是我们在牛客的第一篇文章,我会结合自己粗浅的理解讲一下 A/B testing 的基础原理。感谢你点了进来,希望本文的内容会对你有所帮助。

Let the journey begin!

A/B testing(以下简称 AB test)可以说是统计学和计算机科学相融合的产物,在互联网圈子中有着举足轻重的地位,各大科技巨头要做产品研发、数据分析都离不开这个玩意儿。

所谓 AB test,就是测试用户对某个产品同一个元素A和B两个版本(只有这个元素不同)的反应差异,从而进行后续取舍判断。
图片说明

举个很简单的例子,我们打开手机,随便点开一个 app 都能看到许多的交互元素。你有没有想过,为什么这个按钮是圆形而不是矩形?为什么这段文字的颜色是浅灰色而不是黑色?为什么要把这几个功能的选项卡放在最前面?

这些选择该怎么做,谁说的算呢?开发小哥哥说的不算,产品经理小姐姐说的不算,你去找公司的老板,他说的也不算 —— 只有用户的数据说的算!

如果你是一款产品的负责人,你当然希望自己的产品做成用户最喜欢的样子,或者说人话就是,你当然希望自己的产品是最能把用户的 money 吸过来的样子。
图片说明

于是你开始做实验,在每改动一个地方之前都去喊一大波路人过来分成两堆,一堆人用A版本,另一堆用B版本,然后收集反馈。结果用B版本的人疯狂骂街、小嘴抹蜜、口吐芬芳……于是你开心的把产品全部做成了A版本。这个过程其实就是简化版的 AB test。

Let's go deeper.

下面我们聊聊 AB test 的细节吧。(让我甩几个英文上来撑撑场面的时候到了!)

图片说明

AB test的理论基础其实是统计学中的 Hypothesis Testing,即假设检验。

什么是 Hypothesis 呢?

简单说就是我们想要去证实的一个论点(比如:路飞能打败凯多)。但是在现实生活中,由于需要考虑的可能性非常多,我们有时很难正面证明一个论点。

这种时候不如反向思考:如果我们找到了足够的反向证据,那就推翻论点;如果我们没找到,那就承认这个论点。这也正是 Hypothesis Testing 的基础逻辑。

下面我们有请两个重量级的嘉宾:Null Hypothesis和Alternative Hypothesis。

  • Null Hypothesis:简称 H0,代表目前大家广泛接受的观点,比如某个公理(午餐肉世界第一帅);

  • Alternative Hypothesis:简称 Ha,也叫 Research Hypothesis,代表我们这次实验想要去证实的论点。

要注意的是,我们选取 H0 和 Ha 时一定要保证他们是对立的,专业角度形容就是 mathematical opposites,这样我们就可以通过推翻其中一个论点从而认可另一个观点,而 H0 往往就用来扮演这个不被看好的倒霉角色。
图片说明

所以我们的实验只会有两个结果:

  • 找到足够的证据去推翻 H0 (reject H0),Ha 胜利;

  • 没有找到足够的证据去推翻 H0 (fail to reject H0),Ha 跌落神坛。

是不是开始不耐烦了?别急,我们举个例子玩一下。

午餐肉很喜欢打一款游戏,在这个游戏里面他只玩骑士 A 这个角色,并且一直保持着90%的胜率。有一天游戏更新了,唯一的不同是骑士 A 被改成了骑士 B,并且游戏官方说本次改动不会影响胜率。但是午餐肉自从用了骑士 B,胜率就降到了50%。他很生气,于是闹到了游戏公司。

图片说明

游戏公司老板说:“我允许你随意使用我们的用户做实验,只要你有更充分的证据表明我们的改动确实影响了胜率,我就向所有玩家道歉。”

Let the game begin!

我们该怎样做实验呢?

你可能会想:这还不简单,我们找来一大批玩家,随机分成数量相同的两堆,一堆玩旧版本骑士 A,另一堆玩新版本骑士 B,然后比较两边的平均胜率。

但是这样就有足够的说服力吗?

我们首先假设我们确实完全公平的把玩家分成了两堆,保证两边的游戏水平、游戏环境都近乎一致,但这样就足够了吗?

如果 A 的平均胜率是90%, B 的平均胜率是50%,我们似乎有足够的把握断定更新影响了胜率;但是如果 A 的结果是75%,B 的结果是70%,你还有足够的自信吗?

另外,现实生活中偶然因素有很多,我们怎么判断这些差异是不是某些随机情况导致的呢?

显然,我们需要一些新的指标和判断依据。
图片说明

在这个实验中,我们设 H0 为“使用骑士 A 和 B 的胜率是一样的”,Ha 为”使用骑士 A 和 B 的胜率不一样”。下面我们的目标就是在假设 H0 正确的情况下,想办法搞事情 —— reject H0。

首先我们介绍一位新朋友,p-value。

我们用它来代表各种偶然因素、样本差异所导致出现当前结果的概率,可以简单记为“离谱概率” —— 意味着在 H0 正确的前提下我们当前得出的结果的“离谱程度”。
图片说明

由此可见 p-value 是一个0~1范围内的数字:越接近0,我们就越 confident,越有把握 reject H0;越接近1,就说明偶然因素的概率越大,我们就越没有把握 reject H0。我们暂且把怎么计算 p-value 放到一边,假设我们已经计算并得到了它。

那问题又来了,p-value 要多接近0,我们才有足够的把握下结论呢?

所以我们需要一个具体的 threshold,也就是一个阈值:只有当 p-value 小于这个值时,我们才能拍着胸脯决定,我们就是要干掉你这个 H0。

这个阈值我们称为 level of significance,即显著性水平,用 α 表示。

说到这里,又有一个新朋友来敲门了,它就是 level of confidence,即置信水平,我们用 C 表示,它的定义为 1 - α。

我们一般取0.95、0.99等值作为 C,这里我们以0.95为例,那么 α 就是0.05。所以当 p-value 小于0.05的时候,我们就去推翻 H0,换句话说,这时我们有95%的把握去推翻 H0。

是不是容易理解一点了~

图片说明

OK!现在我们已经建立了一套用于排除偶然因素干扰的判断逻辑了,剩下的问题就是怎么算这个 p-value 呢?

如何计算 p-value

让我们回到例子本身,我们现在找了大量的用户,通过公平的分配把他们分成了人数相等、各项属性都相近的两个组:

  • A 组玩骑士 A,我们称他们为 control group,即对照组;

  • B 组玩骑士 B,称他们为 treatment group,即实验组。

我们收集所有人在相同比赛回合后的胜率数据,绘制出 A 组的胜率分布图。这里为了方便,假设它遵循均值70%的正态分布:
图片说明

接下来我们计算一下 B 组的平均胜率,假设为55%。那么怎么计算这个结果的 p-value 呢?

前面我们把 p-value 比喻为“离谱概率”,所以 p-value = 当前结果的概率 + 和当前结果相同概率的结果的概率(晕了)+ 比当前结果概率更小的结果的概率(吐了)。

图片说明

是不是有点绕?在图片上画一下你就明白了:
图片说明

红***域的面积之和就是 p-value。

我们可以理解为,假设现在 H0 是对的,B 组的胜率分布情况应该也和 A 组一样,那么 B 组的平均胜率应该也和 A 组近似,所以红***域的面积应当接近于1。

计算出来 p-value 以后,问题就差不多接近尾声了。我们首先需要确定我们按照什么样的 confidence level 来评估实验的结果,比如我们取 C = 0.95,那么 α = 1 - C = 0.05。

午餐肉眼前一亮:p-value 小于 α 了!

图片说明

既然 p-value 是如此的小,说明偶然因素导致 B 组这个结果的概率非常小,那么我们就有足够的把握,或者说有95%的 confidence 去 reject H0。

也就是说我们有足够的把握宣称这次更新确实影响了胜率!

老板看完这一通分析,痛苦的挠了挠头,然后让保安把午餐肉扔出了公司大门。

图片说明

以上就是一次 AB test 的主要流程,骑士 A 和骑士 B 往往象征着一个产品某个 feature 的两个不同版本,企业会通过 AB test 去判断 A 和 B 哪一个会产生更好的效果(比如哪一个会引导用户产生更多的点击操作),从而进行选择和取舍。

当然在实际的应用中,AB test 需要考虑的问题远远不止我们例子中讲到的这些,比如:

  • AA Test

为了确保 treatment group 和 control group 分类的公平,往往需要在 AB test 之前做很多次 AA test,也就是让两个 group 处于完全相同的实验条件下,看他们的结果数据有多大差异,从而判断当前的分类方式是不是合理。

  • Interaction

同一批用户有时会同时参与到多个 AB test 中,如果某两个 test 所测试的 feature 发生了冲突,会导致实验结果失去意义。举个例子:test1 在测试文字的颜色,test2 在测试这块文字的背景颜色,那么下图所示的尴尬情况就容易让用户体验下降。
图片说明

好了,以上就是我对 A/B Testing 的一点粗浅的理解,有的地方可能我的表述不是十分清晰,还请大家多多指点!如果你对这方面的概念感兴趣,可以复制下方的链接(注意要***哦),这是我认为很不错的一个油管 up。

https://www.youtube.com/watch?v=VK-rnA3-41c&t=10s

最后,感谢你能坚持到这里,希望本文的内容对你有所帮助。这是我们的第一篇文章,希望可以获得你的支持~

Long may the sun shine!
图片说明

全部评论

相关推荐

稽鱼:简历好丑啊,换个模板,别用红色字体
点赞 评论 收藏
分享
菜菜狗🐶:双非之光
找工作,你会甘心进小厂还...
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务