A/B test 的设计与分析(1)
背景介绍
A/B test是一种互联网常用的测试优化产品的方法。通过不断尝试改变产品的一些功能和特性,它可以帮助你判断哪些改变可以给用户行为带来显著的正影响,从而科学地决策如何优化你的网页或者APP。
A/B testing is a general methodology used online when you want to test out a product or a feature. 互联网常用的测试产品的方法
You are gonna take 2 sets of users. Show one set, your control set your existing product, then your new set, experiment, new version. 选取两组用户,一组为使用现有产品的控制组A,另一组为使用新产品的实验组B
Analyze how did these users respond differently? In order to determine which version of your feature is better. 为了了解哪一个版本的产品更好,需要分析两组用户的行为差异
A/B test 有一定的适用范围
- 通常情况下,A/B test针对产品的新增功能,用户界面的新增内容,或者不同的网站外观界面等都十分有效。☑️
案例. Amazon personalized recommendations. Saw a revenue increase via personalized rec. 例如亚马逊新增的个性化推荐功能,为企业带去了不俗的利润增长。
Google tested 41 shades of blue in the UI. 谷歌在用户界面测试了41种蓝色,测试哪一种蓝色更受用户的喜爱。
Less visible changes. LinkedIn tested a change — show news article or an encouragement to add new contacts. 领英测试了用户首页顶端内容从新闻变成联系人推荐,促进了用户活跃度。
- 但是!!!A/B test不能用来测试一个全新的功能。❌
因为,你没有可以比较的用户行为基础。What is your baseline for comparison ?
你需要花多少时间让用户来习惯你的新功能。How much time you need in order to have your users to adapt to the new experience.
以及A/B test不能告诉你在全新的功能里你缺少了什么。And it can’t tell you if you are missing something.
- 测试的时间也十分的重要
要清楚地了解你所要优化的业务,用户行为反馈的时长是否合理。例如,当你需要优化一家房屋租赁网站的顾客回访率,A/B test 就不那么适用了。因为用户完成租房行为后通常至少半年才会回到租房平台,你无法确定这项业务需要花费的时间。A/B test 很重要的一点是时间要短,效率要高。
Quiz: when can you use A/B testing ?1. 电商网站,我的网站设计是否完整 ? ❌ 无法通过数据掌握用户的全部爱好,所以可以做一次用户调研作为信息补充
2. 增加会员服务功能 ? ❌ 无法完全测试是否 premium service是一个好的决策,没有对照组可以对比。但是可以搜集数据,可以了解多少用户看见了这个功能,如果你给用户推送这个功能,多少人注册了会员
3. 视频网站,更换了新的推荐算法 ? ☑️ 很好的例子,例如点击率,观看率 都可以作为参考指标
4. 改变服务后台数据的加载速度 ?☑️ 是好例子
5. 买车网站,提升客户复购率 ? ❌ 时间太长 并且数据无法收集,类似于上面提到的租房网站的复购率优化
6. 改变公司品牌logo ❌ 已经超出收集数据的范围,涉及到品牌形象的传递
7. 改变主页的布局 ☑️ 好例子
通常情况下,每个用户在使用网站和app时都会有行为记录,通过分析这些行为数据,你可以建立一些“到底是什么改变了用户的行为”的相关假设。在这个基础上,我们开始设计实验,随机抽取样本,实验,收集数据,来验证我们的假设是否成立。A/B test可以给你大量的数据信息,而其他的方法例如问卷调研,人为评估可以帮助我们更深度地理解用户的喜好以及行为变化的原因。但是!正如上文所说,如果你想要大幅度改变网站,或者用户与之交互的体验,A/B test 就无法提供有效信息了,因为缺少了与之对比的baseline。
通过一个简单实例了解A/B test
你在一家经营线上教育平台的公司工作,最近公司为了提高学生在网站上的互动率,想要对网站的一些特性和功能进行测试,在进行测试前,你需要有以下几个准备。
- 首先了解用户行为轨迹:
通过某种方式进入网站首页 --> 熟悉网站 --> 注册账号 --> 购买课程 / 完成一门课程 「 用户漏斗:从进入网页到购买课程,用户会在各个环节逐步流失」The users are trickling down the funnel.
- 提出假设:
通过分析发现,用户进入网页后通过“探索一下”按钮探索网页的人数较少,想了解是否可以通过改变“探索一下”按钮的颜色(从蓝色换成粉色),来提高网页探索的概率。
- 选择评判指标:
指标是可以在短时间快速获得的。
1. 点击按钮的次数 —> 可以延伸为 CTR = “探索一下”按钮的点击次数 / 网页浏览次数
2. 还可以延伸为 CTPR —> 按钮点击人数 / 网页浏览人数 「 这个指标更好,因为可能会因为网页加载缓慢,用户点击次数增加而指标虚高 」
*** 温馨提示:
1.如果你想要测试一个具体按钮的使用率,使用CTR. 因为用户在同一页面下有很多选择,所以可以用CTR来评估用户点击该按钮的频率。
2.如果你想知道用户从第一级页面跳转至下一级页面(正如文中所惧实例),用CTPR(概率),因为要考虑到用户因为网速等问题发生的多次点击。
Quiz: 重复实验,计算新的CTPR通常访问人数: 1000. 通常用户点击人数: 100.
通常情况下:CTRP = 10%问题:以下哪个新的结果会让你在重复实验的过程中感到惊讶? (以下均为用户点击人数)
1. 100 2. 101 3. 110 4. 150 5. 9004⃣️ 和 5⃣️ 在1000样本中,会是异常结果,因为150的点击相当于15%的点击率,对于10%是非常大的跳跃。
- 确定实验的统计分布,了解置信区间的概念:
1. 该实验是一个二项分布。
「 1⃣️ 结果只有点击与未点击两个选项 2⃣️ 用户与用户之间点击的行为相互独立 3⃣️都是点击按钮的行为,拥有相同的分布 」
Quiz: 以下哪一项实验是二项分布 ?
1. 从一副牌中抽20张牌,结果为红和黑。 ❌ 每次抽取事件都不是独立的,每次抽取会赢下下一次抽取结果
2.掷骰子50次,结果为6和其他。 ☑️
3.点击搜索引擎上搜索结果 ❌ 搜索结果会相互影响,例如我第一搜索没有搜到我想要的,我就换一个词搜索,每次搜索并不是独立事件
4.学生在两个月后完成了一门课 ❓我们并不能完全确定这个是二项分布,因为有可能学生会注册两个账号,可能会有相互联系
5.一个星期之内又购买了一个产品 ❌ 购买并不是独立事件,这周买了牙膏,我下周肯定就不会再买了
2. 置信区间可以帮助我们判断什么样的结果是显著的
我们已经确定了本次实验所关注的指标 CTPR 是服从二项分布的。在进行抽样实验之后,我们需要计算出样本标准差,从而判断在什么样的一个区间内,我们认为两组的CTPR是没有显著区别的。用统计术语来解释就是:在95%的置信区间内,如果对样本不断地重复相同的实验,我们希望依据样本的平均结果而建立的这个区间,在95%的概率下覆盖到了事件的真实值,那么我们可以认为新的颜色对提升CTPR的效果并不显著。计算置信区间的步骤具体如下:
[1] 先确定实验样本符合什么分布
该实验应该为二项分布,所以样本概率应该为 , 其中为点击概率; X为点击人数;N为样本人数。
为了检查该实验是否符合正态分布,需要检查是否 。
[2] 再计算出样本标准差,利用公式计算出 margin error(边际误差)
在上一步骤中我们确保了实验符合正态分布,接下来我们将利用公式求出边际误差。边际误差等于临界值乘以统计量的分布标准差。注意这里是统计量的标准差,并非样本X的标准差。但我们可以根据样本标准差推断出统计量的标准差,步骤如下:
统计量 = X / N
统计量方差 D ( ) = == ,得出
统计量标准差 S () =
,在本次实验中,依据该公式得出
[3] 真实值有95%的概率会落在,[样本均值-margin error,样本均值+margin error] 这个区间内
[4] 当实验发现,结果跳出这个区间,就要去回溯是不是实验过程出了问题?— [ 系统性?事件性?延续性错误 ]
- 提出检验假设:
- 确定控制组 与实验组
- 提出假设:
H0: = 或者 - = 0
H1: 不等于
3. 评估控制组 与实验组 ,计算, 如果 P < 0.05则拒绝原假设:
⭕️ 收集实验数据 = , =
⭕️ 比较两组实验结果,计算置信区间,如果两组结果的差值不在区间内,则认为实验组与控制组有显著差异
⭕️ 实例
4. 如果我们要自行设置样本数,我们首先需要了解:
为一型检验错误:在原假设正确的情况下拒绝了原假设
为二型检验错误:在原假设错误的情况下未拒绝原假设
Power = 1- , 通常称为检验功效。假设检验的功效是检验正确否定原假设的概率。如果检验的功效低,则可能无法检测到效应并错误地得出不存在任何效应的结论。如果检验的功效太高,则很小的效应或不需要关注的效应看上去都可能会很显著。通常情况下,我们将其设置为 80%。样本量较小时,较大,而样本量较小时,较小。这就意味着,我们需要设定一个合理的和Power值来确定样本量至少要达到多少,我们的实验结果才比较有效力。
所以,在设定好了显著性水平=0.05, (20%),两组结果可接受的最小差异 = 2%,我们对照的baseline P为10%,通过以下公式便可求出结果。可直接使用样本量计算器进行计算。
总结
本文主要粗略地整理了A/B test 的基础使用场景,所设计的统计学知识,以及如何判断实验组与对照组之间是否有明显差异和在设计实验的过程中,如何确定最小样本量等内容。下一章我会进一步整理A/B test的四大使用原则,不同数据间的可用性以及如何定义评判指标。
A/B test 的设计与分析(1)相关推荐
- Microbiome:在人工肠道中建立动态线性模型指导设计和分析微生物组研究
文章目录 在人工肠道中建立动态线性模型指导设计和分析微生物组研究 导读 摘要 主要结果 图1. 技术变异掩盖了微生物动态的模型 图2. 10个最高丰度细菌科随时间变化 图3. 生物和技术变异的结构和幅 ...
- ***帮兄设计实战分析
点击後会打开新窗口显示本文章: ***帮兄设计实战分析 转载于:https://blog.51cto.com/hawke/141962
- 算法设计与分析课程的时间空间复杂度
算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
- PHP第五周答案,算法设计与分析第五周作业——Word Ladder
算法设计与分析第五周作业--Word Ladder 上周找了一道深度搜索优先搜索的算法题来做,于是这周就选了一道广度优先搜索算法题来试试手. 本周所选题目:原题目链接 题目详情 题目大意:给出一个字符 ...
- 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...
<太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...
- 算法设计与分析——算法思想总结
算法设计与分析 1.分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同.递归的解这些子问题,然后将各子问题的解合并得到原问题的解. 分治法所能解 ...
- 算法设计与分析——递归与分治策略——全排列
算法设计与分析--递归与分治策略--全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列. 如果没有到达最后一位,则循环的 ...
- 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案
<计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...
- 0x08算法设计与分析复习(二):算法设计策略-回溯法2
参考书籍:算法设计与分析--C++语言描述(第二版) 算法设计策略-回溯法 子集和数 问题描述 已知n个不同的正数wi(0≤i≤n−1)的集合,求该集合的所有满足条件的子集,使得每个子集中的正数之和等 ...
最新文章
- php网站怎么伪静态,php怎么实现网页伪静态
- 睡觉觉睡觉睡觉计算机手机,孩子爱睡觉怎么回事
- 你需要了解的 C++ 17 Top 19 新特性(附精彩评论)
- 提质升级·万祥军:中国与拉美谋定国际农民丰收节贸易会
- VMWare MAC系统调整磁盘
- Ubuntu文件夹有锁标志
- python 栈和队列_python实现栈和队列
- 算法导论书本第3版_中文版和英文版_完整版本_带目录_PDF
- MacOS 制作 Linux U盘启动盘
- python显示gif图片报错_4种方法(plglet、tkinter、guizero、pygame)的GUI中显示gif
- PLC 定时器指令计数器指令比较赋值指令的总结
- 第一次用 Mac git 遇到的一些问题及解决方法,记录一下
- 人工智能初学笔记系列(1):基础概念与进化流程
- ECharts绘制饼图
- python-pdf的去水印操作
- python excel 插入图片并设置好大小
- c盘java文件误删_清理C盘误删的文件怎么恢复
- Unity使用Mysql(添/删/改/查)(保姆级)
- Clamav使用及规则库详解
- Jenson不等式及其在EM估计与KL散度中的应用