原文:Factorization Machines
地址:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.393.8529&rep=rep1&type=pdf
一、問題由來
在計算廣告和推薦系統中,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編碼以后,樣本空間有一個categorical變為了百萬維的數值特征,特征空間一下子暴增一百萬。所以大廠動不動上億維度,就是這么來的。
而FM的優勢就在於對這兩方面問題的處理。首先是特征組合,通過對兩兩特征組合,引入交叉項特征,提高模型得分;其次是高維災難,通過引入隱向量(對參數矩陣進行矩陣分解),完成對特征的參數估計。
三、原理及求解
其中w0 為初始權值,或者理解為偏置項,wi 為每個特征xi 對應的權值。可以看到,這種線性表達式只描述了每個特征與輸出的關系。
FM的表達式如下,可觀察到,只是在線性表達式后面加入了新的交叉項特征及對應的權值。
求解過程 :
從上面的式子可以很容易看出,組合部分的特征相關參數共有n(n−1)/2個。但是如第二部分所分析,在數據很稀疏的情況下,滿足xi,xj都不為0的情況非常少,這樣將導致ωij無法通過訓練得出。
為了求出ωij,我們對每一個特征分量xi引入輔助向量Vi=(vi1,vi2,⋯,vik)。然后,利用vivj^T對ωij進行求解:
那么ωij組成的矩陣可以表示為:
那么,如何求解vi和vj呢?主要采用了公式:

具體推導過程如下:
四、參數求解
利用梯度下降法,通過求損失函數對特征(輸入項)的導數計算出梯度,從而更新權值。設m為樣本個數,θ為權值。
其中,是和i無關的,可以事先求出來。每個梯度都可以在O(1)時間內求得,整體的參數更新的時間為O(kn)。