推薦ABTest的實現策略總結

liyonghui123發表於2014-11-08


 

1. 背景介紹
       一個新推薦演算法或者新策略開發完畢之後,在全流量上線之前要評估新功能或者新策略的優劣,常用的評估方法是A-B測試,做法是在全量中抽樣出兩份小流量,分別走新策略分支和舊策略分支,通過對比這兩份流量下的各指標的差異,我們可以評估出新策略的優劣,進而決定新策略是否全流量。
抽樣是指按照某種確定的隨機化方法,對線上流量進行劃分。抽樣可以指這種劃分的方法,也可以指劃分得到的一個流量子集。抽樣是一種特殊的小流量,要求對流量的劃分必須保證均勻性和隨機性,我們把抽樣的過程稱為流量切分,流量切分是指把全流量進行均勻的打散,提取出其中固定的流量比例,本文主要涉及的是流量切分的實現。


2. 流量切分架構
       做到流量切分的常用的方法是單層流量切分,流量切分需要以某種方式進行,即流量切分的打散依據


2.1  UUID hash
       我們可以依據流量中的cookie(使用者的唯一標識)打散,我們依據cookie(使用者的唯一標識)打散,那麼我們的切分物件全集就是所有的使用者。
 



 


                                                                圖1.1 單層流量切分架構示意圖

 


       有了上面的想法,我們如何實現單層流量切分呢?如圖1.1所示,我們按照指定的流量切分方式,將所需要的輸入引數cookie先經過一次一致性hash計算,產生結果的均勻性和隨機性由一致性hash演算法來保證,有了一致性hash產生的結果,流量切分的過程還沒有結束,我們還需要將一致性hash結果對應到切分物件的全集上面,實現方法是將切分物件全集看作是一個區間段,然後將一致性hash結果對應到區間段上面,區間的大小是切分的最小粒度決定的,例如,如果需要最小切分粒度為1%,則我們選取的區間段為[0,99],有了區間段的定義,我們可以將一致性hash結果對一個cookie取模,這個數可以唯一的對應到切分物件全集區間上面,這樣我們就將所有的流量打到了流量切分物件全集上面。
       我們再將區間段按照實驗需求細分,劃分成若干子區間,用作於實驗對比,例如下圖所示,將整個100%的區間分為多個子區間(多少個推薦演算法或者推薦策略),每個子區間(推薦演算法或者推薦策略)使用唯一的編號——sid,作為區間的唯一的標識,sid=1的子區間對應的流量為1%,那麼它的子區間就是[0,1],同理,sid=2的第二個1%的子區間對應的區間值為[2,3],這樣我們就將一個100%的完整區間劃分成了若干個(100)子區間,兩個比例相同的子區間就可以用作於實驗策略對比。
 



 

 


        將使用者通過一致性HASH到不同的推薦演算法或者推薦策略上。

 



 

 


        這樣做的缺點是,固定的使用者只看到固定的一份推薦資料或者推薦策略。最終收集到的是一部分使用者對這個推薦演算法或者推薦策略的評價。

 

 

2.2、 隨機
      如果是隨機打散,那麼我們的切分物件全集就是該站點的所有的流量。
這樣切分流量的方式與使用者無關,和系統的流量有關,隨機胡的方式給使用者展示不同的推薦演算法或者推薦策略的資料。

 



 


         這樣做使一個推薦演算法或者推薦策略展示給不同使用者,得到的是所有的使用者對這個推薦演算法或者推薦策略的評價。這樣得到的評介更準確。

 

 

相關文章