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》

posted @ 2017-12-13 14:13  AndyJee  阅读(10712)  评论(0编辑  收藏  举报