fm算法详解_什么是FM算法?

FM(Factor Machine, 因子分解机)算法是一种基于矩阵分解的机器学习算法,是为了解决大规模稀疏数据中的特征组合问题。

不同于传统的线性模型LR(Logistic Regression),其认为每个特征都是独立的。在FM中,考虑到特征之间的的交互作用,并对特征进行交叉组合。

FM的二阶多项式回归模型如下:

135435053_1_20180610083632567

右式中的前两项就是简单的线性回归;第三项是交叉项,即特征两两组合,那么一共有n(n-1)/2个组合特征,从而建立起了特征和结果直接的非线性关系。

由于样本数据本来就很稀疏,即大部分xi和xj都为0,那么能够满足xi和xj都为0的样本就更少了。因此这样的话,导致对交叉项的参数wij估计的不充分,严重影响模型预测的效果以及模型的稳定性。那么,如何既能降低数据稀疏给模型性能带来的不良影响,同时又能有效地解决二阶交叉项参数的学习问题呢?这里使用的方法就是进行矩阵分解。

这里举一个用户给商品打分的例子,如左表打分矩阵所示。可以分解为一个用户矩阵和商品矩阵,这样的到的两个矩阵就不稀疏了。用户A对于商品W的喜好就可以直接通过用户A对应的行向量[1.2, 0.8]乘W对应的列向量[1.5, 1.7]’计算得到。

135435053_2_20180610083632676

通过上述思想,我们就可以对交叉参数矩阵W进行矩阵分解,将交叉项参数W分解为:

135435053_3_20180610083632786

其中n为特征的维数,k为隐向量的维数。经过了矩阵分解,那么每个交叉项系数wij就可以用隐向量的内积来表示,得到了如下公式:

135435053_4_20180610083632895

这样需要学习的参数大大减少了,从n*n减少到了k*n,而k<>

从直观上看FM算法的复杂度为O(kn^2),但经过化简得到下式,可以将算法复杂度降到O(kn)。

135435053_5_20180610083632957

同LR一样,FM也可以利用SGD来训练模型,其中模型中参数梯度计算的方法如下:

135435053_6_2018061008363351

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值