近年來,在線廣告在整個廣告行業的比重愈來愈高。在線廣告中實時競價的廣告因爲其良好的轉化效果,佔有的比重逐年升高。DSP(Demand-Side Platform)做爲需求方平臺,經過廣告交易平臺(AdExchange)對每次曝光進行競價嘗試。對於AdExchange的每次競價請求,DSP根據Cookie Mapping或者設備信息,嘗試把正在瀏覽媒體網站、App的用戶映射到DSP可以識別的用戶,而後根據DSP從用戶歷史行爲中挖掘的用戶畫像,進行流量篩選、點擊率/轉化率預估等,致力於ROI的最大化。segmentfault
美團點評的用戶量愈來愈大,積累了大量的用戶在站內的行爲信息,咱們基於這些行爲構造了精準的用戶畫像,並在此基礎上針對美團App和網站的用戶搭建了美團DSP平臺,致力於獲取站外優質的流量,爲公司帶來效益。本文從策略角度描述一下在搭建DSP過程當中的考慮、權衡及對將來的思考。後端
在DSP實時競價過程當中,策略端都在哪些步驟起做用;瀏覽器
美團DSP在一次完整的競價展現過程當中可能涉及到兩個大的步驟:app
咱們分別看一下這兩個步驟中策略的支持。機器學習
上圖給出了每一次競價廣告的粗略示意圖,競價Gateway在收到競價請求以後,會識別出美團點評用戶的流量,根據網站歷史CTR、網站品類屬性等因素進行簡單的流量過濾,把流量分發到後端的AdServer。AdServer做爲後端廣告的總控模塊,首先向RecServer(定向召回服務)獲取站外展現廣告召回結果,而後根據獲取的廣告結果向PredictorServer(CTR/點擊價值預測服務)請求每一個廣告的站外點擊率和點擊價值。最後AdServer根據獲取的點擊價值v和ctr,根據v∗ctrt進行排序,從而挑選出top的廣告進行展現。ide
上圖給出了競價成功後,用戶從站外展現的廣告點擊後,所經歷的流程示意圖。用戶點擊站外廣告後,到達二跳頁Gateway,二跳頁Gateway向AdServer請求廣告列表。AdServer從RecServer獲取站內二跳頁廣告召回結果,而後根據獲取的廣告結果向PredictorServer請求每一個廣告的二跳頁點擊率並進行排序。排序後的結果返回給二跳頁Gateway進行廣告填充。性能
在上述兩個步驟中,美團DSP策略端的支持由RecServer和PredictorServer提供,在圖1和圖2分別用紅色的箭頭和AdServer交互。其中RecServer主要負責站外廣告和二跳頁的廣告召回策略,而PredictorServer主要負責站外流量的CTR預估,點擊價值預估和二跳頁內的CTR預估。整個策略的閉環以下圖:學習
接下來詳細介紹下美團DSP的召回、CTR預估、點擊價值預估相關的策略。區塊鏈
定向召回服務分別在實時競價過程當中提供了站外廣告的召回服務,在競價完成以後提供了二跳頁的廣告召回服務。站外召回和站內二跳頁召回沒有本質的區別,比較常見的作法是二跳頁會根據用戶點擊商品的品類進行品類過濾。下面咱們具體看一下目前定向召回相關的具體策略。測試
1、基於實時行爲召回
經過實時日誌流平臺準確的跟蹤用戶的實時點擊瀏覽/收藏/購買行爲,對於相應的用戶從新投放用戶近一段時間內發生過瀏覽/收藏/購買行爲的商品。須要注意的是這個策略須要考慮召回機率按時間進行衰減,用戶的實時行爲可以比較強反映用戶的近期興趣,距離當前時間比較長的用戶行爲對於用戶近期興趣的定向偏弱。
2、基於位置召回
O2O的業務特色與傳統的電商有明顯的區別,傳統電商是在線上達成交易意向,而後經過快遞送貨的方式完成交易。O2O業務絕大部分消費者是在線上買入電子券,而後要到店進行消費,因此用戶的位置信息在廣告召回中起着舉足輕重的做用。咱們在基於位置的廣告召回中嘗試瞭如下三種策略:
根據用戶所在的實時地理位置召回距離比較近的廣告。 對於移動端的廣告流量,能夠比較準確的得到用戶的實時地理位置,從而進行比較精準的投放; 對於PC端的流量,地理位置是經過用戶訪問的IP地址進行推算的,因此地理位置是有偏移的,可是考慮到PC端瀏覽廣告的流量用戶位置通常都比較固定,好比用戶通常是在上班或者在家休息,咱們仍然使用了這個策略。
根據用戶所在的實時地理位置推斷出用戶目前所在商圈,給用戶投放當前商圈的熱門消費單。商圈的範圍通常在幾千米範圍以內,對於用戶到店消費是一個合理的距離範圍,因此咱們離線挖掘出每個商圈的熱門消費單,做爲用戶召回的候選。
經過離線分析用戶歷史的瀏覽/點擊/購買行爲,分析出用戶的歷史商圈偏好,召回用戶偏好的商圈消費熱單做爲廣告候選集。這個策略須要用戶的userid,僅對於可以識別並能映射到userid的用戶適用。
能夠看到策略1和策略2是不須要userid的,因此這兩個策略也是咱們在識別不到userid的時候一個比較好的冷啓動召回策略。
3、基於協同過濾召回
基於協同過濾的召回策略咱們融合了user-based和item-based兩種。
4、基於item-based的協同過濾
咱們首先經過用戶的購買行爲計算item之間的類似度,好比經過計算髮現item A和item B之間的類似度比較高,咱們把item A做爲候選推薦給購買item B的用戶,做爲item B的用戶的召回候選集之一;一樣也把item B做爲候選推薦給購買item A的用戶,做爲購買item A的用戶的召回候選集之一。由於item-based協同過濾的特徵,這一部分召回基本可以把熱門爆款單都拉到候選集中。
5、基於user-based的協同過濾
咱們一樣須要先計算用戶之間的類似度。計算用戶類似度時,除了考慮用戶購買的商品,還能夠把用戶所消費過的商家及商家所在的商圈做爲類似度權重考慮進來。這麼作是由於,不少商品是在全國多個城市均可以購買的,若是隻採用用戶購買的商品來計算類似度,可能把兩個不一樣城市用戶的類似度計算的比較高,加入商家和商圈的權重,能夠大大下降這種狀況的可能性。
6、基於矩陣分解的場景化召回
對於O2O消費的某些場景,好比美食和外賣,用戶是否發生購買與用戶目前所處的場景有很大關係,這裏的場景包含時間、地點、季節、天氣等。舉個例子來講,工做日的中午,若是還在下雨,這個時候外賣的購買機率通常是比其餘商品高的。
基於此,咱們開發了基於矩陣分解的場景化召回策略。咱們採用了FM模型來進行建模,建模的特徵包括季節、時間(工做日/週末,一天以內的時段)、地點、天氣等。這個策略的目的是但願召回用戶實時的基於場景化的需求。
上文提到在實時競價階段,AdServer會跟PredictorServer請求每一個廣告的站外點擊率和點擊價值,最後AdServer根據獲取的點擊價值v和ctr,根據$v∗ctr^t$進行站外廣告排序,挑選top的廣告。最終的報價公式以下:
$$a∗∑i=1kvi∗ctrti+b(1)$$
k是本次競價要展現的廣告數,t,a,b都是根據實際流量狀況進行調整。其中t爲擠壓因子,爲了控制ctr在排序和報價中起做用的比重,t越大,ctr在排序和報價中的比重越高;a,b須要根據DSP須要獲取的流量和須要達到的ROI之間的權衡進行調整,a,b越大,出價越高,獲取的流量越多,成本越高,ROI就減小。
公式1中CTR直接做爲一個引子進行出價計算,因此這裏的CTR必須是一個真實的點擊率。由於在站外廣告點擊日誌中,正樣本是很是稀疏的,爲了保證模型的準確度,咱們通常都會採用負樣本抽樣。這樣模型估計出來的CTR相對大小是沒有問題的,能夠做爲排序依據,可是用來計算出價的時候,必須把負樣本採樣過程還原回去,咱們在下面的小節中詳細解釋。
該模型目標是,對於RecServer召回的廣告,預測出廣告的相對點擊率和真實點擊率,相對點擊率用於排序, 真實點擊率用於流量報價。對於每一個流量,AdExchange會下發給多個DSP,報價最高的DSP會勝出,獲取在這個流量上展現廣告的機會。爲了可以引入更多的優質流量,減小流量成本,提升ROI、CTR預估模型須要充分考慮站點、廣告、用戶等維度的信息。
廣告的點擊與轉化主要與用戶、廣告、媒體(user,ad,publisher)這三個因素相關。咱們的特徵也主要從這三個方向去構建,並衍生出一些特徵。
特徵選擇
用戶瀏覽,購買的品類,用戶畫像,瀏覽器,操做系統等特徵。
廣告deal的屬性特徵,如商家、品類、價格、創意類型等特徵。
廣告deal的統計特徵,如歷史CTR、CVR、PV、UV、訂單量、評分等。
網站類別,網站域名,廣告位,尺寸等特徵。
用戶瀏覽、購買的品類與廣告品類的match, 商家的match。
用戶瀏覽廣告的不一樣時間粒度的頻次特徵,好比用戶瀏覽當前廣告的次數、用戶上次點擊廣告距離當前的時間差。
在LR+人工特徵的實現過程當中,須要人工構造一些組合特徵,好比,網站+廣告、用戶消費水平+價格、廣告主+廣告品類等,對於FM和FFM能都自動進行特徵的組合。
廣告的效果每每與用戶所處的外部環境相關。好比 時段、工做日/節假日、移動端的經緯度等。
特徵處理
最後再看咱們具體如何構建模型。
因爲站外的站點數量巨大、廣告位較多、廣告的品類較多,形成訓練樣本的特徵數較大,須要選擇合適的模型來處理,這裏咱們選用了LR+人工特徵的方式,確保訓練的性能。
點擊率模型須要考慮用戶維度的數據,因爲美團的用戶量巨大,若是直接用用戶id做爲特徵會形成特徵數急劇增大,並且one-hot encoding後的樣本會很是稀疏,從而影響模型的性能和效果。因此咱們這裏採用了用戶的行爲和畫像數據來表徵一個用戶,從而下降用戶維度的大小。
對於站外廣告,有不少廣告位比較靠近頁面的下方,沒有被用戶看到,這樣的廣告做爲負樣本是不合理的。咱們在負樣本選擇的時候須要考慮廣告的位置信息,因爲咱們做爲DSP沒法獲取廣告是否真實被用戶看到的信息。這裏經過適當減小點擊率較低的展位負樣本數量,來減輕不合理的負樣本的狀況。
對於二跳頁廣告,只取點擊的位置以前的負樣本,而未點擊的則只取top20的廣告做爲負樣本。
因爲廣告點擊的正負樣本分佈極其不均,站外廣告的點擊率廣泛較低,絕大多數樣本是負樣本,爲了保證模型對正樣本的召回,須要對負樣本按照必定比例抽樣。
因爲負樣本抽樣後,會形成點擊率偏高的假象,須要將預測值還原成真實的值。調整的公式以下:
$$q=p(p+1−pw)(2)$$
q: 調整後的實際點擊率。 p: 負樣本抽樣下預估的點擊率。 w: 負樣本抽樣的比例。
當用戶點擊了廣告後,會跳轉到廣告中間頁,由於站外流量轉化很是不容易,因此對於吸引進來的流量,咱們但願經過比較精細化的排序給用戶投放盡量感興趣的廣告。
因爲進入二跳頁的流量大概比站外流量少兩個數量級,咱們可使用比較複雜的模型,同時由於使用比較多的用戶/廣告特徵,因此這裏咱們選擇了效果比較好的FFM模型。
特徵和樣本處理方面的流程基本相似CTR預估模塊中的樣本處理流程。差異在於廣告在展現列表中的位置,對廣告的點擊機率和下單機率是有很是大影響的,排名越靠前的廣告,越容易被點擊和下單,這就是position bias的含義。在抽取特徵和訓練模型的時候,就須要很好去除這種position bias。
咱們在兩個地方作這種處理: 在計算廣告的歷史CTR和歷史CVR的時候,首先要計算出每一個位置的歷史平均點擊率ctr_p,和歷史平均下單率cvr_p,而後再計算i廣告的每次點擊和下單的時候,都根據這個item被展現的位置,計算爲$ctr_0/ctr_p及cvr_0/ctr_p$。 * 在產生訓練樣本的時候,把展現位置做爲特徵放在樣本里面,而且在使用模型的時候,把展現位置特徵統一置爲0。
上文提到廣告是根據v∗ctrt進行排序,並經過公式1進行報價。這裏面的v就是點擊價值(點擊價值是指用戶發生一次點擊以後會帶來的轉化價值)。
廣告業務的根本在於提升展現廣告的eCPM,eCPM的公式能夠寫爲v∗ctr∗1000,準確的預估點擊價值是爲了準確預估當前流量對於每個廣告的eCPM。劉鵬在《計算廣告》中提到,只要準確的估計出點擊價值,經過點擊價值計算和CTR計算獲得的eCPM進行報價,就始終會有利潤,這是由於AdExchange是按照廣義第二齣價進行收費的。
在實際投放過程當中,出價公式能夠隨着業務目標的不一樣進行適當的調整,好比咱們的出價公式中包含了擠壓因子t,和a ,b兩個參數。出價越高帶回來的流量越大,可能帶來質量良莠不齊的流量,通常在一段時間以內會引發CTR的下降,這樣會帶來CPC點擊成本的提升,因此ROI會下降。反之出價比較低的狀況下,帶來的流量越少,通過比較細緻的流量過濾,CTR能長期保持在一個較高的水平,點擊成本CPC比較低,ROI就會比較高。
美團DSP在點擊價值預估上經歷了兩個階段:
第一階段是站外廣告的落地頁是廣告的詳情頁面時,廣告的點擊價值預估比較簡單,只須要預估出站外流量到達廣告詳情頁以後的CVR便可。正負樣本的選擇也比較簡單,採集轉化樣本爲正樣本,採集瀏覽未轉化樣本做爲負樣本。咱們也進行了適當的負樣本採樣和真實CVR校準,這裏採用的方法跟上一節相似,再也不贅述。 模型方面,在控制特徵複雜度的基礎上,咱們選擇了效果不錯的二次模型FFM,複雜度和性能都可以知足線上的性能。 特徵方面,咱們使用了站外實時特徵+部分離線挖掘特徵,因爲FFM預測複雜度是(knn),k是隱向量長度,n是特徵的個數,特徵的選擇上須要挑選貢獻度比較大的特徵。
第二階段,通過統計,詳情頁的用戶流失率很是高,爲了下降流失率,咱們開發了廣告二跳頁,在二跳頁裏面,用戶在站外點擊的廣告排在第一位,剩下的是根據咱們的召回策略和排序策略決定的。根據公式1,點擊價值是由二跳頁的k個廣告共同決定的。可是在站外廣告排序和報價的過程當中,咱們沒法獲取中間頁的召回結果,因此在實際狀況中是沒法適用的。目前咱們的策略是直接對當前用戶和當前商品的特徵創建一個迴歸模型,使用用戶在二跳頁上成交的金額做爲label進行訓練,模型分別嘗試了GBDT和FM,最終採用了效果稍好些的GBDT模型。
業內經常使用的量化指標是AUC,就是ROC曲線下的面積。AUC數值越大,模型的分別能力越強。
Facebook提出了NE(Normalized Entropy)來衡量模型,NE越小,模型越好。
$$NE=−1N∑ni=1(1+yi2log(pi)+1−yi2log(1−pi))−(p∗log(p)+(1−p)∗log(1−p))(3)$$
N:訓練的樣本的數量。 yi:第i個樣本的lable,點擊爲+1, 未點擊爲-1。 pi:第i個樣本預估的點擊率。 P:全部樣本的實際點擊率。
離線咱們主要使用的是AUC和NE的評估方法。
經過在線ABtest,確保每次上線的效果都是正向的,屢次迭代後,站外CTR提高30%,廣告二跳頁CTR提高13%,二跳頁CVR提高10%。
在線預估的CTR和CVR,創建小時級流程,計算每一個小時的在線AUC。發現AUC異常的狀況,會報警,確保模型在線應用是正常的。
在線預估的值會計算出平均值,確保均值在合理的範圍以內。均值太高會致使報價偏高,獲取流量的成本增長。均值太低,形成報價偏低,獲取的流量就偏少,對於估值異常的狀況能及時響應。
本文介紹了美團DSP在站外投放過程當中的策略實踐。不少細節都是在業務摸索過程當中摸索出來的。後續有些工做還能夠更細緻深刻下去:
流量篩選目前仍是比較粗暴的根據網站歷史的CTR等直接進行過濾,後續會基於用戶的站內外的行爲,對流量進行精細化的篩選,提高有效流量,提升轉換。
在DSP的報價環節,點擊率預估模型會對每個流量預估出一個CTR,爲了適應adx市場的須要,會加上指數和係數項進行調整。可是經過這種報價方式獲取的流量,因爲外部競爭環境的變化,流量自然在不一樣時段的差別,常常會出現CPC不穩定。該報價的係數對於全部的媒體都是一致的,而通常的優質媒體都是有底價的,且不一樣媒體的底價不一致,形成該報價方式沒法適用全部的媒體,出現部分優質媒體沒法獲取足夠的流量。
咱們的目標是在CPC必定的狀況下,在優質媒體、優質時段儘量多的獲取流量,這裏咱們須要根據實時的反饋和指望穩定的CPC來動態調整線上的報價。從而在競價環境、時段、媒體變化時,CPC保持穩定,進一步保證咱們的收益最大化(一樣的營銷費用,獲取的流量最多)。
基於位置的召回策略中,咱們對用戶的商圈屬性沒有做區分,比較粗粒度的統一召回,這樣其實容易把用戶當前時間/位置真正有興趣的商品拍的比較靠後;比較好的辦法是經過精準的用戶畫像和用戶消費時間/位置上下文挖掘,根據用戶競價時的位置和時間,分析出用戶轉化率高的商圈,從而進行更加精準的投放。
在業務上,美團DSP會逐步接入市場上主流的AdExchange和自有媒體的流量。技術上,會持續探索機器學習、深度學習在DSP業務上的應用,從而提高美團DSP的效果。