【干货】在拉斯维加斯,程序员如何靠bandits算法干掉老虎机?

AB测试:从埋点到弃疗算法

AB测试弃疗第一步:ide

无论是使用频率学派仍是贝叶斯学派的方法,咱们须要决策仍是要走AB测试的一整个流程,可是不少时候使用AB测试来作全部决策的机会成本过高,人力成本过高(数据科学家太贵),较差的版本带来的损失等等缘由让使用AB测试作数据驱动沦为了一句口号。工具

AB测试弃疗第二步:测试

即便一个开发者下定决心走上了利用AB测试作数据驱动的道路,想要搭建一个自有的AB测试平台成本过高,而使用第三方的AB测试服务又缺乏灵活的数据分析能力。优化

若是某个事件没有埋点的话,想要作AB测试就只能SDK从新发版了,在SDK尚未达到必定覆盖率时仍是没有办法作AB测试,因而使用AB测试作产品迭代向后延期直到被忘记。AB测试弃疗。网站

AB测试弃疗第三步:ui

即便一个开发者用上了友盟+的统计SDK,科学的作了自定义埋点,科学的作了用户的分流,预估了样本数,正确的收集到了数据,正确的作了AB测试,而后发现两个版本并无区别。或者有时甚至发现新的版本还更差(cue一下被用烂的Facebook的例子)。spa

做为一个运营你怎么给老板汇报你的负面结果,你做为一个技术团队的大佬怎么抉择改版的问题。AB测试弃疗。我曾经也去问过一个大佬,为何AB测试这么成熟而有用的方法在中国还不那么普及呢?大佬的说:每一次改版/运营活动后你们都等着去邀功了,谁还想着看数据分析结果呢?3d

在不少次作AB测试的过程当中,还有大佬问有没有迭代更快的AB测试算法呢?有没有不那么严格的AB测试呢?在运营场景的时候被问的最多的问题就是:这个活动就搞3天,大家作AB测试须要多久?大家能不能在运营活动前作AB测试?这类直击灵魂的问题。通过深刻的沟通,对于这类问题的AB测试需求实际上是但愿可以在减小风险的状况下更快的,自动的优化方案。blog

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这个统计原理,这个故事告诉咱们仍是要远离赌博,小赌不怡情,大赌更伤身。

相关文章
相关标签/搜索