設計廣告點擊率預測 (Ad Click Prediction)

Hard★★★★Draft

FromMachine Learning System Design Interview

Concepts practiced📨 串流處理 (Stream Processing)

Convention: read the requirements & constraints first, sketch your own design, then expand the reference to compare.

📚 From the Books

設計廣告點擊率預測 (Ad Click Prediction)ProblemHardML Systems

線上廣告讓廣告主競標並投放廣告,換取曝光、點擊與轉換。核心是預測「這則廣告會不會被這個使用者點擊」,用點擊機率排序後投放,把相關廣告推到使用者面前來提升收益。

📋 Requirements

🧠 Core Ideas

TIP

把問題定式為排序問題,並用逐點 LTR (pointwise Learning to Rank) 起步:以二元分類模型吃 ⟨user, ad⟩ 配對,預測是否會被點擊,再依點擊機率排出廣告清單。

系統以使用者為輸入,輸出依點擊機率排序的廣告排名清單。損失函數用交叉熵。標籤策略:廣告展示後 t 秒內被點擊記為、未點擊記為(t 為超參數)。

⚖️ Reference Design

特徵工程
  • 廣告特徵:ID 類(廣告主/活動/廣告群組/廣告 ID,經 embedding layer 轉密集向量)、圖片/影片(預訓練模型如 SimCLR 轉特徵向量)、類別與子類別、曝光數與點擊數。
  • 使用者特徵:人口統計(年齡、性別、城市、國家)、情境(裝置、時段)、互動相關(已點擊的廣告、歷史互動統計)。
  • 挑戰:大量高基數分類特徵(廣告主 ID、使用者 ID 可達數百萬唯一值),特徵空間龐大且稀疏。
模型選擇
  • LR:訓練快、易實作,但無法解非線性、無法捕捉特徵交互——常用來建基線
  • Feature crossing + LR:手動交叉特徵捕捉成對交互,但需人工與領域知識、加重稀疏性。
  • GBDT / GBDT + LR:可解釋、可做特徵選擇與提取,但不利持續學習、無法用 embedding layer。
  • DCN:deep + cross 兩平行網路,自動學 feature crosses(Google 2017 提出)。
  • FM / DeepFM:FM 用 embedding 內積自動建模成對交互;DeepFM 再結合 DNN 捕捉高階交互。
  • 實務做法:先用 LR 建基線,再實驗業界廣用的 DCNDeepFM
服務架構 (Serving)
  • 資料準備 pipeline:批次計算靜態特徵(圖片、類別)存入 feature store;查詢時計算動態特徵(曝光/點擊數);並從新互動持續產生訓練資料。
  • 持續學習 pipeline:在新資料上微調模型、評估,指標改善才部署。
  • 預測 pipeline:因依賴動態特徵,採線上預測逐一處理;兩階段——候選生成(用廣告定向條件縮小廣告池)→ 排序模型(取靜態+動態特徵預測點擊機率排序)→ 重新排序(加啟發式規則,如移除相似廣告增加多樣性)。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading