FM算法详解

参考:http://blog.csdn.net/bitcarmanlee/article/details/52143909

http://blog.csdn.net/dream_catcher_10/article/details/50844976

简介

1.FM(factorization machine)模型是一种基于矩阵分解的机器学习模型,对于One-Hot编码引起的稀疏数据具有很好的学习能力;
2.FM模型与LR模型的区别在于引进了特征组合,选择合适的K值可提高模型的泛化能力;;

FM算法

普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。最简单的以电商为例,一般女性用户看化妆品服装之类的广告比较多,而男性更青睐各种球类装备。那很明显,女性这个特征与化妆品类服装类商品有很大的关联性,男性这个特征与球类装备的关联性更为密切。如果我们能将这些有关联的特征找出来,显然是很有意义的。

一般的线性模型为: 

y=ω0+i=1nωixi

从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征 xi xj 的组合用 xixj 。为了简单起见,我们讨论二阶多项式模型。具体的模型表达式如下:

y=ω0+i=1nωixi+i=1n1j=i+1nωijxixj

上式中, n 表示样本的特征数量, xi 表示第 i 个特征。 
与线性模型相比,FM的模型就多了后面特征组合的部分。

FM求解

从上面的式子可以很容易看出,组合部分的特征相关参数共有

n(n1)2 个。但是如第二部分所分析,在数据很稀疏的情况下,满足 xi , xj 都不为0的情况非常少,这样将导致 ωij 无法通过训练得出。

为了求出 ωij ,我们对每一个特征分量 xi 引入辅助向量 Vi=(vi1,vi2,,vik) 。然后,利用 vivTj ωij 进行求解。

这里写图片描述

那么 ωij 组成的矩阵可以表示为: 
这里写图片描述 
上面的表达形式,就对应了一种矩阵的分解。对 k 值的限定,就反应了FM模型的表达能力。

要求出 <vi,vj> ,主要是采用了如公式 ((a+b+c)2a2b2c2 求出交叉项。具体过程如下:这里写图片描述



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值