tft每日頭條

 > 生活

 > facebook的廣告投放策略

facebook的廣告投放策略

生活 更新时间:2024-10-01 13:54:31

facebook的廣告投放策略(長文剖析經典論文)1

作者 | 梁唐

來源 | TechFlow(ID:techflow2019)

頭圖 | CSDN 下載自東方IC

今天我們來剖析一篇經典的論文:Practial Lessons from Predicting Clicks on Ads at Facebook。從這篇paper的名稱當中我們可以看得出來,這篇paper的作者是 Facebook 的廣告團隊。這是一篇将 GBDT 與 LR 模型結合應用在廣告點擊率預測的方法,雖然距今已經有好幾年了,但是文中的方法仍然沒有完全過時,至今依然有一些小公司還在使用。

這篇 paper 非常非常經典,可以說是推薦、廣告領域必讀的文章,說是業内的常識也不為過。這篇文章的質量很高,内容也比較基礎,非常适合作為大家的入門 paper。

本文有點長,建議先馬後看。

facebook的廣告投放策略(長文剖析經典論文)2

簡介

paper 開頭的部分簡單介紹了一下當時互聯網行業當中廣告的地位以及當時 Facebook 的規模,當時 Facebook 有着7.5億的日活(日活躍用戶 daily active users ),超過一百萬有效的廣告商,因此對于 Facebook 來說選擇合适有效的廣告投放給用戶的重要性是非常巨大的。在此基礎上引出了 Facebook 的創新性做法,即将 GBDT 與邏輯回歸模型進行組合,在真實的數據場景當中獲得了超過3%的收益。

在2007年的時候 Google 和 Yahoo 就提出了在線競價的廣告收費機制,但是 Facebook 和搜索引擎的場景不一樣,在搜索引擎的場景當中,用戶會有明确的搜索意圖。引擎會先根據用戶的搜索意圖去篩選廣告,所以候選的廣告集不會很大。但是 Facebook 不存在這樣的強意圖信息,所以 Facebook 候選的廣告數量要大得多,因此對于系統的壓力以及要求也要更高。

但是本文(paper)并不會讨論系統相關的内容,僅僅關注最後一部分排序模型的做法。雖然 paper 裡沒說,但是我們看得出來,Google 和 Yahoo 這類搜索引擎當中的廣告是搜索廣告,而 Facebook 當中的這些廣告是推薦廣告。後者和前者最大的區别就是召回廣告的邏輯不一樣,有點類似于推薦系統和搜索系統的區别。

這其中的核心是用戶意圖,雖然用戶登錄 Facebook 的時候沒有強意圖,但是根據用戶之前的浏覽行為以及習慣,我們是可以提取出一些弱意圖的。比如用戶在哪類商品上停留的時間最長,點擊什麼樣的内容的次數最多,還有類似協同過濾的把用戶的行為抽象成向量的做法。其實這裡面的内容很多,也非常有價值,可見 Facebook 在寫論文的時候是留了一手的。

facebook的廣告投放策略(長文剖析經典論文)3

具體做法

說完了廢話我們來看具體的做法,具體的做法很多同學可能都有所耳聞也就是 GBDT LR 的做法。說起來一句話好像就說完了,但是裡面的細節很多。比如為什麼要用 GBDT,為什麼 GBDT 能夠起作用?這裡面生效的機制是什麼?paper裡寫的内容隻是表面,這些細節的思考和分析才是關鍵。因為paper裡的做法并不是普适的,但是其中蘊含的道理往往是通用的。

首先來說說模型評估,paper 當中提供了兩種新的評估模型的方法。一種是 Normalized Entropy,另外一種是Calibration。我們先從模型評估說起。

1、Normalized Entropy

這個指标在實際場景當中算是蠻常用的,經常在各種大神的代碼和 paper 當中看到。直譯過來是歸一化熵的意思,意思有點變了,可以理解成歸一化之後的交叉熵。它是由樣本的交叉熵均值和背景 CTR 的交叉熵的比值計算得到的。

背景 CTR 指的是訓練樣本集樣本的經驗 CTR,可以理解成平均的點擊率。但是這裡要注意,不是正負樣本的比例。因為我們在訓練模型之前都會做采樣,比如按照正負樣本比1:3采樣,這裡的背景 CTR 應該定為采樣之前的比例。我們假設這個比例是 p,那麼我們可以寫出 NE 的公式:

facebook的廣告投放策略(長文剖析經典論文)4

這裡的取值是,也就是點擊是 1,沒有點擊是-1。這個是 paper 裡面的公式,在實際應用當中,我們一般把 click 寫成1,impression(沒有click)寫成是0。

2、Calibration

Calibration 翻譯過來是校準刻度的意思,但是這裡我覺得應該理解成和基準線的偏差。這個指标是模型預測的平均 CTR 和背景 CTR 的比值,這個比值越接近1,說明我們的模型的基準偏差越小,越接近真實的情況。

這個公式可以寫成:

3、AUC

AUC 是老生常談了,也是我們工業界最常用的指标,幾乎沒有之一。AUC 我們在之前的文章當中介紹過,它表示的 Aera-Under-ROC,也就是 ROC 曲線圍成的面積。ROC 曲線是TPR(true postive rate)和FPR(false positive rate)組成的曲線。這個曲線面積越大表明模型區分正負樣本的能力越強,在 CTR 排序場景當中,其實模型能否預測準确并不是最重要的,把正樣本篩選出來的能力才是最重要的,這也是 AUC 如此重要的原因。

facebook的廣告投放策略(長文剖析經典論文)5

但是 AUC 也不是沒有缺點,paper 當中列舉了一個缺點。比如說假如我們把模型預測的 CTR 全部x2,然後再給所有的預測結果乘上0.5來校準,這樣 AUC 依然不會有變化。但是如果我們看NE的話,會發現 NE 上升了。

4、組合模型

終于到了重頭戲了,雖然這篇 paper 當中講了很多其他方面的内容,但是我們都知道 GBDT LR 才是它的重點。GBDT 和 LR 我們都很熟悉,但是它們兩個怎麼 combine 在一起呢?

其實這個問題本身就是錯的,所謂 GBDT LR 并不是兩個模型的結合,而是一種特征的轉化。也就是說這個問題我們需要從特征的角度去思考而不是從模型。

paper 當中先講了兩種常用的處理特征的方法,第一種是叫做 bin,也就是分桶的意思。比如說收入,這是一個連續性特征。如果我們把它放入模型,模型學到的就是它的一個權重,也就說它是線性起作用的。然而在實際的場景當中,可能這完全不是線性的。比如有錢人喜歡的品牌和窮人可能完全不同,我們希望模型能夠學到非線性的效果。一種比較好的辦法就是人為将這個特征進行分桶,比如根據收入分成年收入3萬以下的,3萬到10萬的,10萬到50萬的,和50萬以上的。落到哪個桶裡,哪個桶的值标為1,否則标為0。

第二種方法叫做特征組合,這個也很好理解,比如性别是一個類别,是否是高收入群體是個類别。那我們排列組合一下,就可以得到男_低收入,男_高收入,女_低收入和女_高收入這四個類别。如果是連續性特征,可以使用像是 kd-tree 這類的數據結構進行離散化。我們把類别特征兩兩交叉就可以得到更多的特征,但這些特征并不一定都是有用的,有些可能沒用,還有些可能有用但是數據很稀疏。所以雖然這樣可以産生大量特征,但是需要一一手動篩選,很多是無效的

由于手動篩選特征的工作量實在是太大,收益也不高,所以工程師就開始思考一個問題:有沒有辦法可以自動篩選特征呢?現在我們都知道可以讓神經網絡來做自動的特征交叉和篩選,但是當時神經網絡還沒有興起,所以還是隻能手動進行。為了解決這個問題,當時的工程師們想到了 GBDT。

這才是會有 GBDT LR 的原因,我們來看這張圖:

facebook的廣告投放策略(長文剖析經典論文)6

我們來簡單回顧一下 GBDT 的模型,首先 GBDT 是由多棵樹組成的森林模型。對于每一個樣本,它在預測的時候都會落到每一棵子樹的其中一個葉子節點上。這樣我們就可以使用 GBDT 來進行特征的映射,我們來看個例子:

facebook的廣告投放策略(長文剖析經典論文)7

在上圖這個例子當中,GBDT 一共有3棵子樹,第一棵子樹有3個葉子節點。我們的樣本落到了第一個,所以第一棵子樹對應的 one-hot 結果是[1, 0, 0],第二棵子樹也有3個節點,樣本落到了第二個節點當中,所以 one-hot 的結果是[0, 1, 0],同理可以得到第三棵子樹的結果是[0, 0, 1, 0]。

這樣我們最後把這些樹的向量合并在一起,就得到了一個新的向量:[1, 0, 0, 0, 1, 0, 0, 0, 1, 0],這個向量就是我們 LR 模型的輸入

我們來分析一下細節,首先明确一點,GBDT 隻是用來進行了特征轉化和處理,它的預測結果并不重要。通過使用 GBDT 我們同時完成了剛才提到的兩種操作,既把連續性特征轉換成了離散型特征,也自動完成了特征的交叉。因為對于每一棵子樹而言,其實本質上是一棵 CART 算法實現的決策樹,也就是說從樹根到葉子節點的鍊路代表了一種潛在的規則。所以我們可以近似看成使用了 GBDT 代替人工進行了規則的提取以及特征的處理。

facebook的廣告投放策略(長文剖析經典論文)8

結果

最後我們來看下結果,原 paper 當中進行了分别進行了三組實驗,分别是僅有 LR、僅有 GBDT 和 GBDT LR 進行對比。衡量的标準是各自的 NE,以 NE 最大的 Trees-only 作為參考,可以發現 GBDT LR 組的 NE 下降了3.4%。

我們貼上 paper 當中的結果:

facebook的廣告投放策略(長文剖析經典論文)9

怎麼說呢,這個結果挺取巧的,因為對比的是NE,也就是說交叉熵下降了。但是 AUC 的情況不知道,paper 當中沒有說。并且這個下降是以 NE 最大的結果作為參考的,有一點點人為誇大了的感覺。當然這也是 paper 的常用手段,我們心裡有數就好。

facebook的廣告投放策略(長文剖析經典論文)10

數據的實時性

除了模型和特征的創新之外,這篇 paper 還探讨了數據時效性的作用。

為了驗證數據新鮮程度和模型表現之間的關系,paper 選擇了一條的數據用來訓練了 trees-only 和 GBDT LR 這兩個模型,然後用這兩個模型分别去預測之後1天到6天的數據,将整體的情況繪制成圖表:

facebook的廣告投放策略(長文剖析經典論文)11

在這張圖當中,橫軸是預測數據距離訓練數據的天數,縱軸是模型的NE。NE越低表示模型的效果越好,從上圖我們可以發現第六天的結果和第0天的NE要相差大約1%。這也就意味着單純是維持數據的新鮮度,我們就可以獲得1%的提升。這也是為什麼各大公司要做 online-learning 的原因。

facebook的廣告投放策略(長文剖析經典論文)12

online learning

在接下來的内容當中,paper 還為我們介紹了一些 online learning 的細節性問題。其中有一些已經過時了,或者是普适性不強,我挑選了幾個比較典型的有代表性的列舉一下。

1、時間窗口

在我們搜集訓練數據的過程當中,點擊是比較明确的,因為點擊有一個具體的行為,但是 impression(曝光)不是。因為用戶沒點擊這并不是一個行為,所以我們沒辦法确定用戶到底是不想點還是等一會再點。比較常規的做法是維護一個定時窗口,規定一個時間,如果用戶看到了廣告在規定時間内沒有點擊,那麼就認為這是一個非點擊事件。

但是我們很容易發現,這麼做是有問題的,因為用戶可能反應遲鈍,或者是暫時還沒反應過來導緻沒有點擊。就可能出現時間已經過了,用戶點擊了的情況。在這種情況下 impression 已經被記錄為一個負樣本了,那麼點擊産生的正樣本就找不到對應的 impression 了。我們可以計算一個比例,有多少點擊可以找得到 impression,這個比例稱為 click coverage,點擊率的覆蓋率。

那是不是窗口時間越長越好呢?其實也不是,因為窗口過長可能會導緻把一些不是點擊的認為是點擊。舉個例子,比如說一個商品,用戶第一次浏覽的時候覺得不滿意,所以沒有點。過了一會,用戶回過來看的時候又改變了主意,發生了點擊。那麼按照道理,我們應該把第一次沒有點的行為視作是負樣本,把第二次的行為認為是正樣本。如果我們時間窗口設置得很長,就會被認為是一個點擊樣本。所以時間窗口到底應該設置得多長,這是需要調整的一個參數,不可以拍腦袋決定。

2、架構

streaming 是業内常用的一種數據處理手段,稱為流式處理。可以簡單理解成隊列,也就是 queue。但是當發生click的時候我們需要找到對應的 impression 樣本,将它改成正樣本,所以我們還需要查找的功能。也就是說我們還需要一個 hashmap 來記錄隊列當中的節點。

當我們搜集到了足夠數據,或者是搜集了規定時間的樣本數據之後,我們會把窗口内的數據用來訓練模型。當模型完成訓練之後,會被推送到排序系統當中,實時更新排序需要調用的模型文件,從而達到在線實時訓練的目的。我們來看下它的架構圖:

facebook的廣告投放策略(長文剖析經典論文)13

Ranker 是排序系統,對候選的廣告進行排序之後展示給用戶,并且将這些廣告的特征數據 push 給 online joiner,也就是特征處理系統。當用戶對廣告進行點擊之後,點擊的數據也會被傳入 Joiner 當中。Joiner 會将用戶的點擊數據和 Ranker 傳輸來的數據進行關聯,關聯之後把數據傳給 Trainer 系統進行模型的訓練。

這裡還涉及到一個細節,就是在 joiner 當中我們怎麼關聯呢?因為一個用戶可能會有多次觀看廣告的數據,同一個廣告也可能刷新觀看多次。所以直接拿用戶 id 或者是廣告的 id 進行關聯是不行的,我們還需要一個和時間有關的 id。這個 id 叫做 requestid,當用戶每次刷新頁面的時候,requestid 都會刷新,這樣我們就可以保證即使用戶刷新網頁,我們也可以正确地将數據關聯上。

facebook的廣告投放策略(長文剖析經典論文)14

特征分析

最後,paper 當中還附上了對特征的一些分析。雖然我們不知道它們到底都用了一些什麼樣的特征,但是這些分析的内容對我們依然有借鑒意義。

1、行為特征or上下文特征

在 CTR 預估的場景當中,特征主要可以分為兩種,一種是上下文特征,一種是用戶曆史行為特征。所謂的上下文特征,其實是一個很大的概念。像是展示的廣告的信息,用戶本身的信息,以及當時的時間、頁面内的内容、用戶所在的地點等等這些當下的和場景有關的信息都可以被認為是上下文信息。曆史行為特征也很好理解,也就是用戶之前在平台内産生的行為。

paper 當中着重分析了用戶行為特征的重要性,其中的做法是将特征按照重要性倒排,然後計算在 topK 重要的特征當中用戶曆史行為特征的占比。在LR模型當中,特征的重要性就等價于對應位置的權重,得到的結果如下圖:

facebook的廣告投放策略(長文剖析經典論文)15

從上圖的結果我們可以看到,用戶的曆史行為特征在整體當中占據到了非常大的權重。top20 的 feature 當中,隻有2個是上下文特征。這也很符合我們的認知,我們投放的内容的質量遠遠不如用戶喜歡什麼重要。而用戶曆史上産生過行為的數據非常好地可以體現用戶喜好的情況。

2、重要性分析

除了分析了特征的重要性之外,paper 當中還實驗了隻使用某一種類型的特征進行預測,對比模型的性能。實驗的結果如下:

facebook的廣告投放策略(長文剖析經典論文)16

上圖當中紅柱展示的是隻使用上下文特征的訓練結果,深藍色是隻使用用戶行為特征的訓練結果。從這個結果上我們可以明顯地看到,隻使用行為特征訓練出來的模型性能要比使用上下文特征的好至少3.5個點,這已經是非常大的差距了。所以我們也可以得出結論,相比于上下文特征,用戶的行為特征更加有用。

除此之外,paper 當中還探讨了 negative down sampling(負采樣)和subsampling(二次采樣)對于模型性能的影響。其中二次采樣證明訓練數據量和模型效果總體呈正比,也就是說訓練數據量越大,模型的效果越好。而負采樣同樣對于提升模型的效果有所幫助,這也是目前廣告和推薦場景下的常規手段。

facebook的廣告投放策略(長文剖析經典論文)17

facebook的廣告投放策略(長文剖析經典論文)18

facebook的廣告投放策略(長文剖析經典論文)19

點分享

facebook的廣告投放策略(長文剖析經典論文)20

facebook的廣告投放策略(長文剖析經典論文)21

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved