廣告出價--如何使用PID控制廣告投放成本

文章來源:AlphaSue https://zhuanlan.zhihu.com/p/139244173

背景

任何一個廣告投放體系在商業化的過程中必須考慮的兩個因素就是,投放成本、投放量. 只有投放成本低於整個商業鏈條中可接受的成本,這個商業模式才能夠成立,而投放量決定了這個模式能夠有多大的規模。

成本控制是衡量廣告投放能力最直觀的指標。廣告主、業務人員,在使用廣告投放系統(例如dsp)時,與這個產品進行交互,設定成本,能夠最直接感知到的就是實際投放成本,不失一般性的,我們這裏討論一種最簡單的成本,cpc(cost per click). 在實際投放過程中,由於模型預估ctr不可能非常精準,甚至會有量級的差異,再加上二價的機制,都會導致 實際投放出的cpc和目標cpc嚴重不一致,導致成本不可控。而出價體系就是爲了保證投放cpc符合預期。出價策略對於廣告投放體系,就類似於GUI對於計算機的重要性,直接影響了用戶體驗.

PID算法是控制理論中,最簡單,但也是應用最廣泛的一種控制方法,如果你對PID算法不是很瞭解,強烈建議先看完這篇通俗易懂的介紹。

確定有窮自動機:PID控制算法原理(拋棄公式,從本質上真正理解PID控制)((https://zhuanlan.zhihu.com/p/39573490))

接下來就介紹下P、I、D在控制cpc時分別代表什麼含義,以及大概的調參方法.

PID在控制cpc中的應用

不失一般性的,我直接給出一個最簡單的出價公式,目標是控制cpc,同時最大化點擊數,結算方式爲ecpm. bid = (cpc + lambda) * ctr * 1000

其中cpc爲設置的目標cpc,lambda爲使用pid來調整的係數, 假設每隔1h來調整一次,如果實際cpc偏低,那麼就增大lambda,這樣出價就會增大,反之亦然. 顯然,這裏的K_p,K_I 爲正.

關於P

K_p是比例係數,假設目標cpc 0.4, 實際cpc 0.2 誤差是0.2,K_p 越大,反應幅度就會越大,新的lambda 就會增加很多,出價就會增加很多,但是K_p不能夠過大,不然會導致超調,出價過高. 所以K_p代表了 根據當前誤差反應的比例。

關於I

I的存在是爲了解決穩態誤差。

假如我cpc偏低,每小時我都在提高價格,但是市場價格(出價第二高的廣告主出價)也在下降,所以,雖然每個小時我都在提價,但是由於市場價格在降價,導致我每次提價cpc都沒有提上去. 像這種如果一直存在,我們稱之爲穩態誤差. 積分的存在就是 通過過去差值的經驗來調整出價,來消除這個穩態誤差.

但是,實際投放過程中基本不會存在這樣的穩態,因爲競價系統是動態的,只能說市場價格可能隨着時間有些固定的變化,但是變化並不一定是穩定方向,所以 I值在實際使用中需要慎重,如果設置特別大,會導致上個小時已經不存在的誤差,影響到當前小時,所以I即使要使用,最好設置的非常小.

關於D

D項被稱爲微分項,當兩次調控間隔十分小,(error_t - error_t-1) / 1, 計算的就是斜率,如果間隔十分小,那麼這個斜率就可以一定程度體現出下次error的走向,這也是爲什麼說 微分項代表未來。但是,如果兩次間隔十分大、或者噪音非常多,微分項的作用就不大了。對於一個小時調控一次的PID調價,D項可以爲0. 實際上, 很多PID控制器僅用PI就已經足夠了.

總結

簡單的說,P代表現在,I代表過去,D代表未來。在實際應用中還是需要考慮 具體參數大小,可以通過grid search, 根據響應時間、超調量、穩態誤差指標,來綜合選擇PID值. 除此以外,面對一些緊急情況還是需要添加一些規則的,畢竟非常時期,採用非常手段.

PID調價同時也存在着一些缺陷,簡單泛化能力強是優點也是缺點,只需要根據設定cpc和實際cpc的反饋就能夠調節。但是,在某些固定場景下,cpc的波動會呈現固定的pattern,例如在某幾個小時流量質量特別好,cpc會特別低,這就需要使用機器學習來記憶到哪些campaign在哪些時間點需要提高價格,使用強化學習出價在充分利用投放數據、建立MDP模型、序列化決策這些方面 就有了天然的優勢. 如何搭建有效模擬環境、訓練出有效的agent、使用RL出價便是另一個非常大的問題了.

那麼整體來說,調價也只是出價體系的一小環節,除此之外還有出價公式的設計、預算分配等等問題. 而出價體系在整個廣告投放系統也是其中一個環節,但起着至關重要的作用.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章