互連網廣告綜述之點擊率特徵工程

來源:互聯網
上載者:User

標籤:

互連網廣告綜述之點擊率特徵工程


聲明:

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

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

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

4)閱讀本文需要機器學習、統計學習理論、最佳化演算法等等基礎(如果沒有也沒關係了,沒有就看看,當做跟同學們吹牛的本錢)。

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


一.互連網廣告特徵工程

博文《互連網廣告綜述之點擊率系統》論述了互連網廣告的點擊率系統,可以看到,其中的logistic regression模型是比較簡單而且實用的,其訓練方法雖然有多種,但目標是一致的,訓練結果對效果的影響是比較大,但是訓練方法本身,對效果的影響卻不是決定性的,因為訓練的是每個特徵的權重,權重細微的差別不會引起ctr的巨大變化。
在訓練方法確定後,對ctr預估起到決定性作用的是選用的特徵。


1.1特徵選取與使用

做點擊率預估需要兩方面的資料,一方面是廣告的資料,另一方面是使用者的資料,現在所有的資料都有,那麼工作就是利用這兩方面的資料評估使用者點擊這個廣告的可能性(也就是機率)。
使用者的特徵是比較多的,使用者的年齡,性別,地區,職業,學校,手機平台等等。廣告的特徵也很豐富,如廣告大小,廣告文本,廣告所屬行業,廣告圖片。還有反饋特徵,如每個廣告的即時ctr,廣告跟性別交叉的ctr。如何從這麼多的特徵中選擇到能刻畫一個人對一個廣告的興趣的特徵,是資料採礦工程師的一個大難題。
選中了特徵,還需要注意特徵的選擇方式,例如,如果單獨把年齡作為一個特徵,最終能訓練出來啥嗎?因為年齡相加相減是沒有意義的,所以只能把每個年齡做為一個特徵,但是光這樣可以了嗎?怎麼用特徵,是廣告演算法工程師的一個大課題。


1.1.1 選擇特徵

什麼樣的特徵適合用來預估ctr?這個問題是很多廣告演算法工程師的需要考慮的。
機器學習演算法最多會大談模型,對於特徵的討論很少涉及。真正的應用中,多數資料採礦工程師的工作都是在想特徵,驗證特徵。
想特徵是一個腦力加體力的活,需要不少的領域的知識,更讓人鬱悶的是,工業界並沒有一整套想特徵的辦法,工業界有的只是驗證特徵的辦法。對於互連網廣告業,就簡單說說通用特徵怎麼來的吧。
首先說年齡這個特徵,怎麼知道它跟點擊率有關係?現在直觀的解釋是,年輕人普遍喜歡運動類的廣告,30歲左右的男人喜歡車,房子之類的廣告,50歲以上的人喜歡保健品的廣告。可以看到,選擇年齡作為特徵的理由是基於對各個年齡段的人喜歡的不同類型的東西的一個粗略的劃分,是一個很主觀的東西。
再說性別這個特徵,直觀的感覺是,男性普遍喜歡體育類的,車類的,旅遊類廣告,女性普遍喜歡化妝品,服裝類的廣告。這也可以看到,選擇性別作為特徵也是基於相似的理由,就是認為男性和女性大體會喜歡不同的東西。
對於地區這個特徵,這下就學問多了,華南的人在比較喜歡動漫和遊戲,華北的人喜歡酒品和煙?
在廣告方面的特徵,廣告的圖片大小,廣告前景色彩背景色真的能影響人的點擊嗎?這其實都是一種猜測。圖片裡面是一個明星還是一個動物之類的因素也可以考慮。
總之,想特徵的這個事情基本沒多大譜,只能天南地北地想象,還要多瞭解各行各業的知識,以便想到更多的特徵,哪怕某個特徵跟人關係並不大,也得好好驗證一番。這基本上跟男人為回家晚想借口一樣,得有借口要想著怎麼解釋得好聽點,沒借口就要想借口。
想到了特徵,就要驗證和進行判斷。
驗證特徵的辦法多,有直接觀察ctr,卡方檢驗,單特徵AUC等。直接觀察ctr是個很有效方法,如根據投放記錄,化妝品的廣告在女性上面的點擊率就比在男性上面的點擊率高很多,說明性別這個特徵在化妝品行業是有預測能力的;又如體育用品的廣告在男性上面的點擊率也比女性高,說明性別這個特徵在體育行業也是有預測能力的,經過多個行業的驗證,就認為性別這個特徵可以用了。
年齡這個特徵的評估類型,主要是觀察一個廣告在不同年齡段的點擊率是否有區別,再觀察不同廣告的點擊率在不同年齡段的分布是否不一樣,如果都有區別,說明年齡這個特徵就可以用了。
在實際的使用中發現,性別這個特徵比較有效,手機平台這個特徵也比較有效,地區和年齡這兩個特徵有一定效果,但沒有前兩個那麼明顯,跟他們的使用方式可能有關,還需要進一步挖掘。
同時,實際使用中也發現,廣告反饋ctr這個特徵也很有效,這個特徵的意思就是當前的廣告正在投放,已經投放了一部分了,這部分的點擊率基本可以認為是這個廣告的點擊率了,也可以認為是這個廣告的品質的一個體現,用來預估一個流量的ctr是很有效。


1.1.2 特徵的處理和使用

選擇得到特徵,怎麼用也是一個問題。
先說需求,其實預估ctr要做的事情是下面的圖的工作——計算一個使用者/廣告組合的ctr。

上面已經選好了特徵,暫訂有廣告的反饋ctr,使用者年齡,性別三個特徵。
一、離散化
反饋ctr是一個浮點數,直接作為特徵是可以的,假設1號特徵就是反饋ctr。對應年齡來說就不是這樣了,因為年齡不是浮點數,而且年齡的20歲跟30歲這兩個數字20,30大小比較是沒有意義的,相加相減都是沒有意義的,在最佳化計算以及實際計算ctr是會涉及這兩個數位大小比較的。如w.x,在w已經確定的情況下,x的某個特徵的值是20,或者30,w.x的值相差是很大的,哪怕用邏輯化公式再比較,得到的值也是比較大的,但是往往20歲的人跟30歲的人對同一個廣告的興趣差距不會那麼大。解決這樣的情況的方法就是,每個年齡一個特徵,如總共只有20歲到29歲10種年齡,就把每個年齡做一個特徵,編號是從2到11(1號是廣告的反饋ctr),如果這個人是20歲,那麼在編號為2的特徵上的值就是1,3到11的編號上就是0。這樣,年齡這一類特徵就有了10個特徵,而且這10個特徵就是互斥的,這樣的特徵稱為離散化特徵。
二、交叉
這樣看起來就能解決上面的問題了,但是夠了嗎?
比如一個人是20歲,那麼在編號為2的特徵上面,它一直都是1,對籃球的廣告是1,對化妝品的廣告也是1,這樣訓練的結果得到的編號為2的權重的意義是——20歲的人點擊所有的廣告的可能性的都是這個權重,這樣其實是不合理的。
有意義的應該是,這個20歲的人,當廣告是跟體育相關的時候,它是一個值;當廣告跟保健品相關的時候,它又是一個值。這樣看起來才合理。如果這個不夠深刻,基於跟上面同樣的道理,性別這個特徵也是一樣的,假如也做了上面的離散化操作,編號是12和13,12是男性,13是女性。這樣的話,對於一個男性/體育廣告組合來說,編號12的特徵值為1,男性/化妝品的組合的編號12的特徵值也是1。這樣也是不合理的。
怎麼做到合理呢?以上面的性別的例子來說。編號12的特徵值不取1,取值為該廣告在男性使用者上面的點擊率,如對於男性/體育廣告的組合,編號12的特徵的值為男性在體育廣告上面點擊率,這樣,編號為12的特徵就變成了一個浮點數,這個浮點數的相加減是有意義的。
這樣的做法稱為特徵的交叉,現在就是性別跟廣告的交叉得到的特徵值。還有很多其他的方式可以進行交叉,目前工業上的應用最多的就是廣告跟使用者的交叉特徵(編號為1的那個特徵)、廣告跟性別的交叉特徵,廣告跟年齡的交叉特徵,廣告跟手機平台的交叉特徵,廣告跟地區的交叉特徵。如果做得比較多,可能會有廣告主(每個廣告都是一個廣告主提交的一個投放計劃,一個廣告主可能會提交多個投放計劃)跟各個特徵的交叉。
三、連續特徵變離散特徵
做到的交叉的特徵值就足夠了嗎?答案還是不一定。
如編號為1的那個特徵,就是廣告本身的ctr,假設互連網廣告的點擊率符合一個長尾分布,叫做對數常態分佈,其機率密度是(注意這個是假設,不代表真實的資料,從真實的資料觀察是符合這麼樣的一個形狀的,好像還有雅虎的平滑的那個論文說它符合beta分布)。

可以看到,大部分廣告的點擊率都是在某一個不大的區間內的,點擊率越高的廣告越少,同時這些廣告覆蓋的流量也少。換句話說,點擊率在0.2%左右的時候,如果廣告a的點擊率是0.2%,廣告b的點擊率是0.25%,廣告b的點擊率比廣告a高0.05%,其實足以表示廣告b比廣a好不少;但是點擊率在1.0%左右的的時候,廣告a點擊率是1.0%,廣告b的點擊率是1.05%,並沒有辦法表示廣告b比廣告a好很多,因為在這0.05%的區間內的廣告並不多,兩個廣告基本可以認為差不多的。也就是點擊率在不同的區間,應該考慮是不同的權重係數,因為這個由廣告點選率組成的編號為1的特徵與這個使用者對廣告的點擊的機率不是完全的正相關性,有可能值越大特徵越重要,也有可能值增長到了一定程度,重要性就下降了。
對於這樣的問題,百度有科學家提出了對連續特徵進行離散化。他們認為,特徵的連續值在不同的區間的重要性是不一樣的,所以希望連續特徵在不同的區間有不同的權重,實現的方法就是對特徵進行劃分區間,每個區間為一個新的特徵。
具體實現是使用等頻離散化方式:1)對於上面的編號為1的那個特徵,先統計記錄中每條展示記錄中編號為1的特徵的值的排序,假設有10000條展示記錄,每個展示記錄的這個特徵值是一個不相同的浮點數,對所有的展示記錄按照這個浮點數從低到高排序,取最低的1000個展示記錄的特徵值作為一個區間,排名1001到2000的展示記錄的特徵值作為一個區間,以此類推,總共劃分了10個區間。2)對特徵編號重新編排,對於排名從1到1000的1000個展示記錄,他們的原來編號為1的特徵轉變為新的特徵編號1,值為1;對於排名是從1001到2000的記錄,他們的原來編號為1的特徵轉變為新的特徵編號2,值為1,以此類推,新的特徵編號就有了1到10總共10個。對於每個展示記錄來說,如果是排名1到1000的,新的特徵編號就只有編號1的值為1,2到10的為0,其他的展示記錄類似,這樣,廣告本身的ctr就佔用了10個特徵編號,就成為離散化成了10個特徵。
等頻離散化需要對原有的每個特徵都做,也就是原來的編號為1到13的編號,會離散化成很多的編號,如果每個特徵離散化成10個,則最終會有130個特徵,訓練的結果w就會是一個130維的向量,分別對應著130個特徵的權重。
實際的應用表名,離散化的特徵能擬合資料中的非線性關係,取得比原有的連續特徵更好的效果,而且線上上應用時,無需做乘法運算,也加快了計算ctr的速度。


1.1.3 特徵的過濾與修正

上面提到,很多特徵其實是反饋的特徵,如廣告反饋ctr,廣告與性別交叉特徵,這些特徵本來可以通過曆史展示日誌的統計得到。但有些廣告本來展示量很少,在男性使用者上展示就更少,這時要計算廣告與性別交叉的ctr是很不準確的,需要對這個特徵進行修正。具體的修正方法可以參考博文《廣告點選率的貝葉斯平滑》。
經過修正後的ctr再做特徵,實際線上效果有了比較大的提升。
如果使用的特徵又更多了,有了學校跟廣告交叉特徵什麼的,離散化後有了上萬的特徵,這下就會產生特徵過多導致的各種問題,如過擬合等。解決這個問題的方法一種是離線的資料評估,如用ctr的區分性。另一種就是利用正則,特別是L1正則,經過L1正則訓練的得到的權重向量,其中某些特徵如果對點擊率預估預測性不強,權重會變成0,不影響預估。這就是特徵過濾,具體的有關L1的一些論述與實現參看博文《從廣義線性模型到羅吉斯迴歸》《OWL-QN演算法》和《線上學習演算法FTRL》。


致謝

多位Linkedln、百度公司的研究員無私公開的資料。
多位博主的部落格資料。


參考文獻

[1] Ad Click Prediction: a View from the Trenches. H. Brendan McMahan, Gary Holt et al,Google的論文
[2] http://www.cnblogs.com/vivounicorn/archive/2012/06/25/2561071.html @Leo Zhang的部落格
[3] Computational Advertising: The LinkedIn Way. Deepak Agarwal, LinkedIn Corporation CIKM

互連網廣告綜述之點擊率特徵工程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.