互聯網廣告綜述之點擊率系統

互聯網廣告綜述之點擊率系統

聲明:

1)該博文是整理自網上很大牛和專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻

2)本文僅供學術交流,非商用。所以每一部分具體的參考資料並沒有詳細對應,更有些部分本來就是直接從其他博客複製過來的。如果某部分不小心侵犯了大家的利益,還望海涵,並聯系老衲刪除或修改,直到相關人士滿意爲止。

3)本人才疏學淺,整理總結的時候難免出錯,還望各位前輩不吝指正,謝謝。

4)閱讀本文需要互聯網廣告業的基礎(如果沒有也沒關係了,沒有就看看,當做跟同學們吹牛的本錢)。

5)此屬於第一版本,若有錯誤,還需繼續修正與增刪。還望大家多多指點。請直接回帖,本人來想辦法處理。

6)本人手上有word版的和pdf版的,有必要的話可以上傳到csdn供各位下載


一.互聯網廣告技術


博文《互聯網廣告綜述之生態圈》論述過互聯網廣告生態圈的各個平臺,大家可以看到,其中的Ad exchange是躺着賺錢的平臺,風險並不大。
其中的DSP就承擔了比較多的風險,如果向Ad exchange請求的流量太貴,而廣告主開價比較低的話,就可能面臨虧錢。另外,廣告主的需求是變化多樣的,有些廣告主願意開一定價錢要求多少次點擊,而有些廣告主就希望開多少價錢有多少次互動,同時廣告主會對效果有所需求。換句話說,評估流量的質量對DSP非常重要。
DSP需要評估流量質量,如果發現一個流量的質量很高,就開高價去竟爭這個流量;如果流量質量低,就開低價去竟爭。如果評估得太高,出很高的價錢拿到了質量很低的流量,那就達不到廣告主的要求,會虧錢;如果評估得太低,一直拿不到流量,沒辦法賺錢。
所謂評估流量質量,說到底了是預估一個流量的ctr(點擊率,也成爲點擊某廣告的可能性),所以對於DSP來說,能否估準ctr是DSP生存的關鍵。


1.1互聯網廣告點擊率預估

做點擊率預估需要兩方面的數據,一方面是廣告的數據,另一方面是用戶的數據,對於DSP來說,廣告數據它自己有,用戶數據可以從DMP獲取,它自己的工作是利用這兩方面的數據評估用戶點擊這個廣告的可能性(也就是概率)。

1.1.1 預估方法討論

對點擊率的預估,做的工作可以用下面的圖來描述。

預估一個人點擊一個廣告的概率,不可能是一個人在那裏看着,來一個廣告請求就估計一下,給個決定,這樣人累死,估計得也亂七八糟,還效率不高,一天撐死了估計個幾十萬個請求,不得了了。
只能用機器來估,但是機器是很笨的,只能進行簡單的規則運算,這些規則還必須提前指定。如果人工指定這些規則,如30歲用戶點擊匹克籃球的廣告概率是多少,男性的用戶點擊匹克籃球的廣告的概率是多少,年齡和性別在總的ctr預估裏面佔多少比重等等,則需要大量的先驗知識,而且還不能根據實際情況變化,往往有問題。
這就需要機器學習方法來輔助了,一個是統計方法,一個是模型
統計方法怎麼用呢?如可以統計過去投放過的記錄中,30歲的用戶點擊匹克籃球的廣告的點擊率是多少,這個數據直接就能根據投放日誌統計出來;再統計男性的用戶點擊匹克籃球的廣告的點擊率是多少,這樣前面的兩個東西就得到了。
但是知道這兩個點擊率,還需要知道這兩個點擊率在評估這個人點擊匹克籃球的廣告的概率中分別起什麼作用。這兩個點擊率加起來不行,相減也是不行的,加權累加可能是一種辦法,但是這樣行嗎?爲了解決這個事情,需要用模型來解決了。爲了描述的方便,我們把這兩個點擊率稱爲特徵,用一個向量x=(x1,x2)來統一表示,其中x1表示30歲的用戶對匹克籃球的廣告的點擊率,x2男性的用戶對匹克籃球的廣告的點擊率。
利用模型做ctr預估,用數學的方法來描述就是完成上面的圖中函數f的形式。
本來這個函數的形式是很複雜的,但是太複雜的模型不利於擴展,就用簡單的形式來。經過工業界長期的工作,認爲下面的形式是比較有效的。

其中x是上面的那個x,w也是一個向量,表示的是x的每個特徵的權重。這個w每取一個值,對相同的user和ad對就能得到一個預估的ctr,w同時也被稱爲是模型,因爲它能根據x的取值,也就是特徵的取值來決定ctr
權重可以人工指定的,但是上面說過了,需要大量的先驗知識,而且特徵會特別多,如上面還有地域,職業,學校什麼的,可以搞到成千上萬的特徵,人工指定沒辦法做到周全。所以這個權重的是要用算法來讓機器自己學習到的,這個過程稱爲訓練,這個訓練過程還不能只根據一個記錄user和ad對來訓練,要根據很多對來訓練。每個展示記錄就是一個對,根據歷史的一段時間內的展示記錄,能有很多的的數據對可以進行訓練。
用什麼方法進行訓練呢?上面user和ad對可以達到上億的量級。
機器學習領域的把這個訓練過程稱爲是擬合分佈的過程,他們認爲一次廣告的展示是否被點擊(每次展示被點擊的概率可能不一樣)是一個伯努利試驗,對多個用戶展示多個廣告的過程是一個伯努利過程,總體的歷史展示與點擊數據符合一個伯努利分佈,伯努利試驗成功的概率就是上面的f(user,ad)的值。擬合這個伯努利分佈的過程就是訓練的過程。擬合分佈往往用的是極大似然估計的方式去擬合,剛好做的事情就是跟做一個迴歸問題是一樣的,這個迴歸叫做logistic迴歸。爲了方便描述,改變一下f的寫法,用下面的方式表示

其中y=1表示這個展示被點擊了,y=0表示這個展示沒有被點擊。似然函數和對數似然函數也可以寫成下面的形式

求上面的式子的最大值,就可以得到w的最優解,這個最優解w就表示當前展示數據的伯努利分佈是擬合的最好的,用來預估ctr也是最好的。
有關求解最優化問題的基礎可以參看博文《無約束優化方法讀書筆記—入門篇
有關極大似然估計的知識可以參看博客中轉載的《從最大似然到EM算法淺解》。
有關邏輯迴歸及其相關知識的可以參看博文《從廣義線性模型到邏輯迴歸》。

有關特徵工程的知識可以參看博文《互聯網廣告綜述之點擊率特徵工程》。


1.1.2 線上應用情況

下面的圖顯示了CTR預估的系統結構。

其中投放平臺獲取到用戶的廣告請求後,將請求交給CTR計算與排名模塊,這個模塊會獲取用戶數據和廣告數據,再根據模型計算CTR。得到ctr後,有兩種方式使用。一種是對CTR進行排名,返回排名ctr最高的廣告,然後DSP就可以根據這個CTR出價了;另一種是將廣告的出價與ctr相乘,得到每個廣告的收益,根據收益排名,返回收益排名最高的廣告。
投放平臺獲取這個廣告後,根據一些條件,會把廣告展示給用戶,同時產生投放日誌。用戶會做出相應的反饋(點擊或不點擊),產生點擊日誌。
這些日誌會產生三個作用。一種是存到日誌數據存儲工具。第二種是產生實時統計數據,以方便迅速更新特徵。第三種是進行在線學習,不斷更新線上的模型。
日誌存儲工具的日誌有兩種作用,一種是經過ETL,可以生成訓練數據,然後用這些訓練數據去訓練模型,然後更新線上的模型;另一種是利用統計的方式或者其他方式產生特徵。
線上模型有兩種更新方式,一種是離線訓練的更新方式,一種是在線學習的更新方式。
這兩種方式分別用的是兩種不同的訓練算法。離線訓練的更新方式比較慢,頻率一般比較低,一般都是一天或者一個星期訓練一次,用的方法一般是批量學習方式,就是對數據進行多輪的迭代,獲取w的儘可能的最優解。在線學習的方式要求能快速更新線上模型,一般是來一個展示記錄,就獲取這個展示記錄的特徵,然後利用這個記錄去進行只有一個數據的迭代,得到一個新的模型。
離線訓練的方式有多種,其中一種可以參看轉載的博文《OWL-QN算法》。
在線學習的方式也有多種,其中一種可以參看博文《在線學習算法FTRL》。


致謝

多位Google、Linkedln公司的研究員無私公開的資料。
多位博主的博客資料。

參考文獻

[1] Ad ClickPrediction: a View from the Trenches. H. Brendan McMahan, Gary Holt et al,Google的論文

[2] http://blog.csdn.net/zouxy09/article/details/8537620@zouxy09的博客

[3] http://www.cnblogs.com/vivounicorn/archive/2012/06/25/2561071.html@Leo Zhang的博客

[4] Computational Advertising: The LinkedIn Way. Deepak Agarwal, LinkedIn Corporation CIKM

文章來源:http://blog.csdn.net/mytestmy/article/details/18987881
發佈了19 篇原創文章 · 獲贊 71 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章