蓝月亮四肖中特

about云開發

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

打印 上一主題 下一主題

[介紹解說] 美團:廣告實驗配置平臺設計與實踐

[復制鏈接]
跳轉到指定樓層
樓主
fc013 發表于 2020-1-17 18:26:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


問題導讀

1.什么是AB實驗?
2.怎樣進行實驗分類?
3.怎樣搭建廣告實驗配置平臺?


廣告系統中,一個好的實驗平臺可以令算法、工程、業務的迭代更多、更快、更好。本文詳細介紹了美團點評效果廣告引擎團隊結合自身業務實際,在廣告實驗配置平臺上的實踐。目前該平臺已經在搜索廣告中全面上線,支持線上所有實驗需求。

一. 背景

效果廣告的主要特點之一是可量化,即廣告系統的所有業務指標都是可以計算并通過數字進行展示的。因此,可以通過業務指標來表示廣告系統的迭代效果。那如何在全量上線前確認迭代的結果呢?通用的方法是采用AB實驗(如圖1)。所謂AB實驗,是指單個變量具有兩個版本A和B的隨機實驗。在實際應用中,是一種比較單個(或多個)變量多個版本的方法,通常是通過測試受試者對多個版本的反應,并確定多個版本中的哪個更有效。Google工程師在2000年進行了首次AB實驗,試圖確定在其搜索引擎結果頁上顯示的最佳結果數。到了2011年,Google進行了7000多次不同的AB實驗。現在很多公司使用“設計實驗”的方法來制定營銷決策,期望在實驗樣本上可以得到積極的轉化結果,并且隨著工具和專業知識在實驗領域的發展,AB實驗已成為越來越普遍的一種做法。




圖1 什么是AB實驗

我們都知道,機器學習在廣告投放中的作用是舉足輕重的,廣告收入的提升離不開算法模型的優化迭代,因此算法模型的迭代也需要進行AB實驗。除了算法模型的迭代之外,工程中較大規模的重構和優化也需要AB實驗來驗證效果的有效性和正確性。此外,目前在大部分應用中,應用參數配置采用最多是單鍵值的配置方式,這種配置方式的確滿足了大部分配置的需要,但是在結合業務需求的情況下,使用起來可能會很乏力。

因此,我們需要搭建一個平臺(Wedge),來滿足算法、工程在迭代過程中的實驗需求,并且滿足在不同流量下應用參數配置的需求。

二. 方案設計

目標

Wedge平臺的目標如下:

  • 支持各類算法實驗場景,可靈活支持后續的功能擴展。

  • 實驗配置、使用、效果回收等全鏈路對使用者透明,降低解釋成本。

  • 提供不同流量下應用參數的配置,降低參數解析成本。

  • 支持版本控制,可快速回滾。

  • 提供簡潔、易用的操作界面。


設計思路

在《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》中,Google給出了一套通用的分層實驗解決方案。我們以此為藍本,結合美團點評效果廣告的LBS特性,針對不同的業務場景,實現了更適合日常迭代的實驗配置框架。目前,該框架已在搜索廣告投放系統上全量上線。

實驗分類

基于Google分層實驗平臺,結合實際需求進行了以下實驗分類。

根據實驗種類分類

  • 水平實驗:類似于Overlapping Layer中的實驗,是屬于同個“層”的實驗,實驗是互斥的,在同一“層”上實驗可以理解為是同一種實驗,例如:關鍵詞“層”表示這一層的實驗都是關鍵詞相關的,該層上存在實驗H1和H2,那么流量絕對不會同時命中H1和H2。

  • 垂直實驗:類似于Non-overlapping Layer中的實驗,分布于不同“層”之間,實驗是不互斥的,例如在關鍵詞“層”和CTR“層”上在相同的分桶上配置了實驗V1和V2,那么流量可以同時命中V1和V2。

  • 條件實驗:表示進入某“層”的實驗需要滿足某些條件,水平實驗和垂直實驗都可以是條件實驗。


根據流量類別分類

這種分類主要了為了用戶體驗,使平臺在操作上更加的簡單、易用:

  • 普通實驗:最基本的實驗,根據流量類別進行配置。

  • 引用實驗:流量分類是整個配置中心基礎,但實際上存在一些實驗是跨流量了,而引用實驗則可以配置在不同的流量種類中。

  • 全局實驗:可以理解為特殊的引用實驗,全局實驗在所有流量上都生效。


架構圖

圖2為整體架構圖,比較便于大家理解,我們可以看到整體架構分為四層:

  • Web層:提供平臺UI,負責應用參數配置、實驗配置、實驗效果查看以及其他。

  • 服務層:提供權限控制、實驗管理、拉取實驗效果等功能。

  • 存儲層:主要是數據存儲功能。

  • 業務層:業務層結合SDK完成獲取實驗參數和獲取應用參數的功能。





圖2 架構圖

三. 模型設計

1. 分流模型

實驗模型

如圖3所示,整體模型分為以下幾個部分:

  • App:表示一個應用,不同的應用對應的實驗配置完全不同,首先從App上進行區分可以更加明確實驗的歸屬。


  • Scene:表示某一類流量的集合,例如:搜索、美食篩選、到綜篩選等,在這些流量上配置的實驗互不干擾。


  • Layer:表示某一層(種)實驗的集合。例如可以將在matching上做的實驗放入Matching Layer中。流量命中時依次進入每個Layer獲取實驗配置參數,此時的Layer更像一個抽象概念,與具體的業務或者邏輯相關。


  • 條件Layer:是一種更加精細的流量控制方式,表示某一流量的某個或者某幾個參數在滿足一定條件下才會進行實驗。進一步說就是相同Scene下,某一流量的參數A滿足條件一時,采用一種實驗配置策略;滿足條件二時,采用另一種實驗配置策略,那可以分為兩層,如圖3所示的Layer_3和Layer_4。例如:某流量需要在城市北京單獨做實驗,這種情況下,可以分為參數相同但是先決條件(即城市)互斥的兩個Layer。此時的Layer在抽象的基礎上更加的具體化。


Exp:表示具體實驗,包括實驗的分桶、實驗參數、是否為垂直流量等等。




圖3 實驗模型

水平、垂直分流模型

如圖4所示,水平、垂直分流模型分為以下兩個部分:

僅包含水平實驗 :最基礎的實驗需求,全部實驗獨占一個Layer,每個實驗覆蓋若干個桶,例如圖4中的Layer_1,將流量分為10份,包含三個實驗,這三個實驗分別占用3、3、4份流量。

同時包含水平、垂直實驗:一個Layer中同時包含垂直、水平兩種類型的實驗。例如圖4中的Layer_2和Layer_3,將最后的4份流量用來做垂直實驗,包含兩個垂直實驗,分別是Exp_6和Exp_7。




圖4 水平、垂直分流模型

2. 實驗命中模型

實驗命中模型是指,當一個請求過來時,返回全局統一的實驗參數。所有的請求都會平均地落入每一個分桶中,并且不同的Layer之間能夠保證流量的正交。

名詞解釋

Bucket  分桶

流量正交  流量在不同Layer之間的分桶是完全相互獨立的

Hash優先級  表示計算Hash值的先后順序,用于垂直和水平實驗切分

Hash因子 分桶的唯一標識

Hash串 計算Hash的字符串

取模數  Hash值計算之后的除數

  • Hash優先級:在實驗命中過程中,第一次Hash首先判斷命中垂直流量,如果沒有命中,則進行第二次Hash再判斷水平流量。


  • Hash因子:目前美團側一般情況下為uuid,點評側為dpid。


  • 垂直流量Hash串:Hash因子+scene_id。


  • 水平流量Hash串:Hash因子+scene_id+layer_id+layer_name。


  • 取模數:在Hash過程中,垂直流量按照總Bucket(默認取值100)取模;水平流量按照總Bucket數減去垂直流量Bucket數取模。這樣的命中模型能保證無論是垂直的Bucket,還是水平的Bucket都是全局的1%。


實例解析

以最復雜的流量分配為例,如圖5,水平、垂直流量各占全局50%流量。

水平流量上包含兩個實驗:Exp_1、Exp_2各占全局20%流量,還有10%流量未分配實驗,垂直流量與水平流量相同。




圖5 流量分配示例

典型實驗命中如圖6所示:

  • 當一個請求過來時,命中順序按照Hash優先級為先垂直流量后水平流量。


  • 首先利用垂直流量Hash串進行Hash并取模得到一個hashNum,如果命中了50~99,就會認為命中了垂直流量,直接返回V_Exp_1、V_Exp_2或者未命中。


  • 如果沒有命中50~99,則認為命中了水平流量。再利用水平Hash因子進行Hash并取模得到一個hashNum,根據配置直接返回Exp_1、Exp_2或者未命中。





圖6 實驗命中流程

應用參數模型

應用參數模型如圖7所示,分為兩層結構:

全局參數:所有流量都能拿到的參數。

同類型流量參數:相同類型的流量能拿到的參數。




圖7 應用參數模型

值得注意的是,應用參數的兩個層級以及之前提到的實驗參數可能出現重復的情況,在出現重復的情況下參數的優先級為:實驗參數>同類型流量參數>全局參數。

3. 回滾模型

很明顯,平臺的分流模型是層次結構的,所以在數據設計上也是每一層一個table。這樣就會出現一個問題,一般的參數配置回滾都是單值的回滾,但是存在多個表的情況下沒有辦法這么簡單地去回滾。

因此,我們設計了如下的回滾模型:

首先在配置發布時,會將所有修改的表名、列名、列類型、列新舊值、修改類型存入表中。

回滾時獲取上次發布的所有修改的表名、列名、列類型、列新舊值、修改類型,反向操作數據庫,達到回滾的目的。




圖8 回滾模型

數據庫表的設計如下:

列名 數據類型 說明
operation_id BIGINT 表示配置發布的ID
table_name VARCHAR 修改的數據表名
operation_step INT 修改的數據表的順序
operation_type INT 修改類型,包括增加、修改、刪除
column_name VARCHAR 列名
old_value TEXT 舊值
new_value TEXT新值
value_type INT 值類型

四. AB實驗實時效果
實時效果指標包含實際CTR、預估CTR、請求PV、廣告密度、有效曝光、RPS等,由于很多數據分布在不同的日志中,所以需要實時處理。

廣告的打點一般分為請求(PV)打點、SPV(Server PV)打點、CPV(Client PV)曝光打點和CPV點擊打點,在所有打點中都會包含一個流量的requestId和命中的實驗路徑。根據requestId和命中的實驗路徑可以將所有的日志進行join,得到一個request中需要的所有數據,然后將數據存入Durid中。

計算各項效果指標,就是在日志join后帶有實驗路徑的數據上做OLAP。為了支持高效的實時查詢,平臺采用時序數據庫Druid作為底層存儲。Druid作為分布式時序數據庫,提供了豐富的OLAP能力和強悍的性能。Druid將數據分為時間戳、維度和指標三個部分,其中維度多用于過濾,指標用于聚合和計算等。平臺將數據中的實驗路徑同其他用于過濾的字段一同作為維度,結合時間戳和指標字段,完成指定標簽的廣告效果指標計算。

五. 總結

目前Wedge平臺已經完全上線,除了滿足目標之外,還帶來了以下的成果:

配合完成算法工程架構調整、更新流大版本升級。

算法各方向之間可以任意做垂直實驗,滿足算法靈活、快速迭代。

具備配置審核功能,保證配置發布的正確性。




最新經典文章,歡迎關注公眾號



---------------------




您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關閉

推薦上一條 /4 下一條

QQ|小黑屋|about云開發-學問論壇|社區 ( 京ICP備12023829號 )

GMT+8, 2020-2-26 02:50 , Processed in 1.125000 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2018 Comsenz Inc.Designed by u179

快速回復 返回頂部 返回列表
蓝月亮四肖中特 金牛配资官网 期货配资规则 上海机场股票行情 期货配资玩法 大智慧手机炒股7.62 炒股公司 上海股票期货配资 阿里巴巴股票分析图 002212南洋股份股票吧 股米网