AB 测试:从埋点到弃疗
AB 测试弃疗第一步:
不论是应用频率学派还是贝叶斯学派的办法,咱们须要决策还是要走 AB 测试的一整个流程,然而很多时候应用 AB 测试来做所有决策的机会成本太高,人力老本太高(数据科学家太贵),较差的版本带来的损失等等起因让应用 AB 测试做数据驱动沦为了一句口号。
AB 测试弃疗第二步:
即便一个开发者下定决心走上了利用 AB 测试做数据驱动的路线,想要搭建一个自有的 AB 测试平台老本太高,而应用第三方的 AB 测试服务又短少灵便的数据分析能力。
如果某个事件没有埋点的话,想要做 AB 测试就只能 SDK 从新发版了,在 SDK 还没有达到肯定覆盖率时还是没有方法做 AB 测试,于是应用 AB 测试做产品迭代向后延期直到被遗记。AB 测试弃疗。
AB 测试弃疗第三步:
即便一个开发者用上了友盟 + 的统计 SDK,迷信的做了自定义埋点,迷信的做了用户的分流,预估了样本数,正确的收集到了数据,正确的做了 AB 测试,而后发现两个版本并没有区别。或者有时甚至发现新的版本还更差(cue 一下被用烂的 Facebook 的例子)。
作为一个经营你怎么给老板汇报你的负面后果,你作为一个技术团队的大佬怎么抉择改版的问题。AB 测试弃疗。我已经也去问过一个大佬,为什么 AB 测试这么成熟而有用的办法在中国还不那么遍及呢?大佬的说:每一次改版 / 经营流动后大家都等着去邀功了,谁还想着看数据分析后果呢?
在很屡次做 AB 测试的过程中,还有大佬问有没有迭代更快的 AB 测试算法呢?有没有不那么严格的 AB 测试呢?在经营场景的时候被问的最多的问题就是:这个流动就搞 3 天,你们做 AB 测试须要多久?你们能不能在经营流动前做 AB 测试?这类直击灵魂的问题。通过深刻的沟通,对于这类问题的 AB 测试需要其实是心愿可能在缩小危险的状况下更快的,主动的优化计划。
AB 测试疗法
对于这些问题咱们有没有什么好的办法去解决呢?当然是有解法的。对于第一和第二步 AB 测试弃疗的起因的解法只能是进行科学化的埋点首先满足次要的统计需要,因为 AB 测试是建设在统计模块根底上的。对于 AB 测试弃疗第三步的解法就是多臂赌博机(Multi-armed bandits)。
多臂赌博机 Multi-armed bandits
那么这种能够主动优化找到最佳计划的算法到底是怎么回事呢?这种算法是如何实现更快的,主动的优化计划的抉择呢?
张三在拉斯维加斯
上面咱们讲一个张三去拉斯维加斯赌博的故事(毕竟统计学就是起源于赌博)。话说有一天赌徒张三带着本人的积蓄来到拉斯维加斯,想要凭借着本人黑科技眼镜和最近钻研的 bandits 算法赢光拉斯维加斯的赌场成为赌圣。
依据他的多年赌博教训,赌场的每个老虎机的赢率是不同的,然而每个老虎机的赢率是不会变动的,依据江湖风闻这家赌场存在一个老虎机赢率大于 50%,他的策略就是找到那个赢率最大的老虎机。
那么张三该如何找到那个赢面最大的老虎机呢?一个最简略的策略就是将赌场里每个老虎机都尝试一遍,而后把每个老虎机的赢率都算一遍,而后选取那个赢率最大的老虎机。这个办法相似于 AB 测试都是将流量均匀的分给了很多个计划。
这个办法的一个显著毛病就是试错老本很高,而且最初能力发现赢率最大的老虎机。如果咱们可能在尝试的过程中发现一些计划可能不是最佳,那么咱们就不在那些次佳的计划下面浪费时间和精力,那么咱们是不是就能够更快的,花更少的钱找到最佳计划呢?那么问题来了,咱们应该如何定义哪个算法在寻找最佳计划的时候更优呢?
这里计算的就是如果晓得最佳计划的赢钱数减去 bandits 算法在摸索最佳计划的赢钱数的差。
张三的 bandits 算法
张三作为一个赌徒天然是晓得一些 bandits 的算法的,那么他打算应用怎么样的策略呢?他从徒弟那里学到的是 Epsilon-greedy 和 Upper bound confidence(UCB)的办法。
Epsilon-greedy 的算法就是 Epsilon 比例的次数抉择非最佳的计划,1-Epsilon 比例的次数抉择以后最佳的计划。Epsilon 就是须要人工抉择的比例,比方 10% 的时候都是抉择非以后最佳的计划,而 90% 的时候抉择以后最佳的计划。
然而这个办法有一个显著的问题,徒弟临行前通知他应用这个 bandits 的办法可能会陷入部分的最优解很久都没有方法找到全局最优解,就是不肯定可能找到那个赢率最高的老虎机。徒弟千叮咛万嘱咐让他小心应用这个 bandits 的办法。
于是张三就决定应用 UCB 这个算法来赌,UCB 的算法是怎么实现的呢?
这个是每个老虎机的得分,后面一项就是这个老虎机的均匀赢率,第二项是和尝试次数无关的 bonus 项,其中 t 是目前试验的次数,而 T_{ij} 则是这个老虎机被尝试的次数。第二项 bonus 前还能够有一个系数来调节 bonus 项的影响大小。
每次试验实现后从新计算每个老虎机的得分而后抉择得分最高的那个老虎机进行下一个试验。UCB 的 bandits 算法在足够长的工夫是肯定能够找到最佳计划的。一般来说 UCB 的算法在 regret 的定义下是优于 Epsilon-greedy 的。
李四的 bandits 算法
话说那边张三还有一个师兄唤做李四,早年已经在贝老爷子(贝叶斯)门下修习过贝叶斯大法。贝叶斯大法有一个微小的劣势就是它和吸星大法个别能够利用他人修习的成绩,这就是贝叶斯外面的先验散布(priors)。
李四在暗中察看着张三在老虎机上的试验并且记录下来每个老虎机的赢率。然而李四也不能期待过久,等到张三发现赢率最大的老虎机的时候他就没法靠那个老虎机赢钱了。于是李四在感觉本人积攒够肯定数据后下场了,他应用的是基于贝叶斯的 Thompson sampling 的办法。
在张三尝试的根底上,李四给了每个老虎机了一个基于 Beta 散布的先验概率,而后本人也开始寻找赢率最大的老虎机,他的每次试验都是基于 Beta 散布取到一个随机数,而后抉择随机数最大的老虎机进行试验。当老虎机积攒了更多的数据,Beta 散布的方差也越小,每次选取的随机数也更靠近于均值,而当老虎机积攒了较少的数据时,Beta 散布的方差也越大,每次选取的随机数也会忽大忽小。
张三徒弟王五的 bandit 算法
张三的徒弟其实也早早来到了拉斯维加斯。他通过外部情报晓得其实每个老虎机的赢率是会随着很多因素变动的,比方是否是周末,这个人是男是女等等。
而张三和李四的算法都是没有思考一些其余的内部因素的,这类思考其余内部因素的 bandits 算法叫做 contextual bandits。张三徒弟应用的是基于 UCB 算法 +ridge regression 的 LinUCB 算法。
欲知张三,李四,王五到底谁最快找到了那个传说中的老虎机,还请持续往下看。
bandits 和 AB 测试应该什么时候应用呢?
图来自于 VWO 的网站
bandits 算法次要解决的问题是如何更快的和以更小损失的找到最佳计划。上图就是 bandits 在寻找最佳计划中的流量调配的优化。bandits 可能实现以最小的损失寻找最佳计划。
为什么还要做 AB 测试呢?
首先,AB 测试次要用于领导重要的商业决策 / 产品的版本迭代,而这个决策可能是有很多个指标独特影响的,bandits 当初只能是基于繁多指标的优化。当然也能够把多个指标叠加成为一个复合指标,然而 bandits 的优化指标就是繁多的一个指标。
其次,AB 测试次要实用于取得各个版本的优劣的统计相信(statistical significance)。这么说比拟形象,就是你花了工夫开发进去了一个新的版本,你须要确信的晓得这个版本到底有没有之前的版本好,到底好在哪里?到底是留存晋升了还是用户的应用时长晋升了。
这些晋升和升高的常识取得是能够应用在产品之后的迭代中的,而 bandits 是无奈帮你剖析失去这些常识的。
那么什么时候应该用 bandits 算法呢?
当你关怀的问题和张三一样只是转化率,留存率等等的繁多指标时并且你不在乎数据后果的解释和剖析的时候。当你的经营流动只有短短的几天或者一天时,你没有工夫等到 AB 测试达到统计相信(statistical significance)的时候,这就是一些大佬们和 App 开发者提到的更放慢的 AB 测试吧。还有就是如果你有一些长期须要优化的指标,而这些指标常常发生变化,那么这个也是 bandits 的一个重要的利用场景。
图来自于 vwo 的 blog
总而言之,AB 测试适宜测试一些变动周期较长的变动,取得的常识应该具备泛化能力。而 bandits 算法适宜一些变动快周期短的优化场景,取得的常识不肯定具备泛化能力。
友盟 + 的 bandits 应用
在友盟 + 的 U -Push 产品里笼罩了大量的内部用户,而大量的开发者的 Push 策略都是非常简单的定时播送,而共性的定制化的发送策略简直没有(除了头条系)。即便开发者想要基于已有的工具对发送工夫和发送内容进行优化,现有的标签和用户行为数据积攒也不会很充沛。
国内的友商们都还没有这个性能也是因为他们的数据量远远没有友盟 + 的数据覆盖度大。而美国的很多针对开发者服务的平台如 Recombee,airship,Leanplum 等等不仅仅实现了发送工夫上的优化,并且实现了基于用户生命周期和其余标签的全链路闭环的用户促活和防散失的产品。
咱们将来的工作是为了实现这个十分 user-friendly 的产品,而咱们的终点是对发送工夫的优化即 LeanPlum 的性能。如果咱们可能在用户应用 App 的时候或者是承受 Push 音讯志愿比拟强的时候去发送这个音讯,那么音讯触达用户当前用户也更加违心关上。这样实现了进步了用户的应用体验和更高的 Push 点击率的双赢场面。
友盟 + 的工夫优化计划就是基于 Thompson sampling 的办法,应用 Beta 散布来给用户 +App+ 时段粒度的打分。
咱们发现应用 Collaborative filtering 可能进步那些数据里没有点击的用户的点击,而 Thompson sampling 则可能更好的确定那些有点击用户的最佳发送工夫。
那么怎么样可能把 Collaborative filtering 和 Thompson sampling 联合在一起进步用户的 Push 体验和点击率将是将来摸索的方向。
故事的终局
故事的最初张三,李四,王五都把积蓄都输完了,而后来到了拉斯维加斯,因为他们不晓得 gambler‘s ruin 这个统计原理,这个故事通知咱们还是要远离赌博,小赌不怡情,大赌更伤身。