Facebook廣告系統背後的Pacing演算法

Facebook上個月公布亮瞎雙眼的2015年第四季度財報,其中日活用戶超過10億,營收達到58.41億美金,而廣告就佔了56.37億美金,更恐怖的是來自於移動廣告業務的營收佔了80%。筆者在Facebook上面也曾經創建過營銷頁面,其實是拿到內部朋友一定限額的廣告(Campaign)推廣費用,當時驚訝投放的高效(太快了,不到1小時幾十刀都沒了),由於自己也做過廣告系統,也做過很多對比,從形式多樣性,功能的完整性,定位用戶,實時性,數據分析報告各項綜合指標Facebook都是行業翹楚,下面就是它們內部對開發者關於廣告系統Pacing演算法介紹,也適合廣告技術入門查看。

這裡首先介紹一些在線廣告術語

  1. 每個廣告 (Ad) 有一個出價 (Bid), 並有其在某情形下實際的點擊率 (Click-Through-Rate, CTR)。

  2. 廣告按點擊收費 (Charge per Click, CPC), 策略有一價計費 (First-Price, FP, 即廣告出價多少則一次點擊計費多少) 和二價計費 (Second-Price, SP, 即廣告按下一位出價來支付點擊價格, 更普遍的是 GSP,Google,Yahoo, LinkedIn都是用這一種)

  3. 千次展現收費 (Cost Per Mille, CPM, 或 RPM, R for Revenue), 即對點擊付費廣告其展示一千次情況下的收入 (一價計費下等價於 1000*CTR*Bid), 或是展示廣告的千次展現固定價格。

  4. 預估點擊率 (predict CTR, pCTR) 是指對某個廣告將要在某個情形下展現前, 系統預估其可能的點擊概率。

原文:developers.facebook.com

Pacing是Facebook廣告系統中調節花費預算節奏的一個演算法,一個類比就是競跑的運動員:過早衝刺意味著在終點前就沒勁了,但過晚衝刺也許你就沒完成這次比賽。Pacing保證對所有的廣告主在競爭前提下自動分配不同的廣告預算。Pacing就是優化核心組件讓廣告主獲得最大的投資回報率(ROI)。

Facebook Pacing演算法是怎麼工作的?

我們通過一個例子解釋Pacing工作原理。下面會涉及到點擊,同樣的想法可以應用到瀏覽,轉換,用戶行為,到達率等。

  1. 一個廣告主想對一個運動品牌做廣告。每天預算$10,以CPC計費,我們預先假定每次廣告點擊能產生$5的收益。

  2. 當他/她創建廣告後,對 LINK_CLICKS (點擊鏈接)做優化, bid_amount(出價)設置為$5, billing_event(觸發收費的事件)為 LINK_CLICKS, 基於這些為真的條件. 目標用戶群為男性 25-35歲。

  3. 廣告主的利潤是這些點擊產生的價值減去花去的預算。

為了簡化起見,我們假設這些機會(點擊,展示等)的當天價格是提前知道的。這樣我們能更清楚闡明點擊價格和收入關係。這些假設是基於目標產生的機會進行建模。

下面我們通過三個例子去理解Pacing演算法對廣告主提供最大的價值:

情況一:沒有Pacing演算法的時候

沒有Pacing,廣告主預算在一開始很短時間就被消耗乾淨(可能潛在的昂貴點擊),前期競爭激烈,後期無競爭,形成一定的資源浪費。下面的圖藍色的點代表廣告獲得展示的機會,黃色的圈代表廣告贏得展示,紅線代表出價的價格。結果是平均成本會高些,但廣告主會得到基於廣告設置的最想要的投放。這叫做加速投放。

廣告總花費 = $10n廣告總點擊價值 = 6 * $5 = $30n每次點擊價值 = $5n預算 = $10n廣告總收益 = $30 – $10 = $20n

案例二:出價過低

這種情況下,追求最低的點擊價格,但是廣告主的預算最後沒有能用完,最終的廣告效果也最差。

廣告總花費 = $4n廣告總點擊價值 = 4 * $5 = $20n每次點擊價值 = $5n預算 = $10n廣告總收益 = $20 – $4 = $16n

案例三:Pacing演算法下的均衡狀態

這時候,廣告客戶獲得了最大的點擊數,獲取到了最大收益,同時也用完了每日預算。

廣告總花費 = $10n廣告總點擊價值 =7* $5 = $35n每次點擊價值 = $5n預算 = $10n廣告總收益 = $35 – $10 = $25n

簡單的公式

從上面例子中,當我們在整段時間內使用穩定的出價(Pacing),廣告主的價值相比沒有Pacing或者出價過高過低,得到了最大化。為了實現目標,Pacing期望通過學習其他的有同樣目標用戶的競爭廣告,提出一個優化的競價。下面就是簡單公式。

最終競價 (每次展示) = 優化競價 (每次展示)* CTR where 優化競價 <= max_bidn

決定優化競價的是Pacing演算法的核心,包括反饋系統讓Pacing記錄下來。

CTR是點擊率。我們使用相同理念來看 查看率(VTR)和轉化率(CVR)。這些值的精確性會穩步提高,也受各種因素影響,比如廣告類型,受眾,時間點,廣告上下文等。

Pacing的重要性

Pacing在給定預算下最大化廣告主的利潤。它讓廣告主更加真實,和Vickrey–Clarke–Groves (VCG通過計算一個廣告主參加拍賣給別的廣告者帶來的損失之和來定價的) 拍賣,這裡面欺騙價值沒有任何好處,也沒有必要去想最大競價應該設多少。如此可以避免拍賣系統中的特殊機會。

Pacing保證了可預測的投放。這種穩定投放讓每日的價格穩定並幫助廣告主公平獲取他們目標用戶的門檻。

FAQ

問:我的廣告沒有被pacing演算法正確的優化,可能是什麼原因?

答:如果廣告顯示正常,有兩個原因,一個是最優化的價格太低,保證你的競價在建議價格範圍內這樣你才有機會贏得席位。對於競爭力的受眾,你需要把價格調高到建議價格之上。

另外一個原因是目標受眾過於狹小。

如果這個廣告投放過度,你可能有很多受眾但會快速消耗你的預算。

問: 當我改變了我的預算的時候,Pacing會受到什麼影響?

答:Pacing會去計算新的最優出價,但這個過程會需要一定的時間,這段時間內的出價不是最優的,所以建議不要頻繁的修改出價和預算的設置。

總結:Pacing就是通過學習同一受眾目標內的廣告競爭環境來決定最優化出價。

如果大家對廣告還有興趣,給一些深入參考文章。

為什麼要預估廣告點擊率?

大規模推薦引擎和廣告點擊率預估引擎中的TopK計算

關於點擊率模型,你知道這三點就夠了

點擊率預估的幾個經典模型簡介

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

關注如下我的微信公眾號「董老師在矽谷」,關注矽谷趨勢,一起學習成長。


推薦閱讀:

網格沉思-遊戲中的網格系統
[概念辨析 系列 之四] 樹的概念
[我的APIO講稿]有趣的構造
關於位操作的幾個小智力題

TAG:算法 | Facebook广告 |