2019年5月6日,美團點評正式推出新品牌「美團配送」,發佈了美團配送新願景:「天天完成一億次值得信賴的配送服務,成爲不可或缺的生活基礎設施。」如今,美團配送已經服務於全國400多萬商家和4億多用戶,覆蓋2800餘座市縣,日活躍騎手超過70萬人,成爲全球領先的分鐘級配送網絡。算法
即時配送的三要素是「效率」、「成本」、「體驗」,經過精細化的策略迭代來提高效率,下降成本,提升體驗,不斷地擴大規模優點,從而實現正向循環。可是,策略的改變,不是由咱們隨便「拍腦殼」得出,而是一種創建在數據基礎上的思惟方式,數據反饋會告訴咱們作的好很差,哪裏有問題,以及衡量能夠帶來多少肯定性的增加。而A/B-test就是咱們精細化迭代的一個「利器」,經過爲同一個迭代目標制定兩個或多個版本的方案,在同一時間維度,讓組成成分相同(或類似)的A/B羣組分別採用這些版本,而後收集各羣組的體驗數據和業務數據,最後分析、評估出最好的版本,幫助咱們做出正確的決策,使迭代朝着更好的方向去演進。基於此,構建一個適用於配送業務的A/B平臺就應運而生了。微信
如上圖所示,A/B實驗能夠看做一個「無盡」的學習環,咱們經過提出假設、定義成功指標、檢驗假設(A/B實驗)、分析學習、發佈、創建另外一個假設,這就造成一個完整的閉環,經過多輪實驗迭代,使策略趨於更優。基於上述對A/B實驗劃分的5個步驟,咱們將A/B實驗的完整生命週期分爲三個階段:網絡
按照功能劃分,咱們將A/B平臺分爲三個模塊,實驗配置管理模塊、分流以及埋點上報模塊和在線分析模塊,分別對應於A/B實驗生命週期的實驗前、實驗中和實驗後三個階段。在實驗配置模塊,用戶能夠基於實驗前提出的假設、定義的成功指標快速建立實驗,並基於特定的分流策略完成分流配置;分流以及埋點上報模塊,提供JAR包接入的形式,異步獲取實驗配置進行本地分流計算和埋點上報;在線分析模塊,依據用戶在實驗配置管理模塊選取的用於說明實驗效果的指標、分流埋點上報模塊記錄的日誌,自動地產生各實驗的實驗報告,供實驗觀察者使用,而後根據實驗效果幫助他們做出正確的決策。具體流程以下圖所示:架構
業界的A/B平臺建設基本以《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》這篇論文爲藍本進行展開, 引入分層模型以及在分流算法中加入層編號因子來解決「流量飢餓」和「正交」問題,而且經過引入域的概念,支持域和層之間的相互嵌套,使分層實驗模型更加靈活,進而知足多種場景下的A/B訴求。以下圖所示,將流量經過Hash取模的方式便可實現流量的均勻劃分。app
這種是面向C端用戶進行流量選擇的傳統A/B實驗,採用上述的分流方式基於這樣的假設:參與實驗的流量因子是相互獨立的、隨機的,服從獨立同分布。可是,配送業務場景下的A/B實驗,涉及到用戶、騎手、商家三端,請求不獨立,策略之間相互影響而且受線下因素影響較大。傳統A/B實驗的分流方式,沒法保證分出的兩個羣組實驗組和對照組的流量都是無差異的,沒法避免因流量分配不平衡而致使的A/B羣組差別過大問題,很容易形成對實驗結果的誤判。爲知足不一樣業務場景的訴求,咱們的A/B平臺建設採起了多種分流策略,以下圖所示:異步
針對策略之間的相互影響、請求不獨立場景下的A/B實驗,咱們採起限流准入的分流方式,針對不一樣的實驗,選取不一樣的分流因子。在實驗前,咱們經過AA分組,找出無差異的實驗組和對照組,做爲咱們實驗分流配置的依據,這種分流方式要求咱們要有一套完整刻畫流量因子的指標體系,只要刻畫流量因子的指標間無統計顯著性,咱們就認爲分出的實驗組和對照組無差異。工具
在實驗後的效果評估環節,一般容許實驗者用自定義的指標來衡量不一樣策略帶來的影響。但這樣作會帶來以下兩個問題:學習
所以,權威的評估體系對於對齊你們認知,並幫助咱們在策略迭代方面做出正確的決策,尤其重要。測試
A/B評估體系的構建,要解決A/B平臺兩個核心問題:優化
指標的權威性體如今:刻畫分流因子,用於實驗前AA分組和證實實驗假設的指標,必須通過治理且業務認知一致,這樣才能對齊認知,使得實驗結果更具說服力;指標的完備性體如今:評估體系中的指標,不只要有通過第三方獨立生產治理且各業務方認知一致的治理指標,並且還要有實驗者爲了更全面的分析,描述實驗過程,自定義的探索指標。
3.1.1 總體架構
治理指標強調的是指標的權威性和生產的規範性,而探索性指標強調的是指標的多樣性和生產的靈活性。在評估體系中要實現這兩類指標的統一,既要包含用於說明實驗效果的治理指標,又要包含幫助實驗者更好迭代實驗所需的探索指標。
爲實現上述的統一,指標層面要有分級運營的策略:治理指標按照業務認知一致性和算法內部認知一致性分別定級爲P0、P1,這一類指標在生產前必需要有嚴格的註冊、評審,生產環節須要交給獨立的第三方團隊(數據團隊)生產,保證指標的權威性,產出後打通指標與字段的映射關係,對用戶屏蔽底層實現邏輯;對於探索性指標,定級爲P2,強調的是生產的靈活性和快速實現,所以,它的生產就不宜帶有指標註冊和評審等環節。爲保證其快速實現,但願基於物理表和簡單的算子配置就能夠實現效果分析時即席查詢使用。基於如上的問題拆解,咱們進行了以下的架構設計:
3.1.2 數據集成
爲了支持監控和分析,在數據集成環節,咱們集成了實驗配置數據、業務數據和染色數據,以便實驗者在效果評估環節不只能夠查看流量指標(PV、UV和轉化率),也能夠深刻探索策略變更對業務帶來的影響。對於那些在實驗配置環節不能肯定流量是否真正參加實驗的場景(例如:選擇了特定區域進行實驗,該區域產生的單隻有知足特定條件時才能觸發實驗),咱們不能直接經過限制肯定的區域來查看業務指標。由於,此時查看的指標並非真正參與實驗的流量所對應的指標。所以在數據集成環節,咱們同時將實驗前的實驗配置數據和實驗中的染色數據(針對每一個參與實驗的流量,每次操做所產生的數據,都會打上實驗場景、實驗組以及具體的分組標記,咱們該數據爲染色數據)同步到數倉。在數據基建環節,將業務數據模型和染色數據模型經過流量實體做爲關聯條件進行關聯,構建實驗粒度模型。
3.1.3 數據基建
在數據基建層,咱們基於指標分級運營的思路,由數據團隊和算法團隊分別構建實體粒度(區域、騎手、GeoHash)和實驗粒度的實體寬表模型,以知足P0/P1指標和P2指標的訴求;爲實現指標的規範化建設和靈活建設的統一,在物理模型和對外提供應用的指標池之間,咱們提供了元數據管理工具和模型配置工具,從而實現離線數據快速接入評估體系的指標池。由數據團隊建設的實體寬表模型,對應着治理指標(P0/P1指標),必須在生產後經過元數據管理工具完成指標與物理字段的映射,將指標的加工口徑封裝在數據層,對用戶屏蔽物理實現,確保治理指標的一致性。由算法團隊獨立建設的實體寬表模型,對應着挖掘指標(P2指標),爲確保其接入評估體系指標池的靈活性和方便性,咱們在數據基建環節,經過標籤的形式對指標口徑作部分封裝,在模型配置環節完成指標邏輯的最終加工。
3.1.4 元數據管理
元數據管理層,是實現指標權威性的關鍵。治理指標在本層實現註冊、評審,達到業務認知一致性和算法內部認知一致性的目的。同時,本層還完成了治理指標與數據基建層物理模型之間的綁定,爲後續的模型配置創建基礎。
3.1.5 模型配置
模型配置工具,是打通物理模型與評估指標池的橋樑,它經過輸入組件、操做組件和應用組件,將離線數據接入到評估體系中,知足實驗前AA分組和實驗後AB評估的需求。首先,輸入組件能夠對應不一樣的數據源,既能夠接入治理的離線指標,也能夠接入特定庫下的物理表。其次,操做組件提供了分組操做、算子操做、過濾操做和測試操做,經過分組操做,肯定模型包含的維度;經過算子操做,將算子做用在指標或標籤字段上,在取數環節實現指標的二次計算;經過過濾操做,實現數據的過濾;經過測試操做,保證模型配置質量。最後,應用組件能夠將配置的模型註冊到不一樣的應用上,針對A/B場景主要是AA分組和AB評估。具體接入流程以下圖所示:
評估報告的可靠和權威性主要體如今兩個方面:一是評估指標的可靠性和權威性;二是評估方式的科學性。在上一節中,咱們重點討論瞭如何構建可靠權威的指標體系。在這一節,咱們重點討論如何進行科學的評估。
在討論科學評估以前,咱們再重溫一下A/B實驗的定義:A/B實驗,簡單來講,就是爲同一個目標制定兩個版本或多個版本的方案,在同一時間維度,分別讓組成成分相同(類似)的A/B羣組分別採用這些版本,收集各羣組的體驗數據和業務數據,最後分析、評估出最好版本,正式採用。其中A方案爲現行的設計(稱爲控制組), B方案是新的設計(稱爲實驗組)。分析A/B實驗的定義,要實現科學權威的評估,最重要的兩點在於:
不管是實驗前確保實驗組和對照組流量無顯著性差別,仍是實驗後新策略較舊策略的指標變更是否具備統計上的顯著性,無一例外,它們都蘊含着統計學的知識。接下來,咱們重點論述一下A/B實驗所依賴的統計學基礎以及如何依據統計學理論作出科學評估。
3.2.1 假設檢驗
3.2.1.1 兩個假設
A/B測試是一種對比試驗,咱們圈定必定的流量進行實驗,實驗結束後,咱們基於實驗樣本進行數據統計,進而驗證明驗前假設的正確性,咱們得出這一有效結論的科學依據即是假設檢驗。假設檢驗是利用樣本統計量估計整體參數的方法,在假設檢驗中,先對整體均值提出一個假設,而後用樣本信息去檢驗這個假設是否成立。咱們把提出的這個假設叫作原假設,與原假設對立的結論叫作備擇假設,若是原假設不成立,就要拒絕原假設,進而接受備擇假設。
3.2.1.2 兩類錯誤
對於原假設提出的命題,咱們須要做出判斷,要麼原假設成立,要麼原假設不成立。由於基於樣本對整體的推斷,會面臨着犯兩種錯誤的可能:第一類錯誤,原假設爲真,咱們卻拒絕了;第二類錯誤,原假設爲僞,咱們卻接受了。顯然,咱們但願犯這兩類錯誤的機率越小越好,但對於必定的樣本量n,不能同時作到犯這兩類錯誤的機率很小。
在假設檢驗中,就有一個對兩類錯誤進行控制的問題。通常來講,哪一類錯誤所帶來的後果嚴重、危害越大,在假設檢驗中就應該把哪一類錯誤做爲首要的控制目標。在假設檢驗中,咱們都執行這樣一個原則,首先控制犯第一類錯誤的機率。這也是爲何咱們在實際應用中會把要推翻的假設做爲原假設,這樣得出的結論更具說服力(咱們有足夠充分的證據證實原來肯定的結論是錯誤的),因此一般會看到,咱們把要證實的結論做爲備擇假設。
3.2.1.3 T檢驗
常見的假設檢驗方法有Z檢驗、T檢驗和卡方檢驗等,不一樣的方法有不一樣的適用條件和檢驗目標。Z檢驗和T檢驗都是用來推斷兩個整體均值差別的顯著性水平,具體選擇哪一種檢驗由樣本量的大小、整體的方差是否已知決定。在樣本量較小且整體的方差未知的狀況下,這時只能使用樣本方差代替整體方差,樣本統計量服從T分佈,應該採用T統計量進行檢驗。T統計量具體構造公式以下圖所示,其中f是T統計量的自由度,S一、S2是樣本標準差。
T檢驗的流程是,在給定的棄真錯誤機率下(通常取0.05),依據樣本統計量T是否落在拒絕域來判斷接受仍是拒絕原假設。實際上在肯定棄真錯誤機率之後,拒絕域的位置也就相應地肯定了。使用T統計量進行判斷的好處是,進行決策的界限清晰,但缺陷是決策面臨的風險是籠統的。例如T=3落入拒絕域,咱們拒絕原假設,犯棄真錯誤的機率爲0.05;T=2也落入拒絕域,咱們拒絕原假設,犯棄真錯誤的機率也是0.05。事實上,依據不一樣的統計量進行決策,面臨的風險也是有差異的。爲了精確地反映決策的風險度,咱們仍然須要P值來幫助業務來作決策。
3.2.1.4 利用P值決策
P值是當原假設爲真時,所獲得的樣本觀察結果或更極端的結果出現的機率。若是P值很小,說明這種狀況發生的機率很小,可是在此次試驗中卻出現了,根據小几率原理,咱們有理由拒絕原假設,P值越小,咱們拒絕原假設的理由越充分。P值能夠理解爲犯棄真錯誤的機率,在肯定的顯著性水平下(通常取0.05),P值小於顯著性水平,則拒絕原假設。
3.2.2 基於假設檢驗的科學評估
圍繞着科學評估要解決的兩個問題,實驗前,針對圈定的流量使用假設檢驗加上動態規劃算法,確保分出無差異的實驗組和對照組;實驗後,基於實驗前選定的用於驗證假設結論的指標,構造T統計量並計算其對應的P值,依據P值幫咱們作決策。
3.2.2.1 AA分組
首先看如何解決第一個問題:避免因流量分配不平衡,A/B組自己差別過大形成對實驗結果的誤判。爲解決該問題,咱們引入了AA分組:基於實驗者圈定的流量,經過AA分組將該流量分爲無顯著性差別的實驗組和對照組。咱們這樣定義無顯著性差別這一約束:首先,實驗者選取的用於刻畫實驗流量的指標,在實驗組和對照組之間無統計上的顯著性(即上節所描述的基於均值的假設檢驗);其次,在所分出的實驗組和對照組之間,這些指標的差值最小,即一個尋找最優解的過程。從實驗者的實驗流程看,在實驗前,圈定進入該實驗的流量,而後肯定用於刻畫實驗流量的指標,最後調用AA分組,爲其將流量分紅合理的實驗組和對照組。
3.2.2.2 A/B效果評估
A/B效果評估是實驗者在實驗後,依據評估報告進行決策的重要依據。 所以,咱們在實驗後的效果評估環節,效果評估要達成三個目標即權威、靈活性和方便。首先,權威性體如今用於做出實驗結論所依賴的指標都是通過治理、各方達成一致的指標,而且確保數據一致性,最終經過假設檢驗給出科學的實驗結論,幫助實驗者做出正確的判斷。其次,靈活性主要體如今採用列轉行的形式,按需自動生成報表告別「煙囪式」的報表開發方式。第三,方便主要體如今不只能夠查看用於說明實驗效果的指標,還能夠選擇查看接入到評估體系裏的任意指標;不只能夠查看其實驗先後對比以及趨勢變化,還能夠作到從實驗粒度到流量實體粒度的下鑽。效果以下圖所示:
3.2.2.3 技術實現
無論是實驗前的AA分組,仍是實驗後的效果評估,咱們要解決的一個核心問題就是如何靈活地「取數」,爲咱們的AA分組和AB效果分析提供一個靈活穩定的取數服務。所以,咱們整個架構的核心就是構建穩定、靈活的取數服務,具體架構以下圖所示。離線建模和指標模型管理完成數據和元數據建設,創建權威完備的指標體系;中間的取數服務做爲上層各應用服務和指標體系的「橋樑」,爲上層各應用服務提供其所依賴的指標。
目前,A/B測試已成爲許多互聯網公司評估其新產品策略和方法的「金標準」,在美團配送業務場景下,它被普遍應用於調度策略、訂價策略、運力優化、ETA時間預估等業務場景,爲咱們的策略迭代制定數據驅動型決策。特別是針對配送場景下這種策略之間相互影響,請求不獨立場景下的A/B實驗,結合配送技術團隊的具體實踐,跟你們分享了咱們目前的解決思路。
最後再補充一點,在A/B測試領域,實驗的流量規模應該有足夠的統計能力,才能確保指標的變化有統計意義的,爲了更好地達到這個目標,將來咱們將經過輔助工具建設,在實驗前,依據實驗者所關注的指標以及敏感度給出流量規模的建議,方便實驗者在實驗前快速地圈定其實驗所需的流量。
閱讀更多技術文章,請掃碼關注微信公衆號-美團技術團隊!