FM算法详解

来源:互联网 发布:mac app store中文版 编辑:程序博客网 时间:2024/04/29 05:57

参考: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

从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征xixj的组合用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 0
原创粉丝点击