FM(因子分解機系列)

FM(Factorization Machine)

引子

機器學習的通常模式爲學習輸入到輸出的變換,比如最常見的線性迴歸模型,輸入爲X,輸出爲Y,通常輸入爲高維數據,X是一個向量,形式如下:

y=w1x1+w2x2+...+wnxn

線性迴歸是最簡單的線性模型,只能捕捉最簡單的一階線性關係,而且基於各特徵獨立同分布的假設。

實際中,各特徵x1,x2,...xn 並不是相互對立的,一般有些特徵是相互影響的。此時就需要用多項式迴歸去建立模型,捕捉這些特徵之間的相互影響。

一般爲了簡單,會只捕捉二階的關係,即特徵間兩兩相互影響的關係,如下:

y=w0+j=1pwjxj+j=1pi=jpwj,ixjxi

這裏每兩個特徵有一個參數w要學習。

這裏仍有問題,對於二項式迴歸來說,如果有n個特徵,那麼要學習到兩兩之間的關係,有n(n1)/2 個參數要去學習,對於實際中的複雜任務來說,n的值往往特別大,會造成要學習的參數特別多的問題。
同時,又由於實際數據會有稀疏性問題,有些特徵兩兩同時不爲0的情況很少,當一個數據中任何一個特徵值爲0的時候,那麼其他特徵與此特徵的相互關係將沒有辦法學習。

FM原理

受到矩陣分解的啓發,爲了解決上述兩個問題,引入了因子分解機。

如果訓練的輸入數據有n個特徵,設i,j兩個特徵的相互關係用參數wi,j 表示,那麼有wi,j=wj,i , 這樣所有w的參數值會形成一個對稱的矩陣,如下:
none w1,2 w1,3 w1,4w1,n
w2,1 none w2,3 w2,4w2,n

wn,1 wn,2 wn,3wn,n1 none

缺失了對角線的矩陣,正因爲如此,我們可以通過給對角線任意設定值來保證矩陣爲半正定矩陣,自然想到了矩陣分解。

基於矩陣分解的思想,將以上矩陣分解爲兩個低階矩陣的乘積,那麼在分解過程中,不僅僅減少了數據存儲的複雜度,而且多了一個特別神奇的功能,預測功能。

矩陣分解基於一個假設,即矩陣中的值等於學習到的兩個隱向量的乘積,即

wi,j=vivj

這裏vi,vj 爲學習到的隱向量。
那麼因子分解機的形式爲:
y=w0+j=1pwjxj+j=1pi=j+1pxjxif=1kvj,fvi,f

其中,vj,f,vi,f 分別爲特徵i,j對應隱向量的一個隱因子。
通常,由於數據稀疏,本來wi,j 是學習不到的,但是我們可以通過i特徵與其他特徵的數據,j特徵與其他特徵的數據,分別學習到i,j特徵的參數向量vi,vj ,這樣wi,j 通過vivj 的乘積便可以預測wi,j 的值,神奇地解決了數據稀疏帶來的問題。

而且,一般隱向量維度k遠遠小於特徵數量n,那麼分解後要學習的參數數量爲:nk ,對比多項式迴歸的參數數量n(n1)/2 , 從O(n2) 減到了kO(n) 的級別。

學習方法

通常在學習的時候,要加上正則,至於正則的選擇,根據實際情況來。但是正則化係數的選擇非常重要。

1.隨機梯度下降

關鍵參數:

  • 學習率(太大無法收斂)
  • 正則係數(分解機高度依賴正則係數的選擇,同時有一種自適應選擇正則係數的方法,在libfm中有此實現)
  • 初始化值(通常取小值,但不能爲0)

2.交替最小二乘法(Alternating least-squares)

每次選擇一個參數,固定其他參數進行優化

  • 相較於梯度下降,沒有了超參數學習率
  • 仍有正則係數以及初始化值

3.馬爾科夫鏈蒙特卡洛法MCMC

屬於貝葉斯推斷法,採用吉布斯採樣,每次優化一個參數。

理論上是最好的方法,因爲它首先對超參數的選擇不是特別敏感,其次沒有了正則係數,也就減少了正則係數的選擇時間。同時,超先驗參數的個數要小於正則係數的個數,減少了複雜度。

FFM(Field-aware Factorization Machines)

FFM是在FM的基礎上引入了域的概念,是對FM的改進。
針對屬於不同域的特徵,相互影響因爲域的不同而不同,那麼一個特徵,會學習到多個隱向量,一個隱向量對應一個域,更加準確地描述了特徵的組合。

空間複雜度

假設有f個域,n個特徵,隱向量長度爲k, 那麼時間複雜度爲O(nfk)

參考文獻

[1] Rendle S. Factorization machines with libfm[J]. ACM Transactions on Intelligent Systems and Technology (TIST), 2012, 3(3): 57.

[2] Juan Y, Zhuang Y, Chin W S, et al. Field-aware factorization machines for CTR prediction[C]//Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016: 43-50.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章