【乾貨】在拉斯維加斯,程序員如何靠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這個統計原理,這個故事告訴咱們仍是要遠離賭博,小賭不怡情,大賭更傷身。

相關文章
相關標籤/搜索