原標題:AUC和線上點擊率指標不一致問題分析蘑菇街搜索、推薦排序算法owner,大規模機器學習從業者
最近我們在嘗試深度學習模型,離線的auc已經高於基線,上線後ctr表現也由於基線,但是基於線上實際反饋的打點日誌,深度學習的模型的auc要明顯低於基線。但以前的模型迭代auc是可以和線上ctr對應的。
這個問題比較奇怪,一般情況下,因為線上樣本存在bias,將新模型同時去測試基線流量和實驗流量時,實驗流量的auc會略高於基線流量。
可以這樣理解,新的模型的增量是帶來了一些新的好樣本,但是如果直接去評估基線的數據,由於推薦或排序的數據是動態反饋的,這部分的好樣本就沒有了,auc會偏低。但我們的實驗情況恰恰是相反的。 分析gauc指標
第一反應是auc這個指標失真了,由於排序是個性化的,不同用戶之間的排序結果不可比,不同用戶的負樣本的得分可能比正樣本高,導致全局AUC指標失真。
舉個例子:假設有兩個用戶A和B,每個用戶都有10個商品,10個商品中有5個是正樣本,我們分別用A+,A-,B+,B-來表示兩個用戶的正樣本和負樣本。也就是說,20個商品中有10個是正樣本。假設模型預測的結果大小排序依次為A+,A-,B+,B-。如果把兩個用戶的結果混起來看,AUC並不是很高,因為有5個正樣本排在了後面,但是分開看的話,每個用戶的正樣本都排在了負樣本之前,AUC應該是1。顯然,分開看更容易體現模型的效果,這樣消除了用戶本身的差異。
考慮到用戶的每個樣本之間的差異,一般將樣本權重加到auc係數上去,這樣計算更為合理。前面這種情況發生的前提是:兩個用戶的排序預測結果相互幹擾,也就是分數越相對集中,正負樣本在不同用戶之間差異越大,導致線上的排序效果看似降低,但每個用戶的auc計算不受幹擾,各項線上指標並未降低。
我們採用了阿里提出來的gauc定義:
再統計後的指標如下:
我們發現了gauc後,diff變小了,但是還是基線高,說明gauc和ctr也不一致。 用戶分數分布
可以看到,auc分布中,實驗無點擊的曝光用戶數量增加,在auc[0,0.1]區間基線auc較差。考慮到用戶auc為0的用戶數量,曝光並不多,