码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-22 19:03:03      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

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中具有代表性,且比较简单的一种。就以其为例展开介绍。其对输出值是如下建模
技术分享
其中,技术分享技术分享技术分享,n表示特征维度
技术分享表示两个大小为k的向量技术分享技术分享的点积技术分享
k是定义factorization维度的超参数,是正整数
因子分解机FM也可以推广到高阶的形式,即将更多互异特征分量之间的相互关系考虑进来。
3.用途
(1)回归问题(Regression):可以采用最小均方误差作为优化的标准(深入理解可以从高斯分布、极大似然估计入手)
(2)二分类问题(Binary Classification):利用sigmoid函数。详细原因见 地址
(3)排序(Ranking)
4.交叉项系数技术分享
(1)示例
样本数据
技术分享
FM交叉项系数
技术分享
(2)求解
表面上看FM模型的第3项的计算复杂度为O(kn^2),但其实可以经过简单的数学处理,计算复杂度降为O(kn)。
技术分享
5.SGD求解参数
本文利用随机梯度下降SGD进行参数学习,也是一种简单的在线学习方法。
随机梯度下降与梯度下降主要差别在于batch size不一样
注:大家可以根据自己需要定义Loss Function,通过梯度下降得到参数更新的公式
最初的V通过正态分布的形式给出
所示代码是通过简单的似然估计进行二分类从而进行参数更新
技术分享
后续会更新利用FTRL训练FM
参考文献
(1)Steffen Rendle.Factorization Machines
(2)Steffen Rendle.Factorization Machines with libFM
(3)参考文章 地址

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

标签:

原文地址:http://blog.csdn.net/a819825294/article/details/51218296

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!