主要內容: python
變換爲線性複雜度的計算公式: git
根據不一樣的應用,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
無論採用哪一種損失函數,咱們均可以經過隨機梯度降低的方法來求解,以下: 算法
主要超參數有:初始化參數、學習率、正則化稀疏 函數
下面經過一個簡單的數據集和基於隨機梯度降低的方法來實現FM算法(不加正則化),採用python語言。 工具
地址:https://github.com/jizhihui/fm_python 學習
libFM是FM算法的開源實現工具,包含SGD、ALS、MCMC等實現方法(具體參考論文《Factorization Machines with libFM》),能夠應用於迴歸和分類等問題。 優化
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)詳細
一、《Factorization Machines with libFM》