- 前言
推薦系統是驅動內容分發的引擎,而個性化則是推薦系統的核心思想。分類模型和排序模型是業界常用的兩種個性化建模方式。本文探討兩種方法的異同點,總結如下:
- 分類模型回答的是用戶喜不喜歡這個物品,而排序模型回答的用戶更喜歡哪一個;
- 在對事件發生的假設上,分類模型認為個樣本之間相互獨立且服從相同的分佈,排序模型認為同組內部的樣本是有關聯關係和可以相互比較的;
- 從 Bayesian 的觀點來看,分類模型刻畫的是<user>的聯合分佈 P(user,item),而排序模型刻畫的是條件分佈 P(item|user);/<user>
- 從參數更新上來看,分類模型的參數更新由特徵的絕對值確定,而排序模型由不同樣本之間的特徵的相對值確定。
- 背景知識
- 二項分佈
在二項分佈中事件只有兩個取值 {0,1},1表示事件發生,0表示未發生。其中事件發生的概率為p,不發生的概率為 1-p,用公式表達事件發生或者不發生的概率:
將上述兩個式子聯合在一起寫:
- 分類模型與二項分佈
分類模型試圖回答這樣一個問題:如果一個事件具備特徵 x,那麼根據以往的經驗(和統計),事件為真的概率 (P(x=1)) 是多少?
為了回答這個問題,分類模型使用了兩個函數,第一個函數將特徵描述 x 映射為一個實數:
第二個函數將 f(x) 映射為概率:
個人理解使用 sigmoid 函數, 有以下優點:
1. 取值範圍在 [0,1] 之間,符合概率定義的區間範圍。
2. 這種變換讓 f(x) 有明確可解釋的物理意義:對數幾率
即 f(x) 的物理意義是事件發生與否之比的對數。
3. f(x) 值過大或者過小時 sigmoid(f(x)) 的導數趨近於0,不會因為異常值導致模型難於收斂。
sigmoid函數(上)及其導數(下)曲線
經過上述兩次變換以後分類模型將一個特徵描述 x 轉換為一個概率值 P(x),下一步的工作是在訓練集上讓點擊數據的 P(x) 接近於1,而未點擊數據的概率值接近於0。我們引入輔助變量 P’(x),對於點擊事件定義其值為1,非點擊事件定義其值為0。所以我們要做的是在訓練集上讓 P(x) 接近於 P’(x)
對於點擊事件,最大化:
,對於非點擊事件最大化
兩者合併,無論對於點擊還是非點擊事件,我們都是在最大化:
上述表達式在作用在一條日誌上, 對於整個數據集我們最大化的是:
因為連乘數值計算存在精讀損失問題,所以我們進行對數變換:
即分類模型的優化目標為:
- 排序模型
排序模型有多種實現,本篇文章只討論 Pairwise 模型。在 Pairwise 模型中,首先對數據分組,在搜索中每次搜索是一個組,在推薦中可以根據請求ID分組,也可以根據用戶 ID 分組,哪種效果更好需要看具體使用場景。
類似於分類模型,我們也是讓模型的輸出結果與真實事件一致,只不過這裡的事件不是點擊與否的單個事件,而是偏序關係是否成立這個事件。類比分類模型,我們定義以下變量:
用戶對 i 的反饋是否比 j 更好。
:模型對文檔 i 的打分
要比對j的打分
更高的概率。
優化函數可以類比分類模型得到:
- 分析比較
- 兩種模型輸出值的物理意義
根據分類模型和排序模型的建模過程可知,分類模型的輸出值 f(x) 為正負概率比值對數,對其求 sigmoid 函數以後就是事件發生的概率。而排序模型的分數值卻不能直接和輸出概率等價,只能將不同文檔的分數放在一起進行比較認為用戶可能更喜歡哪一個。從這個觀點來看,分類模型不要求輸出概率絕對正確,而只要求相對關係正確。因此分類模型要對兩個樣本都有準確的預估才能保持正確的偏序關係,其要求更高;而排序模型是分類模型的一個簡化版本,只要求偏序關係的正確,並不要求預估值的絕對準確。一個完美的分類模型必然會是一個完美的排序模型,反之不然。在機器學習領域我們知道存在“天下沒有免費的午餐”定律,在相同的數據集下,如果對模型的要求更高,那麼必然要付出更多的代價。如果付出的代價一定(數據集相同,底層模型一致),一個更簡單的模型效果可能更好。
- 事件之間的相互獨立性假設
分類模型(公式2)的總體懲罰值是各個樣本懲罰值之和,樣本之間的懲罰值沒有顯示關係;排序模型(公式3)的總體懲罰值是各個 Pair 之和,一個 Pair 內部的懲罰值之間有相互關係,要求兩者對比關係顯著。因此分類模型建立在每個樣本相互獨立的基礎上,而排序模型建立在同組樣本可相互對比的基礎上。結合推薦系統的具體使用場景,用戶其實是主動挑選了更感興趣的內容,因此上述比較是更符合客觀情況的,另外用戶在選擇買還是不買/看還是不看的時候不排除有“貨比三家”的心智模型,對內容進行比較之後再進行消費(時間或者金錢),考慮到這些因素,排序模型更能反映客觀世界的真實情況。
- 參數更新方式的區別
假設模型的參數為 w,損失函數對參數的導數為:
因此 Pointwise 參數更新:
Pairwise 參數更新:
其中
為參數 w 的第 t 次迭代結果,x_i 是第 i 個特徵。
(注:上述公式滿足的前提條件是
,FM 等線性模型滿足此條件。)
由上述更新公式可以看出,pointwise 的參數由文檔特徵的絕對值確定。 而pairwise的參數由文檔相對文檔特徵確定。對於統計特徵,
要比
低一到兩個數量級,比如點擊率的差 0.11 – 0.10 = 0.01。也就是說 pairwise 模型降低了模型對統計特徵的敏感度。對於 ID 特徵,如果用戶點擊和展示的是不同的文檔,其語義信息不一樣,所以:
每個參數都會被正常更新(這裡
表示正樣本的語義向量,
表示負樣本的語義向量)。 但是如果用戶一直沉溺在類似的文檔中,比如標題中都含有類似的色情詞,他們的語義向量會比較接近一些,因此
近似於零向量,參數不會被更新,這些色情詞就不會對模型造成影響。
綜上,pairwise 模型相對於 pointwise 模型在抑制奇聞怪異,色情裸露文檔方面有兩個優點:
- 降低了對統計特徵的敏感程度。
- 減小了沉溺用戶對排序模型的干擾。
- 聯合概率 vs 條件概率
為了方便討論,我們暫時換用 Hinge Loss 作為排序模型的懲罰函數:
即模型對正樣本
的打分高於負樣本
時不予懲罰,反之懲罰值隨著誤判值線性增加。其中
因此在 Hinge Loss 函數下排序模型建模的是條件概率,比聯合概率少了 P(u) 的先驗概率計算過程。如果 P(u) 的計算精確,那麼計算聯合概率和條件概率效果一樣,如果 P(u) 計算有誤差,那麼省略掉 P(u) 的模型更魯棒。再次套用“沒有免費午餐定律”,其實排序模型是減小了模型的複雜度。
閱讀更多 學習機器學習 的文章