因子分解機(FM)


1. FM算法

  FM(Factor Machine,因子分解機)算法是一種基於矩陣分解的機器學習算法,為了解決大規模稀疏數據中的特征組合問題。FM算法是推薦領域被驗證效果較好的推薦算法之一,在電商、廣告、直播等推薦領域有廣泛應用。

2. FM算法優勢

  特征組合:通過對兩兩特征組合,引入交叉項特征。

  解決維數災難:通過引入隱向量,實現對特征的參數估計。

3. FM表達式

  對於度為2的因子分解機FM的模型為:

其中,參數表示的是兩個大小為的向量和向量的點積:

其中,表示的是系數矩陣的第維向量,且稱為超參數。在因子分解機FM模型中,前面兩部分是傳統的線性模型,最后一部分將兩個互異特征分量之間的交叉關系考慮進來。

  因子分解機也可以推廣到高階的形式,即將更多互異特征分量之間的相互關系考慮進來。

4. 交叉項

    

   算法核心為交叉項計算,可以明顯降低模型時間復雜度,現在模型的復雜度為

5. 求解問題

  FM算法主要可以處理三類問題:回歸問題、二分類問題、排序。

  5.1 回歸問題

    在回歸問題中,直接使用作為最終的預測結果。在回歸問題中使用最小均方誤差作為優化標准,即

    

其中,表示樣本的個數。

  5.2 二分類問題

    在二分類問題中使用Logitloss作為優化標准,即

其中,表示的是階躍函數Sigmoid,其數學表達式為:

6. FM&SVM

  SVM的二元特征交叉參數是獨立的,而FM的二元特征交叉參數是兩個維的向量,交叉參數並不獨立,兩者相互影響。

  FM可以在原始形式下進行優化學習,而基於核的非線性SVM通常需要在對偶形式下優化學習。

  FM的模型預測與訓練樣本獨立,而SVM則與訓練樣本有關(支持向量)。

7. 交叉項核心代碼

1 v = normalvariate(0, 0.2) * ones((n, k))    #初始化隱向量
2 inter_1 = dataMatrix[x] * v
3 inter_2 = multiply(dataMatrix[x], dataMatrix[x]) * multiply(v, v)   #multiply對應元素相乘
4 interaction = sum(multiply(inter_1, inter_1) - inter_2) / 2.    #完成交叉項
5 p = w_0 + dataMatrix[x] * w + interaction   #計算預測的輸出

 

Time : 2019-10-14 09:39:44


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM