一、問題由來
在計算廣告和推薦系統中,CTR預估(click-through rate)是非常重要的一個環節,判斷一個商品是否進行推薦需要根據CTR預估的點擊率來進行。傳統的邏輯迴歸模型是一個廣義線性模型,非常容易實現大規模實時並行處理,因此在工業界獲得了廣泛應用,但是線性模型的學習能力有限,不能捕獲高階特徵(非線性信息),而在進行CTR預估時,除了單特徵外,往往要對特徵進行組合。對於特徵組合來說,業界現在通用的做法主要有倆大類:FM系列和DNN系列。今天,我們就來分享下FM算法。
二、爲什麼需要FM
1、特徵組合是許多機器學習建模過程遇到的問題,如果對特徵直接建模,很有可能會忽略與特徵之間的關聯信息,因此,可以通過構建新的交叉特徵這一特徵組合方式提高模型的效果。
2、高維的稀疏矩陣是實際工程中常見的問題,並直接會導致計算量過大,特徵權值更新緩慢。試想一個10000×100的表,每一列都有8種元素,經過one-hot獨熱編碼之後,會產生一個10000×800的表。因此表中每行元素只有100個值爲1,700個值爲0.特徵空間急劇變大,以淘寶上的item爲例,將item進行one-hot編碼以後,樣本空間有一個categories變爲了百萬維的數值特徵,特徵空間一下子暴增一百萬。所以大廠動不動上億維度,就是這麼來的。
而FM的優勢就在於這倆方面問題的處理。首先是特徵組合,通過對兩兩特徵組合,引入交叉項特徵,提高模型得分;其次是高維災難,通過引入隱向量(對參數矩陣進行矩陣分解),完成對特徵的參數估計。
三、原理及求解
在看FM算法前,我們先回顧一下最常見的線性表達式:
其中爲初始權值,或者理解爲偏置項,爲每個特徵對應的權值。可以看到,這種線性表達式只描述了每個特徵與輸出的關係。
FM的表達式如下,可觀察到,只是在線性表達式後面加入了新的交叉特徵及對應的權值。
求解過程:
從上面的式子可以很容易看出,組合部分的特徵相關參數共有n(n-1)/2個。但是如第二部分所分析,在數據很稀疏的情況下,滿足都不爲0的情況非常少,這樣將導致無法通過訓練得出。
爲了求出,我們對每一個特徵分量引入輔助向量Vi=。然後,利用ViVj^T對Wij進行求解:
那麼Wij組成的矩陣可以表示爲:
那麼,如何求解Vi和Vj呢?主要採用了公式:
四、參數求解
利用梯度下降法,通過求損失函數對特徵(輸入項)的導數計算出梯度,從而更新權值。設m爲樣本個數。爲權值。
其中,是和i無關的,可以事先求出來。每個梯度都可以在O(1)時間內求得,整體的參數更新的時間爲O(kn).