FM算法(二):工程實現


主要內容:

  1. 實現方法
  2. Python實現FM算法
  3. libFM

     

一、實現方法

1、FM模型函數

變換為線性復雜度的計算公式:

2、FM優化目標

根據不同的應用,FM可以采用不同的損失函數loss function來作為優化目標,如回歸Regression:y^(x)直接作為預測值,損失函數可以采用least square error;二值分類Binary Classification:y^(x)需轉化為二值標簽,如0,1。損失函數可以采用hinge loss或logit loss;排序Rank:x可能需要轉化為pair-wise的形式如(X^a,X^b),損失函數可以采用pairwise loss。

不管采用哪種損失函數,我們都可以通過隨機梯度下降的方法來求解,如下:

3、實現步驟

主要超參數有:初始化參數、學習率、正則化稀疏

二、    Python實現FM算法

1、簡介

下面通過一個簡單的數據集和基於隨機梯度下降的方法來實現FM算法(不加正則化),采用python語言。

2、代碼

地址:https://github.com/jizhihui/fm_python

三、    libFM

  1. 簡介

libFM是FM算法的開源實現工具,包含SGD、ALS、MCMC等實現方法(具體參考論文《Factorization Machines with libFM》),可以應用於回歸和分類等問題。

  1. 使用

  2. 數據格式:

    libFM支持libsvm的數據格式,即 label index:value index:value的形式

2)使用方法(命令行):

./libFM -method mcmc -task r -dim '1;1;8' -init_stdev 0.1 -iter 100 -test ml1m-test.libfm -train ml1m-train.libfm -out ml1m-test.pred

3)詳細

參考github上面的readme

四、參考文獻

1、《Factorization Machines with libFM》


免責聲明!

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



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