技術背景
許多大數據驅動的產品,在技術架構上往往落地成 一個個性化系統,即根據用戶、上下文信息投送個性化內容,千人千面。在線廣告也是典型的個性化系統,由於其業務的特殊性,在具體規模的設置上會比一般的個性化系統更複雜
個性化系統框架 不同產品的個性化系統之間存在着許多共同點,一般的個性化系統由4個主體部分相互配合,完成數據挖掘和在線決策任務
- 在線投放引擎(online serving engine) 用於實時響應請求,完成決策
- 離線分布式計算(distributed computing) 數據處理平台
- 在線實時流式計算(stream computing)平台
- 數據總線(data bus) 連接和傳輸以上三部分數據流

個性化系統一般框架
協作流程為:在線投放系統的日誌接入數據總線,由數據總線快速傳輸到離線數據處理平台和在線流式計算平台;離線數據處理平台周期性地以批處理方式加工過去一段時間的數據,得到人群標籤和其他參數模型,存放在緩存中,供在線投放系統決策時使用;在線流式計算平台負責處理最近一小段時間的數據,得到准實時的用戶標籤和其他參數模型,作為對離線處理結果的補充和調整,也存放於緩存系統中供在線投放系統決策時使用。整個系統形成一個有效全量利用大數據且基本依靠機器運算來完成決策的閉環
除上述共性外,不同個性化系統其數據來源、產品形態、優化目標不同,系統架構的細節也會呈現出很大的差別。以最典型的兩種個性化系統廣告和推薦以及不需要深度個性化的搜索系統為例,將規模問題做簡單對比

規模問題比較
廣告系統優化目標 廣告系統的優化目標是提高廣告產品的利潤,任何一個具體的計算廣告系統,都為優化式(1)這個目標而設計

(1)
在廣告系統中,每次展示的r是由在線投放引擎來決策的,在線流計算平台和離線計算平台所做的,都是為了準備ai, ui, ci 這三個變量或其他組合特徵。不同廣告系統中,上述優化目標的具體表現形式可能會有所不同,也可能會有額外約束。幾種主要廣告產品的優化目標如下表

幾種主要廣告產品優化目標
在線廣告系統架構 廣告系統屬於大數據產品的一種形態,在一個完整的廣告系統架構中數據的記錄、交易、流轉、建模和使用,是最核心的驅動力,從本質上決定了廣告產品的變現能力和利潤空間

廣告投放引擎 實時響應廣告請求並從全局收益最優的角度出發決策廣告投放,採用檢索加排序的兩階段決策過程,由以下幾個模塊組成
- 廣告投放機(ad server) 接受廣告前端Web服務器請求,完成廣告投放決策並返回頁面片段的主邏輯
- 廣告檢索(ad retrieval) 根據用戶標籤(user attribute)與頁面標籤(page attribute)從廣告索引(ad index)中查找符合條件的廣告候選
- 廣告排序(ad
ranking) 在線計算eCPM並進行廣告排序,eCPM的計算主要依賴於點擊率估計,需要用到離線CTR模型和特徵(CTR model
& feature)、流式實時點擊率特徵(real-time feature),在需要估計點擊價值的廣告產品中還需要點擊價值估計模型 - 收益管理(yield management) 以全局最優為目的調整局部廣告排序,需要用到離線計算好的某種分配計劃來完成在線實時決策
- 廣告請求接口
- 定製化用戶劃分(customized audience segmentation) 從廣告主處收集用戶信息的產品接口
數據總線 將在線投放的數據准實時傳輸到離線計算平台與實時流計算平台上,供後續處理和建模使用
- 離線數據處理
兩個主要輸出目標是統計日誌得到報表、Dashboard等以及利用數據挖掘、機器學習技術進行受眾定向、點擊率預估、分配決策規劃等,為在線機器決策提供支持。主要構成模塊有:用戶會話日誌生成、行為定向、上下文定向、點擊率建模、分配規劃、商業智能系統、廣告管理系統
- 在線數據處理 為滿足廣告系統對實時數據反饋的要求,解決離線平台無法快速響應的計算問題,主要包括幾個模塊:在線反作弊、計費、在線行為反饋、實時索引
在線廣告在解決工業界問題過程中需要大量用到相關學科的一些基本技術和算法,涉及信息檢索、機器學習、最優化及大數據工程等領域
核心技術
合約廣告
廣告排期系統 對於按CPT結算的廣告位合約,媒體一般採用廣告排期系統來管理和執行。廣告排期系統的一般技術方案是將廣告素材按照預先確定的排期直接插入媒體頁面,並通過內容分髮網絡(Content Delivery Network, CDN)加速訪問。需要注意的環節是與其他動態廣告混合投放時的調度策略,對一個廣告位合約與動態廣告混合投放的系統來說,需要同時考慮CPT廣告和方天窗廣告的投放邏輯

排期與動態廣告混合投放決策邏輯
擔保式投送系統 用到的核心技術有
- 流量預測
給定一組受眾標籤組合以及一個eCPM的閾值,估算在將來某個時間段內符合這些受眾標籤組合的條件並且市場價在該eCPM閾值以下的廣告展示量。流量預測一般的方法其實並不是預測,而是根據歷史數據的統計來擬合未來的流量,可行的思路是將其視為一個反向檢索的問題,主要步驟為:準備文檔、建立索引、查詢結果、估算流量
- 頻次控制 某個用戶在一段時間內看到某個或某組廣告的曝光次數,有客戶端和服務器端兩種解決方案
- 在線分配 通過對每一次廣告展示進行實時在線決策,從而達到在滿足某些量的約束的前提下,優化廣告產品整體收益的過程
在線分配的第一個約束條件是分配給某廣告合約a的收益要至少等於其約定的量da, 這個約束稱為需求約束(demand constraint) 其中qia表示將供給節點i連接到需求節點a的單位流量懲罰

(2)
實際產品中常見的需求約束有兩類:預算、服務成本等的上線要求和合約的下限要求
在線分配問題的另一個約束條件是每個供給節點被分配出去的量不能多於其總流量,稱為供給約束(supply constraint)

(3)
從式(1)定義的廣告目標出發,引入供給約束和需求約束,得到下面在線分配優化問題框架表示

(4)
受眾定向受眾定向技術是對廣告(a),用戶(u),上下文(c)三個維度提取有意義的特徵的過程,按照計算框架不同可將受眾定向技術分為3種類型
- 用戶標籤
- 上下文標籤
思路:用規則將頁面歸類到一些頻道或主題分類,提取頁面中的關鍵詞,提取頁面入鏈錨文本中的關鍵詞,提取頁面流量來源中的搜索關鍵詞,用主題模型將頁面內容映射到語義空間的一組主題上。常用主題挖掘模型有:LSA模型、PLSI模型、LDA模型以及word2vec
- 定製化標籤
競價廣告
- 競價廣告計價算法
// In
// cands: 候選廣告ID
// ctrs: 候選廣告預估的點擊率
// bids: 候選廣告的出價
// MRP: 市場保留價
// squash: 價格擠壓因子
// slotNum: 廣告條目數
// Out
// results: 排序結果
// prices: 計價結果
void auction(vector<int> & cands, Vec & ctrs, Vec & bids, float MRP,
float squash, int slotNum, vector<int> & results, Vec & prices) {
int candNum = cands.size();
// 按照給定的squashing因子調整預估CTR
for (int c = 0; c < candNum; c++)
ctrs[c] = ctrs[c] ^ squash;
// 計算調整後的 eCPM
Vec eCPMs;
eCPMs.resize(candNum, 1e-10f);
for (int c = 0; c1 < candNum; c++)
if (bids[c] >= MRP)
eCPMs[c] = ctrs[c] * bids[c];
// 將所有候選按照 eCPM 排序
for (int c1 = 0; c1 < candNum; c1++)
for (int c2 = c1 + 1; c2 < candNum; c2++)
if (eCPMs[c1] < eCPMs[c2]) {
SWAP(cands[c1], cands[c2]);
SWAP(eCPMs[c1], eCPMs[c2]);
SWAP(ctrs[c1], ctrs[c2]);
}
// 得到各競價結果並計算定價
results.clear();
prices,clear();
for (int c = 0; c < candNum - 1; r++) {
if (eCPMs[c] <= 1e-10f)
break;
// 按照 GSP 計算定價
float price = eCPMs[c + 1] / ctrs[c];
if (price < MRP)
price = MRP;
results.push_back(cands[c]);
prices.push_back(price);
}
}
- 廣告檢索
- 查詢擴展 常用方法有: 基於推薦的方法、基於主題模型的方法、基於歷史效果的方法
- 在線數據處理
其他廣告相關技術廣告監測與歸因 在線廣告區別於線下廣告的重要特徵就是可監測性,廣告交易過程中涉及媒體、廣告主、廣告平台等環節。除以CPC結算的廣告活動,其他廣告活動都存在結算指標為媒體或廣告主某一方不可見的情形。因此需要有獨立、公正的第三方對廣告展示量或轉化效果進行度量,於是產生了廣告監測與歸因廣告監測 在CPM結算方式下,需求方需要委託某家第三方監測公司對實際發生的展示或點擊數目進行核對。廣告監測與反作弊有着密不可分的聯繫,所有展示或點擊的計量都必須在除了作弊流量的基礎上進行
廣告歸因 按照CPA/CPS/ROI方式結算的廣告,由於轉化行為並不發生在媒體上,往往需要第三方機構對這些效果數據進行公正的追蹤,並且將其與廣告的展示和點擊數據對應起來,以確定某次轉化來自哪個渠道。這稱為廣告的效果歸因,常用的方法有 直接訪問歸因、用戶ID碰撞歸因作弊與反作弊 由於廣告有多個利益參與方,會有人對流量造假、用技術手段欺騙廣告監測與歸因,這些行為統稱為廣告作弊。反作弊要做到知己知彼,必須搞清楚是誰在作弊,作弊的目的是什麼。廣告活動是廣告主、媒體、用戶三方之間的交互行為,因此作弊的主體主要來自這三方。作弊的方法分類
- 媒體作弊
- 廣告平台作弊
- 廣告主競爭對手作弊
從作弊的原理來看,可將作弊分為虛假流量作弊和歸因作弊;從作弊手段來看又可以分為機器作弊和人工作弊。常見作弊方法有: 服務器刷監測代碼、客戶端刷監測代碼、頻繁切換用戶身份、root、流量劫持、cookie填充、IP遮蓋、點擊濫用與點擊注入
結語
本文是對在線廣告架構及核心技術思路的簡單概述,以
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315423.html