主要内容: 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》