因子分解机FM原理及SGD训练

1.背景

Steffen Rendle于2010年提出Factorization Machines(下面简称FM),并发布开源工具libFM。FM的提出主要对比对象是SVM,与SVM相比,有如下几个优势
(1)对于输入数据是非常稀疏(比如自动推荐系统),FM可以,而SVM会效果很差,因为训出的SVM模型会面临较高的bias。
(2)FMs拥有线性的复杂度, 可以通过 primal 来优化而不依赖于像SVM的支持向量机。

2.模型

2-way FM(degree = 2)是FM中具有代表性,且比较简单的一种。就以其为例展开介绍。其对输出值是如下建模

![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYwNDIyMTIxOTM5NDg2?x-oss-process=image/format,png)

其中,,n表示特征维度
表示两个大小为k的向量的点积

k是定义factorization维度的超参数,是正整数
因子分解机FM也可以推广到高阶的形式,即将更多互异特征分量之间的相互关系考虑进来。

3.用途

(1)回归问题(Regression):可以采用最小均方误差作为优化的标准(深入理解可以从高斯分布、极大似然估计入手)
(2)二分类问题(Binary Classification):利用sigmoid函数。详细原因见 地址
(3)排序(Ranking)

4.交叉项系数

(1)示例
样本数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mg8Jr41O-1593509965254)(https://img-blog.csdn.net/20160422125143948)]
FM交叉项系数

(2)求解
表面上看FM模型的第3项的计算复杂度为O(kn^2),但其实可以经过简单的数学处理,计算复杂度降为O(kn)。

数学原理:主要是采用了如公式((a+b+c)2−a2−b2−c2求出交叉项

![](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYwODA4MTQ1ODM3NzU0?x-oss-process=image/format,png)

5.SGD求解参数

本文利用随机梯度下降SGD进行参数学习,也是一种简单的在线学习方法。

随机梯度下降与梯度下降主要差别在于batch size不一样

注:大家可以根据自己需要定义Loss Function,通过梯度下降得到参数更新的公式

最初的V通过正态分布的形式给出
所示代码是通过简单的似然估计进行二分类从而进行参数更新

后续会更新利用FTRL训练FM

参考文献
(1)Steffen Rendle.Factorization Machines
(2)Steffen Rendle.Factorization Machines with libFM
(3)http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值