AB测试为什么有效

创业点子 阅读(1212)
?

  

  Photo by Mark Neal from Pexels

  在开发监督学习算法,我们可以把数据集分成训练集、验证集、测试集,通过训练集和验证集找到最优的算法,算法在测试集上的表现基本会和我们在验证集上的表现相近。

  即我们能大致估算算法步入生产后的实际效果。在很大程度上这是由于测试集不受我们算法的影响,即样本的结果与我们的算法是独立的。

  量化投资也是类似的情况,由于市场的流通性高,单家公司的资金操作不会影响到大盘,所以开发的量化投资算法和大盘表现是独立的。

  但在推荐领域,算法和用户的表现却是强相关的。因为曝光给用户的商品就是你的算法推荐的结果。

  就好比用户搜索了某家医院,用户只能看到搜索引擎返回的结果,用户接下的行为一定会受到这些结果的影响。

  除了推荐,另外一个重要的例子就是产品优化,增加或改变某个 feature 时,无论上线前怎么想,发布后未必有之前想的效果。

  也正是这种不确定性,经常能看到各方人士在讨论某个功能要不要上线,算法该不该用这方法优化。这种讨论可能到最后也没有个结论。

  在解决问题之前,如果有多种方案需要抉择,很可能每种方案都有理由,都有支持的声音,而且理由严密完整,声音铿锵有力。自说自话,总是能自圆其说。但是,评价决策的最终标准不应当是这些理由和声音,而是实际的结果。[1]

  能科学评价改变实际的效果的方法就是AB测试。即将用户分为A组和B组,对A组用户使用新的方案,B组维持不变,通过AB两组之后的表现差异来评估新的方案的优劣。

  不论是同比,还是环比,多多少少都会受到趋势、环境的影响,因此是不准确的。

  其实在医药领域,早已经使用了AB测试的原理了。医药领域的叫法是大样本随机双盲实验。

  在中学科学课本上,我们学过对照实验的概念。就是维持其它变量不动,通过观察单一变量变化引起的实验结果的变化来评估这个变量的作用。

  无论是大样本随机双盲实验还是AB测试都是科学的对照实验。

  AB测试和大样本随机双盲实验一样,要想得到准确的结果,要有两个前提。

  一是大样本。

  你的数据量要够大。数据量=日活 * 每个用户每天产生的数据量 * 实验持续时间。

  由于大公司的日活多,所以实验持续时间就短,就意味着能更快拿到优化效果。所以大公司在算法优化方面具有优势。

  二是样本要随机。

  得出A组比B组好,前题是在实验之前,两组之间没有差异,即要符合对照实验的条件。

  比如说我们不随机分,性别为男用方案A,其它用文字B,由于两组人群本身就有差异,通常来说女人的购物欲望更强,实验就会偏向方案A。

  为了做到随机,需要给每个用户生成一个随机不重复的id,然后按某种规则划分用户。

  那要是想进行多个实验怎么办?一家公司大概率会出现需要同时进行多个实验,要如何保证多个实验之间相互不影响呢。

  一种方式是对用户ID+实验名称取hash。这样两个实验只要名称不一样,生成的hash值就相互独立,就保证了实验互不影响。

  有一种方式可以验证独立性。假设实验x和y,各取一样用户做实验,要是想互独立,则实验x的A/B组中一定会各有50%的y的A/B组用户。

  总结

  AB测试之所有有用,一是做到了随机,使实验结果只受单一变量影响;二是用大样本来消除了少样样本引起的波动。

  [1] 余晟以为, A/B Test给我的哲学启发

  “余晟以为”虽是个人号,但只用心做原创,不虚张声势,不故弄玄虚,不带节奏,力求定期更新,只为和你一同探索世界,分享致中平和的观点。

  

  余晟以为

  96

  学习之术

  2019.08.03 10:54

  字数 1328

  

  Photo by Mark Neal from Pexels

  在开发监督学习算法,我们可以把数据集分成训练集、验证集、测试集,通过训练集和验证集找到最优的算法,算法在测试集上的表现基本会和我们在验证集上的表现相近。

  即我们能大致估算算法步入生产后的实际效果。在很大程度上这是由于测试集不受我们算法的影响,即样本的结果与我们的算法是独立的。

  量化投资也是类似的情况,由于市场的流通性高,单家公司的资金操作不会影响到大盘,所以开发的量化投资算法和大盘表现是独立的。

  但在推荐领域,算法和用户的表现却是强相关的。因为曝光给用户的商品就是你的算法推荐的结果。

  就好比用户搜索了某家医院,用户只能看到搜索引擎返回的结果,用户接下的行为一定会受到这些结果的影响。

  除了推荐,另外一个重要的例子就是产品优化,增加或改变某个 feature 时,无论上线前怎么想,发布后未必有之前想的效果。

  也正是这种不确定性,经常能看到各方人士在讨论某个功能要不要上线,算法该不该用这方法优化。这种讨论可能到最后也没有个结论。

  在解决问题之前,如果有多种方案需要抉择,很可能每种方案都有理由,都有支持的声音,而且理由严密完整,声音铿锵有力。自说自话,总是能自圆其说。但是,评价决策的最终标准不应当是这些理由和声音,而是实际的结果。[1]

  能科学评价改变实际的效果的方法就是AB测试。即将用户分为A组和B组,对A组用户使用新的方案,B组维持不变,通过AB两组之后的表现差异来评估新的方案的优劣。

  不论是同比,还是环比,多多少少都会受到趋势、环境的影响,因此是不准确的。

  其实在医药领域,早已经使用了AB测试的原理了。医药领域的叫法是大样本随机双盲实验。

  在中学科学课本上,我们学过对照实验的概念。就是维持其它变量不动,通过观察单一变量变化引起的实验结果的变化来评估这个变量的作用。

  无论是大样本随机双盲实验还是AB测试都是科学的对照实验。

  AB测试和大样本随机双盲实验一样,要想得到准确的结果,要有两个前提。

  一是大样本。

  你的数据量要够大。数据量=日活 * 每个用户每天产生的数据量 * 实验持续时间。

  由于大公司的日活多,所以实验持续时间就短,就意味着能更快拿到优化效果。所以大公司在算法优化方面具有优势。

  二是样本要随机。

  得出A组比B组好,前题是在实验之前,两组之间没有差异,即要符合对照实验的条件。

  比如说我们不随机分,性别为男用方案A,其它用文字B,由于两组人群本身就有差异,通常来说女人的购物欲望更强,实验就会偏向方案A。

  为了做到随机,需要给每个用户生成一个随机不重复的id,然后按某种规则划分用户。

  那要是想进行多个实验怎么办?一家公司大概率会出现需要同时进行多个实验,要如何保证多个实验之间相互不影响呢。

  一种方式是对用户ID+实验名称取hash。这样两个实验只要名称不一样,生成的hash值就相互独立,就保证了实验互不影响。

  有一种方式可以验证独立性。假设实验x和y,各取一样用户做实验,要是想互独立,则实验x的A/B组中一定会各有50%的y的A/B组用户。

  总结

  AB测试之所有有用,一是做到了随机,使实验结果只受单一变量影响;二是用大样本来消除了少样样本引起的波动。

  [1] 余晟以为, A/B Test给我的哲学启发

  “余晟以为”虽是个人号,但只用心做原创,不虚张声势,不故弄玄虚,不带节奏,力求定期更新,只为和你一同探索世界,分享致中平和的观点。

  

  余晟以为

  

  Photo by Mark Neal from Pexels

  在开发监督学习算法,我们可以把数据集分成训练集、验证集、测试集,通过训练集和验证集找到最优的算法,算法在测试集上的表现基本会和我们在验证集上的表现相近。

  即我们能大致估算算法步入生产后的实际效果。在很大程度上这是由于测试集不受我们算法的影响,即样本的结果与我们的算法是独立的。

  量化投资也是类似的情况,由于市场的流通性高,单家公司的资金操作不会影响到大盘,所以开发的量化投资算法和大盘表现是独立的。

  但在推荐领域,算法和用户的表现却是强相关的。因为曝光给用户的商品就是你的算法推荐的结果。

  就好比用户搜索了某家医院,用户只能看到搜索引擎返回的结果,用户接下的行为一定会受到这些结果的影响。

  除了推荐,另外一个重要的例子就是产品优化,增加或改变某个 feature 时,无论上线前怎么想,发布后未必有之前想的效果。

  也正是这种不确定性,经常能看到各方人士在讨论某个功能要不要上线,算法该不该用这方法优化。这种讨论可能到最后也没有个结论。

  在解决问题之前,如果有多种方案需要抉择,很可能每种方案都有理由,都有支持的声音,而且理由严密完整,声音铿锵有力。自说自话,总是能自圆其说。但是,评价决策的最终标准不应当是这些理由和声音,而是实际的结果。[1]

  能科学评价改变实际的效果的方法就是AB测试。即将用户分为A组和B组,对A组用户使用新的方案,B组维持不变,通过AB两组之后的表现差异来评估新的方案的优劣。

  不论是同比,还是环比,多多少少都会受到趋势、环境的影响,因此是不准确的。

  其实在医药领域,早已经使用了AB测试的原理了。医药领域的叫法是大样本随机双盲实验。

  在中学科学课本上,我们学过对照实验的概念。就是维持其它变量不动,通过观察单一变量变化引起的实验结果的变化来评估这个变量的作用。

  无论是大样本随机双盲实验还是AB测试都是科学的对照实验。

  AB测试和大样本随机双盲实验一样,要想得到准确的结果,要有两个前提。

  一是大样本。

  你的数据量要够大。数据量=日活 * 每个用户每天产生的数据量 * 实验持续时间。

  由于大公司的日活多,所以实验持续时间就短,就意味着能更快拿到优化效果。所以大公司在算法优化方面具有优势。

  二是样本要随机。

  得出A组比B组好,前题是在实验之前,两组之间没有差异,即要符合对照实验的条件。

  比如说我们不随机分,性别为男用方案A,其它用文字B,由于两组人群本身就有差异,通常来说女人的购物欲望更强,实验就会偏向方案A。

  为了做到随机,需要给每个用户生成一个随机不重复的id,然后按某种规则划分用户。

  那要是想进行多个实验怎么办?一家公司大概率会出现需要同时进行多个实验,要如何保证多个实验之间相互不影响呢。

  一种方式是对用户ID+实验名称取hash。这样两个实验只要名称不一样,生成的hash值就相互独立,就保证了实验互不影响。

  有一种方式可以验证独立性。假设实验x和y,各取一样用户做实验,要是想互独立,则实验x的A/B组中一定会各有50%的y的A/B组用户。

  总结

  AB测试之所有有用,一是做到了随机,使实验结果只受单一变量影响;二是用大样本来消除了少样样本引起的波动。

  [1] 余晟以为, A/B Test给我的哲学启发

  “余晟以为”虽是个人号,但只用心做原创,不虚张声势,不故弄玄虚,不带节奏,力求定期更新,只为和你一同探索世界,分享致中平和的观点。

  

  余晟以为