作者:LogM
本文原載於 https://segmentfault.com/u/logm/articles,不允許轉載~
文章中的數學公式若無法正確顯示,請參見:正確顯示數學公式的小技巧
本文是 計算廣告(第二版)
的讀書筆記。
該部分介紹在線廣告的關鍵技術,面向技術人員。
第9章 計算廣告技術概覽
9.1 個性化系統框架
- 日誌 -> 數據高速公路 -> 流計算 -> 在線特徵 -> 投放引擎;
- 日誌 -> 數據高速公路 -> 分佈式計算 -> 離線特徵 -> 投放引擎。
9.2 各類廣告系統優化目標
- GD:滿足合約要求;
- ADN:CPC,預估點擊率;
- ADX:CPM;
- DSP:預估點擊率+點擊價值。
9.3 計算廣告系統架構
-
廣告投放引擎:
- 廣告投放機(ad server):召回+排序+收益管理,要求QPS和延遲;
- 檢索(ad retrieval):根據用戶標籤和頁面標籤,召回候選集;
- 排序(ad ranking):計算eCPM,估計點擊率+點擊價值,排序;
- 收益管理(yield management):目標全局收益最優;
- 廣告請求接口:web請求或者SDK;
- 定製化用戶劃分:廣告主對用戶的劃分數據。
- 數據高速公路(data highway)
-
離線數據處理:
- 用戶會話日誌生成:以用戶ID進行統一整理;
- 行爲定向:挖掘用戶日誌,打標籤;
- 上下文定向:給上下文頁面打標籤;
- 點擊率建模:爲CTR模型加工特徵;
- 分配規劃:以全局收益最優爲目標,從日誌中挖掘合適的分配方案;
- 商業智能系統:爲決策者提供數據(BI);
- 廣告管理系統:廣告主工具(AE),管理投放方案。
-
在線數據處理:
- 在線反作弊:去除作弊流量;
- 計費;
- 在線行爲反饋:實時受衆定向、實時點擊反饋;
- 實時索引:實時接收廣告數據,更新索引。
9.4 計算廣告系統主要技術
-
算法優化:
- 受衆定向;
- eCPM預估,點擊率預測;
- 在線分配(合約中的流量要求);
- 定價策略:博弈中收益最大化;
- 探索與利用(Explore and Exploit,E&E):更全面地採樣;
- 個性化推薦。
-
架構優化:
- 實時索引;
- NoSQL數據庫;
- 分佈式計算+流計算;
- 高併發、低延遲競價接口。
9.5 開源工具
- Nginx:web服務器;
- ZooKeeper:分佈式集羣管理;
- Lucene:索引+檢索;
- Thrift:跨語言通信,用於封裝各模塊的接口;
- Flume:數據高速公路;
- Hadoop:分佈式數據處理;
- Redis:特徵在線緩存,屬於NoSQL數據庫;
- Storm:流計算;
- Spark:滿足各種計算方式,包括迭代計算、批處理計算、流式計算、圖計算、SQL關係查詢等。
第10章 基礎知識準備
10.1 信息檢索
-
倒排索引:
- 基本操作:向索引添加文檔;給定query,返回對應集合
-
向量空間模型(vector space model,VSM):
- TF-IDF構建向量,cos求距離
10.2 最優化方法
-
拉格朗日法:帶約束的優化
- 當原問題是凸優化問題,則滿足強對偶,即對偶問題的最優解是原問題最優解的下界;
- 強對偶下,滿足KKT條件的點,即爲原問題解。
-
下降單純形法:
- 不可求導情況下,函數如果是連續的,可用該方法;
- 有點像高維空間的二分法;
- 又稱阿米巴變形蟲法。
- 梯度下降法;
- 擬牛頓法。
10.3 統計機器學習
-
最大熵與指數族分佈:
- 求最大熵的解等價於求對應指數分佈的最大似然解;
- 指數族分佈是單模態的,不適合表達多因素並存的隨機量。
-
混合模型和EM算法:
- 解決指數族分佈單模態的問題;
- 多個指數族分佈疊加爲混合模型。
- 貝葉斯學習;
- 深度學習:CNN、RNN、GAN。
第11章 合約廣告核心技術
11.1 廣告排期系統
- CPT,非個性;
- 防天窗廣告:廣告加載錯誤時的默認廣告。
11.2 擔保式投送系統
- 流量預測:用歷史數據擬合未來的流量;
- 頻次控制:一個用戶看到同個廣告次數越多,點擊率越低;實現方式是把頻次記錄到數據庫。
11.3 在線分配
- 抽象爲二部圖匹配問題,引入廣告流量在各個週期內近似一致的假設,求解該問題。
第12章 受衆定向核心技術
12.1 受衆定向技術分類
- 用戶標籤t(u):人口屬性定向、行爲定向;
- 上下文標籤t(c):地域定向、頻道定向、上下文定向;
- 定製化標籤t(a,u):特定廣告主對特定用戶的標籤,重定向、新客推薦。
12.2 上下文定向
- 半在線抓取系統:上下文定向需要抓取上下文內容,但實時抓取延遲太大,全網爬蟲則成本太高;一般的解決方法是,當有某個頁面上下文標籤的請求時,進行抓取並放入緩存,該次廣告展示來不及使用該標籤就忽略,但以後相同頁面的上下文請求就可以在緩存中獲取。
12.3 文本主題挖掘
- 主題模型(topic model)
- LSA(latent semantic analysis,潛在語義分析),無監督方式,對 TF-IDF 矩陣做 SVD 分解,類似 PCA。
- PLSI(probabilistic latent semantic indexing,概率潛在語義索引):假設有k個主題($z_1,z_2,..,z_k$),用k個多項式分佈的混合模型進行建模 $p(w_n|z,\beta)$,$\beta$ 是參數,共有k組,$w_n$ 是文檔中的每個詞;使用EM求解該混合模型。
- LDA(latent dirichlet allocation,潛在狄利克雷分配):在 PLSI 的基礎上,引入貝葉斯,對數據不足時做平滑。
- word2vec。
12.4 行爲定向
- 建模:使用泊松分佈對某個用戶在某類定向廣告上的點擊次數建模;用線性模型聯繫泊松分佈的參數 $\lambda$ 和用戶行爲;整個模型相當於泊松分佈的廣義線性模型。
-
特徵:用戶行爲映射到事先確定的標籤體系中,並用單位時間累積強度表示;使用滑動平均求時間窗口內的平均值;另外需要考慮:
- 訓練集長度:爲了消除工作日帶來的週期性,一般訓練集天數選爲7的倍數;
- 時間窗口大小:希望系統反應更即時,則使用窄的時間窗口。
- 決策:整個模型是線性的,今天的得分可以由前幾天的得分滑動平均得到。
- 評測:reach-ctr 曲線。
12.5 人口屬性預測
- 機器學習中的多分類問題:性別、年齡、教育程度、收入水平。
12.6 數據管理平臺
第13章 競價廣告核心技術
13.1 競價廣告計價算法
- GSP:廣義第二高價;
- MRP:市場保留價(最終價格不能低於此價格);
- 價格擠壓因子:控制最終的排序中點擊率和出價哪個影響大。
13.2 搜索廣告系統
-
查詢拓展:
- 基於推薦的方法:協同過濾;
- 基於主題模型的方法:主題模型;
- 基於歷史效果的方法:效果明顯。
- 廣告放置:在一段時間內北區整體廣告條數約束的前提下,提高廣告的整體營收。
13.3 廣告網絡
-
短時行爲反饋與流計算:
- 實時反作弊;
- 實時計費:預算用完的廣告及時下線;
- 短時用戶標籤;
- 短時動態特徵:CTR預測中的動態特徵。
13.4 廣告檢索
- 布爾表達式的檢索;
- 相關性檢索:WAND算法,TF-IDF算相關性+小頂堆快速檢索;
- 基於DNN的語義建模:DSSM、Youtube個性化推薦模型;
-
近似最近鄰語義檢索(ANN):
- 哈希算法:局部敏感哈希(LSH);
- 向量量化算法:層次K均值樹(HKM tree);
- 基於圖的算法:NSW。
第14章 點擊率預測模型
- 點擊率預測建模爲"迴歸問題"而不是"排序問題",因爲點擊率要用於預估eCPM以便出價。
14.1 點擊率預測
- 基本模型:邏輯迴歸;
- 優化算法:L-BFGS、置信域法;
- 校正:正負樣本不平衡問題;
-
特徵:
- 特徵的非線性化:分桶、平方、log、根號;
- 特徵組合;
- 動態特徵:某個特徵組合的歷史點擊率;
-
偏差與CoEC(click on expected click):
- 原因:比如廣告位帶來的點擊率偏差,頂部廣告位和底部廣告位的點擊率差異很大;
- 解決:對不同的廣告位預估"期望點擊率"(EC),CoEC=某廣告點擊率/廣告位期望點擊率。
- 常見的偏差:廣告位位置、廣告位尺寸、廣告投放延遲、日期和時間、瀏覽器。
- 平滑:特徵缺失問題、該特徵樣本不足時的統計平滑問題;
- 評測:ROC;
- 智能頻次控制:將EC計數或者頻次計數作爲特徵加入到模型,抑制高頻次廣告的投放。
14.2 其他點擊率模型
- 因子分解機(factorization machine,FM);
- GBDT;
- 深度學習點擊率模型。
14.3 探索與利用
- 當投放的總是最優的廣告的時候,一些長尾廣告的特徵的採樣就會不準確。
-
強化學習:分出一部分流量用於強化學習的探索和利用(E&E),多臂老虎機問題(multi-arm bandit,MAB);
- UCB方法(upper confidence bound,置信上界):在每次投放時不簡單選擇經驗上最優的廣告,而是考慮經驗估計的不確定性,選擇估計值上界最大的廣告;
- 考慮上下文的bandit:LinUCB。
第15章 程序化交易核心技術
15.1 廣告交易平臺
- cookie映射;
- 詢價優化:每次詢價只對可能贏的DSP發起,減輕服務器壓力;但要避免某些DSP完全獲取不到流量的問題。
15.2 需求方平臺
- 定製化用戶標籤;
- 點擊率預估:增加CoPC(click on predicted click),真實點擊與預估點擊的比,對點擊率高估和低估的進行修正;
- 點擊價值估計:CPS/CPA/ROI結算時使用,點擊價值 = 到達率 * 轉化率 * 轉化單價;
- 出價策略:考慮預算約束。
15.3 供給方平臺
- 網絡優化:動態決定將廣告請求發給哪個廣告網絡。
第16章 其他廣告相關技術
16.1 創意優化
- 程序化創意:地域性創意(如把用戶所在地區的聯繫電話放到廣告中)、搜索重定向創意(如把用戶歷史搜索詞放到廣告的搜索框中)、個性化重定向創意(如淘寶的重定向廣告都是實時生成的);
- 點擊熱力圖:統計一個創意的哪個區域最容易被用戶點擊;
- 發展趨勢:視頻化、交互化,承載更多信息。
16.2 實驗框架
- 以用戶來分桶,而不是隨機分桶(因爲多次廣告展示之間有相關性)。
16.3 廣告監測與歸因
- 廣告監測:委託第三家覈對實際的展示數和點擊數;
- 廣告安全:某些廣告放到特定媒體(如低俗媒體)上會有負面效果;媒體會僞裝自己的流量以次充好;要確認瀏覽器確實發生了渲染過程(即廣告確實對用戶可見);
- 效果歸因:CPA/CPS/ROI結算的廣告,需要確認轉化數據的正確性,並確定該轉化用戶是從哪個媒體進入的。
16.4 作弊與反作弊
-
作弊方法分類:
-
作弊主體:
- 媒體作弊:媒體自己構造虛假的點擊行爲;
- 廣告平臺作弊:ADN或ADX構造虛假的點擊行爲;DSP構造虛假的點擊、展示、轉化行爲;
- 廣告主競爭對手作弊:消耗廣告主預算;
-
作弊原理:
- 虛假流量作弊(non-human traffic,NHT):構造虛假的展示、點擊、轉化行爲;
- 歸因作弊:將別人帶來的轉化行爲歸因到自己名下;
- 作弊手段:機器作弊、人工作弊。
-
-
常見作弊方法:
- 服務器刷監測代碼:用爬蟲訪問網頁讓廣告主誤以爲曝光量很大;
- 客戶端刷監測代碼:用戶訪問網頁時,網頁腳本讓用戶自動在後臺多訪問幾次,讓廣告主誤以爲曝光量很大;
- 頻繁換用戶身份:與上面兩種方式結合使用;
- 黑客:黑客控制被感染設備在後臺訪問網頁;
- 流量劫持;
- cookie填充:比如用戶在淘寶購物時,跳轉地址被修改,讓淘寶誤以爲用戶是第三方通過第三方網站點擊廣告過來的;
- IP遮蓋:發現反作弊者時,隱藏自己;
- 點擊濫用與點擊注入。