因子分解機FM原理及SGD訓練


1.背景

Steffen Rendle於2010年提出Factorization Machines(下面簡稱FM),並發布開源工具libFM。FM的提出主要對比對象是SVM,與SVM相比,有如下幾個優勢
(1)對於輸入數據是非常稀疏(比如自動推薦系統),FM可以,而SVM會效果很差,因為訓出的SVM模型會面臨較高的bias。
(2)FMs擁有線性的復雜度, 可以通過 primal 來優化而不依賴於像SVM的支持向量機。

2.模型

2-way FM(degree = 2)是FM中具有代表性,且比較簡單的一種。就以其為例展開介紹。其對輸出值是如下建模

這里寫圖片描述

其中,,n表示特征維度
表示兩個大小為k的向量的點積

k是定義factorization維度的超參數,是正整數
因子分解機FM也可以推廣到高階的形式,即將更多互異特征分量之間的相互關系考慮進來。

3.用途

(1)回歸問題(Regression):可以采用最小均方誤差作為優化的標准(深入理解可以從高斯分布、極大似然估計入手)
(2)二分類問題(Binary Classification):利用sigmoid函數。詳細原因見 地址
(3)排序(Ranking)

4.交叉項系數

(1)示例
樣本數據

FM交叉項系數

(2)求解
表面上看FM模型的第3項的計算復雜度為O(kn^2),但其實可以經過簡單的數學處理,計算復雜度降為O(kn)。

數學原理:主要是采用了如公式((a+b+c)2−a2−b2−c2求出交叉項

5.SGD求解參數

本文利用隨機梯度下降SGD進行參數學習,也是一種簡單的在線學習方法。

隨機梯度下降與梯度下降主要差別在於batch size不一樣

注:大家可以根據自己需要定義Loss Function,通過梯度下降得到參數更新的公式

最初的V通過正態分布的形式給出
所示代碼是通過簡單的似然估計進行二分類從而進行參數更新

后續會更新利用FTRL訓練FM

參考文獻
(1)Steffen Rendle.Factorization Machines
(2)Steffen Rendle.Factorization Machines with libFM
(3)http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com