桔妹導讀:在各大互聯網公司都提倡數據驅動的今天,AB實驗是咱們進行決策分析的一個重要利器。一次實驗過程會包含多個環節,今天主要給你們分享滴滴實驗平臺在分組環節推出的一種提高分組均勻性的新方法。本文首先會介紹一下滴滴AB實驗的相關狀況,以及在實驗分組環節中遇到的問題。而後介紹目前在實驗對象分組方面的通用作法,以及咱們對分組環節的改進。最後是新方法的效果介紹。算法
互聯網公司中,當用戶規模達到必定的量級以後,數據驅動可以幫助公司更好的決策和發展。在滴滴各個團隊中,咱們常常會面臨不一樣的產品設計方案的選擇或者多個算法方案的決策,好比頂部導航欄的排序方案一二三,派單算法一二三等等。傳統的解決方法一般是由該領域經驗豐富的專家來決定,或者由團隊成員討論決定,有時候甚至是隨機選擇一個方案上線。雖然在某些狀況下傳統解決辦法也是有效的,可是讓AB實驗後的數聽說話,會讓方案選擇更加有信服力。數據庫
滴滴Apollo AB實驗平臺,支持了滴滴諸多業務的功能優化、策略優化以及運營活動,提供了在線實驗以及離線實驗的能力,並行實驗數達到 6000+ / 周。在分組方法上提供隨機分組以及時間片分組來應對不一樣的實驗場景。效果分析方面,咱們對基礎指標、率指標、均值指標、留存指標等多種類型的指標提供了均值檢驗、VCM、Bootstrap等多種分析手段。架構
一次完整的AB實驗能夠分爲如下幾步:dom
第一步:
設計實驗方案,包括肯定實驗對象,劃分實驗組,肯定實驗提高目標等。工具
第二步:
進行人羣分組,通常是一個空白組加一個或多個實驗組測試
第三步:
將須要實驗的策略,方案或者功能施加到各個組,收集數據優化
第四步:
對實驗關心的指標進行分析觀察設計
本文主要討論其中第二步的實現。業界在進行實驗對象分組的時候,最經常使用的是隨機分組方式。這也是滴滴諸多實驗中佔比最大的分組方式。隨機分組的作法能夠實現爲對實驗對象的某個ID字段進行哈希後對100取模,根據結果值進入不一樣的桶,多個不一樣的組分別佔有必定比例的桶。實驗對象在哈希取模以後,會獲得0 ~ 99的一個數,即爲該實驗對象落入的桶。這個桶所屬的組就是該實驗對象的組。3d
上述的這種分組方式稱爲CR(Complete Randomization)徹底隨機分組。進行一次CR,能將一批實驗對象分紅對應比例的組。可是因爲徹底隨機的不肯定性,分完組後,各個組的實驗對象在某些指標特性上可能自然就分佈不均。均值,標準差等差別較大。若是分組不均,則將會影響到第四步的實驗效果分析的進行,可能遮蓋或者誇大實驗的效果。對象
待分流的個體具有必定的內在特色,好比就GMV這個指標來講,人羣中會存在高GMV,中等GMV,低GMV等不一樣層次的用戶。以下圖所示,對於實驗人羣進行徹底隨機分流的方式,存在必定機率的不均勻,好比高GMV人羣在某個組中的分配比例偏高,致使兩個組的GMV相對差別較大。好比一次實驗中,但願提高北京市的GMV 1%,在進行分組以後,實驗組的人羣GMV自然就比對照組的人羣GMV高2%。這樣實驗進行的結果就變的沒法比較。若是沒有注意到實驗前的組間不均狀況,甚至可能驗證出錯誤的結論。
基於CR的風險較大的狀況,通常會對CR進行簡單的一步優化,即進行RR(Rerandomization)。RR是在每次跑CR以後,驗證CR的分組結果組間的差別是否小於實驗設定的閾值。當各組的觀察指標小於閾值或者從新分組次數大於最大容許分組次數後,中止分組。
相比於CR,RR經過犧牲計算時間,能在必定機率上獲得符合要求的分組。重分組次數與輸入的實驗對象樣本大小相關。樣本量越大,須要進行重分的次數通常較少。可是RR分組能獲得符合要求的分組有必定的機率,且須要花更多的時間。因此,咱們但願經過對分組算法的改進,在一次分組過程當中分出觀察指標均勻的分組結果,以下圖所示。
Apollo實驗平臺實現了滴滴AI LAB團隊設計的Adaptive(自適應)分組算法。Adaptive分組方法能夠在只分組一次的狀況下,讓選定的觀測指標在分組後每組分佈基本一致,能夠極大的縮小相對偏差。相比於傳統的CR分組,Adaptive分組的算法更加複雜,在遍歷人羣進行分組的同時,每一個組都須要記錄目前爲止已經分配的樣本數,以及已經分配的樣本在選定的觀測指標上的分佈狀況。從分流人羣中拿到下一個要分的對象後。會對實驗的各個組進行計算,計算該對象若是分配到本組。本組的觀測指標分佈得分狀況。而後綜合各個組的預分配得分狀況,獲得最終各個組對於該實驗對象的分配機率。
系統交互流程以下:
Adaptive分組方案的設計與實現複用了Apollo AB實驗已有離線分組架構的能力。用戶在實驗平臺經過API接口或者頁面建立完Adaptive實驗以後,實驗平臺會將分組需求發送到分組任務管理系統,生成分組任務存入數據庫中。Adaptive分組執行分爲如下幾個步驟:
首先分組任務管理系統從數據庫中獲取須要進行分組的任務。而後根據任務類型調用不一樣的分組服務。Adaptive分組服務從數據庫中獲取實驗對應的計算信息。根據實驗計算信息中的觀察指標,從HIVE中獲取指標數據,根據人羣信息的地址獲取人羣數據。執行完分組算法以後,將分組結果寫入HDFS。
將人羣shuffle打亂以後,對於人羣的前2 * K(K是組數)的人進行隨機分組,保證每一個組中至少有兩個樣本以後再開始進行Adaptive分組。
根據實驗的組以及每一個組的人羣比例計算出各個組的直接分配機率和間接分配機率。每一個組上的直接分配機率和間接分配機率,分別表示了在直接分配以及間接分配狀況下,選中該組後,樣本分配到各個組的機率。根據已經分配的樣本數據,初始化觀測指標分佈狀況。
計算各組已分配樣本數和組所佔比例之間的關係,獲得各個組的平衡係數BS,若是各個組的比例平衡係數相差較大,則進行直接分配。選用BS最小的組的直接分配機率來分配接下來的一個樣本。經過直接分配來粗粒度的調整各組的分配比例。若是平衡係數相差不大,則走接下來的指標分佈計算,來決定使用哪一個組的間接分配機率。
計算將要分配的一個樣本,若是分配到組k後,組k的指標分佈得分MS k,MS是根據ANOVA模型計算出來的每一個組在各個觀察指標上的均值,方差狀況。經過比較各組的MS,選出向下偏離平均水平的組,以該組的間接分配機率做爲各個組本樣本的分配機率。
經過上述的流程,不管使用直接分配仍是間接分配,最終獲得一個樣本的實際分組後。用這個樣本在各個觀測指標上的數據更新分配到的組的指標分佈數據。如此遍歷,直到分配完全部樣本。
使用Adaptive分組以後,1次分組獲得符合要求的分組機率超過95%。
而不一樣算法間對於組間差別的實際優化狀況不只是與算法有關,也和進行分組的人羣的大小,人羣的分佈特性相關。通常來講,人羣大小越大,分佈越均勻,使用隨機分組的分組結果就會越好。組間差別會越小。下面進行測試的數據人羣規模不大,因此直接隨機分組的差別會顯得比較大,並不表明全部狀況。
如上圖所示,是對一個大小爲10000的司機人羣進行分組測試,並觀察分組後的結果在7日GMV,7日在線時長,全兼職三個指標上的分佈狀況,並取每次分組結果中三個指標上差別最大百分比做爲本次分組的差別。其中CR(Complete Randomization)是指一次隨機分組,RR(每次是跑CR100次,取最優結果獲得),CAR(Covariates Adaptive Randomization)是指一次Adaptive分組。圖中的縱座標是該區間的次數,橫座標是差別的百分比。
每種方式均執行了400次,統計指標的組間最大差別。CR方式的差別最大,最大差別可能達到14%以上。RR在CR的基礎上,經過時間換準確性,較大的下降了組間差別,最大組間差別能在2.7%如下,可是這個差別依然在實驗中不能被接受。CAR經過算法的優化,進一步下降了組間的差別。95%的狀況下能把差別控制在0.8%如下。
經過提供Adaptive自適應分組能力,咱們極大的提升了隨機分組實驗的數據精度。下降了無效實驗的機率,縮短了實驗週期。然而,對於已經經過CR方式完成的隨機分流實驗,用上述的這一套方案已經沒法從新均衡。如何從這種已經完成的實驗分組中抽取分佈平衡的樣本進行效果評估是一個更大的挑戰,目前正在設計中,歡迎你們在本文留言,提寶貴意見,一塊兒探討實驗相關問題。
滴滴工程效能團隊肩負經過工程技術持續提高組織效能的使命,致力於建設世界一流的工程能力體系。爲工程師提供極致的工做體驗,打造高效能研發組織。
2018年北郵碩士畢業加入滴滴。在工程效能團隊Apollo AB實驗項目組,從事實驗效果評估相關工做,負責實驗科學性相關的研究。
歡迎關注滴滴技術公衆號!
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈