FM算法(二):工程實現

主要內容: python

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

     

1、實現方法

一、FM模型函數

變換爲線性複雜度的計算公式: git

二、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。 github

無論採用哪一種損失函數,咱們均可以經過隨機梯度降低的方法來求解,以下: 算法

三、實現步驟

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

2、    Python實現FM算法

一、簡介

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

二、代碼

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

3、    libFM

  1. 簡介

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

  1. 使用

  2. 數據格式:

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

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

./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

4、參考文獻

一、《Factorization Machines with libFM》

相關文章
相關標籤/搜索