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 @   AndyJee  阅读(10785)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2015-12-13 (算法)天平问题
点击右上角即可分享
微信分享提示