log loss與ctr預估


ctr預估是工業界做推薦、廣告等的基本問題,下面以熟悉的推薦場景為例,目標是提高abtest的線上指標,時長、互動和留存,反應到ctr模型的評估指標,可以是auc,logloss,ngcd等,auc反映了模型區分正負例的能力,auc提高不一定對應到線上指標提示,可能只是對item的預估分更准,對一個user來說排序能力並沒有提高,這里很有考究,可以看看其他博客。

通常判斷一個模型性能,除了auc、rigloss還要看 calibration,訓練數據集的正負里比例和預估分均值是否一致,接近1才認為模型沒有問題,比如全體樣本的點擊率是5%,模型的預估分均值也應該是0.05。calibration對廣告做競價是有明確用處的,在推薦場景只需要排序用處可能不大。
問題:為什么lr模型的輸出均值和真實點擊率一致呢?好的模型,拆開各種維度看,比如新用戶,操作系統,預估均值都和各維度真實點擊率一致。
困惑的原因是,每個樣本的label是0 或 1,甚至相同樣本有不同的label。
解釋:這是由 log loss的性質保證的。loss = \sum { y log p + (1-y) log (1 -p),p是預估分,y\in {0, 1}是label,設想如果有N個樣本,其中M個是正樣本,如果我們的模型很糟糕,特征只有1個bias,對每個樣本預估值是相同的,那么對loss 求極小值就可以得到 p = M/N, 等於真實點擊率!

另外一個問題,為什么分類不用square loss要用log loss?
看到個兩個解釋,一個是logloss 如果錯誤分類的梯度更大,比如label=1,pred接近0,那么梯度絕對值 1/pred 極大,而square loss梯度為 |pred - 1|,可能過小難以收斂;另外一個解釋是,

另外再補充一個問題,工業屆系統會用online learning,保證模型實時更新,可以及時捕獲用戶反饋。為什么online learning每個樣本只訓練就可以收斂,背后理論是有嚴格保證的嗎?
思考這個問題后,在深度學習一書的優化那章看到了 機器學習優化與數學的最優化的差異,才豁然開朗。機器學習優化有幾個近似,全樣本空間預估准確率 <> 測試集准確率 <> 測試集合loss函數最小 <> 訓練集loss最小,最優化是直接優化最終目標,無約束凸函數最優解這些的收斂性和收斂速度都是有明確結論的。
在機器學習用的sgd是簡化了計算每次更新的梯度,mini-batch 視作分布的隨機采樣,計算得到的梯度也是真實梯度的無偏估計。
online-learning場景適用於訓練集數據量很大,一遍也能優化好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM