FM(Factorization Machine)
引子
機器學習的通常模式爲學習輸入到輸出的變換,比如最常見的線性迴歸模型,輸入爲X,輸出爲Y,通常輸入爲高維數據,X是一個向量,形式如下:
線性迴歸是最簡單的線性模型,只能捕捉最簡單的一階線性關係,而且基於各特徵獨立同分布的假設。
實際中,各特徵
一般爲了簡單,會只捕捉二階的關係,即特徵間兩兩相互影響的關係,如下:
這裏每兩個特徵有一個參數w要學習。
這裏仍有問題,對於二項式迴歸來說,如果有n個特徵,那麼要學習到兩兩之間的關係,有
同時,又由於實際數據會有稀疏性問題,有些特徵兩兩同時不爲0的情況很少,當一個數據中任何一個特徵值爲0的時候,那麼其他特徵與此特徵的相互關係將沒有辦法學習。
FM原理
受到矩陣分解的啓發,爲了解決上述兩個問題,引入了因子分解機。
如果訓練的輸入數據有n個特徵,設i,j兩個特徵的相互關係用參數
none
…
缺失了對角線的矩陣,正因爲如此,我們可以通過給對角線任意設定值來保證矩陣爲半正定矩陣,自然想到了矩陣分解。
基於矩陣分解的思想,將以上矩陣分解爲兩個低階矩陣的乘積,那麼在分解過程中,不僅僅減少了數據存儲的複雜度,而且多了一個特別神奇的功能,預測功能。
矩陣分解基於一個假設,即矩陣中的值等於學習到的兩個隱向量的乘積,即
這裏
那麼因子分解機的形式爲:
其中,
通常,由於數據稀疏,本來
而且,一般隱向量維度k遠遠小於特徵數量n,那麼分解後要學習的參數數量爲:
學習方法
通常在學習的時候,要加上正則,至於正則的選擇,根據實際情況來。但是正則化係數的選擇非常重要。
1.隨機梯度下降
關鍵參數:
- 學習率(太大無法收斂)
- 正則係數(分解機高度依賴正則係數的選擇,同時有一種自適應選擇正則係數的方法,在libfm中有此實現)
- 初始化值(通常取小值,但不能爲0)
2.交替最小二乘法(Alternating least-squares)
每次選擇一個參數,固定其他參數進行優化
- 相較於梯度下降,沒有了超參數學習率
- 仍有正則係數以及初始化值
3.馬爾科夫鏈蒙特卡洛法MCMC
屬於貝葉斯推斷法,採用吉布斯採樣,每次優化一個參數。
理論上是最好的方法,因爲它首先對超參數的選擇不是特別敏感,其次沒有了正則係數,也就減少了正則係數的選擇時間。同時,超先驗參數的個數要小於正則係數的個數,減少了複雜度。
FFM(Field-aware Factorization Machines)
FFM是在FM的基礎上引入了域的概念,是對FM的改進。
針對屬於不同域的特徵,相互影響因爲域的不同而不同,那麼一個特徵,會學習到多個隱向量,一個隱向量對應一個域,更加準確地描述了特徵的組合。
空間複雜度
假設有f個域,n個特徵,隱向量長度爲k, 那麼時間複雜度爲
參考文獻
[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.