爲什麼要預估點擊率

想到這個題目是因爲 @lijiefei 某天跟我說他有師弟面淘寶時被問到 "點擊率預估的目標到底是什麼", 笨狗當時胡亂扯了一通, 發現要把這個似乎已經是真理的事情掰清楚還沒那麼容易, 於是有此念想寫文一篇詳細分析下原因

我和 jiefei 認識是在百度做搜索廣告的時候, 那就從搜索廣告開始說爲什麼要預估點擊率, 以及預估點擊率的目標. 先申明一些名詞和假定:
1) 每個廣告 (Ad) 有一個出價 (Bid), 並有其在某情形下實際的點擊率 (Click-Through-Rate, CTR)
2) 廣告按點擊收費 (Charge per Click, CPC), 下面我們會分別討論一價計費 (First-Price, FP, 即廣告出價多少則一次點擊計費多少) 和二價計費 (Second-Price, SP, 即廣告按下一位出價來支付點擊價格, 更普遍的是 GSP)
3) 千次展現收費 (Cost Per Mille, CPM, 或 RPM, R for Revenue), 即對點擊付費廣告其展示一千次情況下的收入 (一價計費下等價於 1000*CTR*Bid), 或是展示廣告的千次展現固定價格
4) 預估點擊率 (predict CTR, pCTR) 是指對某個廣告將要在某個情形下展現前, 系統預估其可能的點擊概率

目標分類

搜索廣告跟自然結果一個很大的區別就是自然結果只要有一點相關就應該放到所有結果裏去, 至於先後位置那個再說, 而廣告, 是有個相關性的准入門檻的, 不相關的廣告出價再高, 丟出來還是會被罵死. 那怎麼判斷相關? 用戶會用鼠標點擊來對結果投票, 相關的廣告會被點擊, 不相關的廣告不會被點擊, 那很自然就能得出 "點擊率和相關性正相關" 這個結論 (至於描述裏寫 "二十五歲以下免進" 但實際是鋼材廣告的這種誘騙行爲後面再說怎麼處理). 那對於這種相關性准入的場景, 預估點擊率就是預估廣告是否相關, 最樸素情況下這是個二分類問題, 那不管預估成怎樣, 只要有一種分割方法能分開是否相關就行了. 此時預估點擊率的目標是能對廣告按相關與否分類 (或說按相關性排序並給出一個截斷值). 評估分類問題好壞, 一般都是看準確和召回兩個指標, 用人工打分的記錄來做迴歸驗證就行

目標排序

判斷相關與否只是點擊率預估對廣告的一個小輔助, 我們來看看廣告的目標是什麼? 沒錯, 是賺錢. (我曾經在其他場合說過廣告的目標是維持用戶體驗下持續賺錢, 不過跟賺錢這一簡化目標這不衝突, 前面相關性上已經保證了維持用戶體驗, 那只要能讓廣告主還有的賺, 就能持續賺錢) 我們再把問題簡化下, 如果廣告都是一樣的固定價格, 且就以這個價格按點擊計費, 那在 PV 一定且預算充分的情況下, 更高的點擊率則意味着更賺錢. 這樣目標可以等價於怎麼挑出更賺錢的廣告, 就是那些點擊率最高的廣告, 我們只要能弄明白廣告實際點擊率的高低關係就能取得收益最大化, 預估點擊率在這時候又是個排序問題, 我們只要弄對廣告之間的序關係, 就可以收益最大. 評估排序問題的好壞, 一個經典方法是對 pCTR 的 ROC 曲線算 AUC (曲線下面積), 實際上我見過的做法也都是通過評估 AUC 的高低來判斷點擊率預估模型的好壞

目標帶權排序

上一段裏對廣告這個業務做了很多簡化, 比如大家價格都是一樣的, 如果我們考慮價格不一樣的情況, 那預期收益就會變成 (價格Bid*點擊率CTR), 這個值很多地方也叫 CPM 或 RPM. 如果是對 CPM 排序, 那就需要我們預估的點擊率在維持序關係正確的前提下, 還要保證相互之間的縮放比是一樣的. 比如有廣告 A, B, C, 實際點擊率是 5%, 3%, 1%, 那在價格一致的情況下, 我預估成 5-3-1 還是 5-4-3 是沒關係的, 但在價格不一樣的情況下, 比如 1, 1.5, 3, 這時候 5-4-3 的預估點擊率值會讓他們的預估排名和實際排名剛好顛倒過來, 不過預估 5-3-1 或 10-6-2 (放大一倍) 倒沒關係. 爲了評估這個結果, 可以在描 ROC 曲線時把價格乘上去, 那最後還是判斷排序問題的好壞, 加了價格的 AUC 我們可以叫 wAUC (weighted-AUC), 這個離線評估和在線效果依然可以對等

目標準確

從準確召回到 AUC 再到 wAUC, 看起來對已有問題可以完美解決了? 不過廣告計費顯然不是 FP 這麼簡單, 在 Google 的帶領下幾乎所有的搜索引擎都使用了 GSP (Generalized Second Price) 來對廣告點擊進行計費, 這裏再簡單解釋下最簡版 GSP 是怎麼回事:
1) 所有廣告按 CPM 排序 (即 CTR*Bid)
2) 排最後的廣告收底價 (Reserved Price, RP)
3) 其他廣告按他的下一位 CPM_i+1 除以他的 CTR_i 並加一個偏移量來計費, 並保證比底價高, 即 Price_i = max(CPM_i+1/CTR_i + delta_price, RP)

至於 GSP 的細節和爲什麼這麼做能保證收入和體驗的平衡等可以詳見相關論文, 我們只討論在 GSP 模式下, 點擊率預估的作用和關鍵點. 根據介紹 GSP 時最後那個公式, 如果把 CPM_i+1 拆成 CTR_i+1*Bid_i+1, 看起來只要保證同比縮放還是會沒問題? 但是, 凡事怕但是, 在搜索廣告裏, 不同的展現位置對點擊率還有影響, 比如廣告 A, B 在第一位點擊率是 5%, 3%, 而在第二位是 3%, 2%, 那只是同比縮放就很難保證最終比較是一致的問題了, 所以最好還是保證預估值跟實際值儘可能接近的好, 這樣才能在預估時獲得更實際用時完全一樣的場景. 評估準確度, 我們有 MAE 和 MSE 等一堆指標, 也是現成的工作的比較好的東西

擴展和吐槽

有行家可能會吐槽說我剛那個不同廣告在不同位置的衰減不一致這個說法, 跟公開論文說的不一樣, Yahoo 的 paper 裏說不同廣告在同位置的衰減是一樣的. 我只能說, 騷年, 你太天真了... 衰減因子怎麼可能只是 f(pos) 這樣一個簡單函數, 從實際情況來看, 衰減函數和廣告是有關的, 但我們又不能對每個廣告都去估一個 f(pos, ad), 好在, 我們發現可以把不同的廣告做聚類後得到一個 f(pos, type) 的函數簇, 事實上, 最後的衰減函數不僅僅有 pos 和 type 兩個因子, 而且裏面的因子可以極度簡化, 最後的衰減用簡單函數就能很好擬合, 我說的夠多了, 再說估計要被前東家找麻煩, 你們來感受一下就好

前面也提到介紹的 GSP 是最簡版的, 那如果是正常版會有什麼不一樣? 那就是排序時用的是 Quality*Bid, 這個 Quality 百度叫質量度, 也就是廣大廣告主望眼欲穿的那幾顆星. Quality 和 CTR 有什麼不一樣? 最簡情況下這兩個當然是一樣的, 但是我們可能還要考慮廣告主的信譽度, 目標網頁的質量等因素 (比如前面提到過的那種描述欺詐或誘導的廣告在這個 Quality 因子裏被調整掉), 最後這個 Quality 就會是包含了 CTR 的一個多因子複合值, 那要準確估計這個複合值, 當然也要求其中的每個因子的值儘可能準確. 這裏在炒冷飯說準確度, 以及 MAE/MSE 的作用

實際上據我所知各搜索廣告平臺用的是比正常版的 GSP 還加強或改造過的版本, 裏面的因子, 公式, 邏輯更復雜. 在這種情況下還是需要繼續強調 CTR 預估的準, 才能做更精確的預估, 從而帶來更大的收益

廣告之外

呼~ 說完了搜索廣告, 我們再簡單說下內容廣告. 搜索廣告幾乎都是點擊付費, 而內容廣告同時存在按點擊付費和按展現付費, 那怎麼比較一個按點擊付費的廣告和一個按展現付費的廣告哪個預期收益更高? 同樣是 CPM, 按展現付費的廣告給的是確定值, 而按點擊付費的是一個預估值, 通過 Bid*pCTR 得到, 如果 pCTR 不準, 就會導致點擊付費廣告的預期收益計算不準, 則不一定受益最大. 繼續強調預估的準的好處

說完廣告我們就能說說其他的, 比如搜索, 比如推薦, 這幾個的優化目標如果是帶來的量, 因爲總體 PV 我們沒法人工干預, 且每個點擊是等價的, 那最後的優化就變成了點擊率, 預估的序關係越接近真實, 可獲得的收益更高. 如果不同的點擊價值不一樣, 那就可以把這個點擊換做價格代入廣告的模型, 因爲沒有二價計費那麼討厭的變換, 所以就按一價計費來考慮, 保證序正確且等比縮放就能保證收益最大. 如果再激進一點, 評估收益時還加入更復雜的因子而不僅僅是價格這個獨立因素, 那自然就要求點擊率預估準確, 從而保證做決策時和實際情況一致, 繼而保證最終的優化目標最大化

總結

1) 點擊率預估是爲產品的最終目標服務的, 最終目標可以是廣告的收入, 廣告的相關性, 推薦的接受率等, 看具體場景
2) 點擊率預估的直接目標根據需求場景不同, 分別是保證預估值和實際值分類正確, 預估序和實際序正確, 預估值和實際值是等比縮放的, 預估值等於實際值
3) 要保證離線評估點擊率預估的效果, 分別可用分類的準確率和召回率, 排序的 AUC, 帶權排序的 wAUC, 相似度 MAE/MSE 來評估


轉自:http://www.yewen.us/blog/2013/05/why-predict-ctr/

發佈了148 篇原創文章 · 獲贊 42 · 訪問量 195萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章