本文主要介绍了FM的详细推导过程,以及FM的优势和一些其他类似模型的区别。
1. 基本概念
常见的线性表达式如下:
其中为初始权值,或者理解为偏置项,为每个特征对应的权值。可以看到,这种线性表达式只描述了每个特征与输出的关系。FM的表达式如下,可观察到,只是在线性表达式后面加入了新的交叉项特征及对应的权值。
上面公式中,代表特征数量,是第i个特征得值,是模型权重,从公式来看,模型得前半部分就是普通得LR线性组合,后半部分是交叉项:特征得组合。单单从模型的能力上讲,FM的表达能力强于LR,当交叉项参数全部为0得时候退化为普通得LR模型。从公式中,我们可以看出组合特征得参数一共有个,任意两个参数都是独立的。然而在数据稀疏性普遍存在的实际场景中,二次项参数的训练是很困难的。原因是:每个参数的训练都需要大量 和都非零的样本;由于样本数据本来就比较稀疏,满足,都非零的样本将会非常的少。训练样本不足,很容易导致参数不准确,最终将严重影响模型的性能。
矩阵分解提供了一种解决数据稀疏性的思路。在基于模型的协同过滤中,一个评分矩阵可以分解为user矩阵和item矩阵,每个user 和item都可以采用一个隐向量表示。这里,采用的方法是:给每个特征分量,引入一个辅助向量,然后利用对交叉项的系数进行估计(为什么可以这样估计还存在疑问),即。
在这种情况下,我们只需要求出特征分量的辅助向量即可,在实际应用中。其中,是第i维特征的隐向量,代表向量点积。隐向量的长度为,包含个描述特征的因子。根据公式(2),二次项的参数数量减少为个,远少于多项式模型的参数数量。另外,参数因子化使得的参数和的参数不再是相互独立的,因此我们可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说,和的系数分别为和,它们之间有共同项。也就是说,所有包含“的非零组合特征”(存在某个,使得)的样本都可以用来学习隐向量,这很大程度上避免了数据稀疏性造成的影响。而在多项式模和是相互独立的。
2. 梯度下降求解
利用SGD梯度下降训练模型,模型各个参数的梯度如下:
其中,是隐向量的第f个元素。由于只与f有关,而和i无关,所以在每次迭代过程中,只需要计算一次所有f的,就能方便地得到所有的梯度。显然,计算所有f的的复杂度是;已知时,计算每个参数梯度的复杂度是;模型参数一共有nk+n+1个。因此,FM参数训练的复杂度也是。综上可知,FM可以在线性时间训练和预测,是一种非常高效的模型。
前两项的求导非常简单,交叉项求导过程如下:
2.1 化简
解释:是一个具体的值 第1个等号:对称矩阵W对角线上半部分 第2个等号:把向量内积展开成累加和的形式 第3个等号:提出公共部分 第4个等号:i和j相当于是一样的,表示成平方过程。
2. 2 左半部分求导
2.3 右半部分求导
最终
3. 总结
3.1 FM的优势
FM降低了因数据稀疏,导致交叉项参数学习不充分的影响。直接用one-hot进行多项式建模,DataSet中没有出现的特征组合的权重是学不出来的,而FM是基于MF的思想或者说是基于latent factor model的思想进行的“曲线救国”:
- 通过先学习每个特征的隐向量,然后通过隐向量之间的内积来刻画交互项的权重。
- 一个组合特征的样本数一定比单特征的样本数少 <=> 直接学习交互项的特征一定比学习隐向量要难。且学习隐向量可以避免因数据稀疏导致的学习不充分的缺点。
FM提升了参数学习效率,因为FM需要训练的参数更少,一般情况下,隐向量的维度都是比较短的,且肯定原小于直接学习交互项的参数个数。
FM模型对稀疏数据有更好的学习能力,通过交互项可以学习特征之间的关联关系,并且保证了学习效率和预估能力。
与其他模型相比,它的优势如下:
- FM是一种比较灵活的模型,通过合适的特征变换方式,FM可以模拟二阶多项式核的SVM模型、MF模型、SVD++模型等;
- 相比SVM的二阶多项式核而言,FM在样本稀疏的情况下是有优势的;而且,FM的训练/预测复杂度是线性的,而二项多项式核SVM需要计算核矩阵,核矩阵复杂度就是N平方。
- MF虽然可以用类似SVD++等方式来增强对交互特征的学习,但是最多只能加两个特征。而FM是可以对任意阶的所有交互项进行学习
FM的一些巧妙之处:
- FM求解latent factor vector的套路,是基于MF的latent factor model方法来做。
- 矩阵分解大法用在FM上,以缩减参数个数,处理数据稀疏带来的学习不足问题,还能做embedding。
- FM 可以看做是 MF 的 generalized 版本,不仅能够利用普通的用户反馈信息,还能融合情景信息、社交信息等诸多影响个性化推荐的因素。
3.2 SVM和FM的区别
- SVM的二元特征交叉参数是独立的,而FM的二元特征交叉参数是两个k维的向量、,交叉参数就不是独立的,而是相互影响的。
- FM可以在原始形式下进行优化学习,而基于kernel的非线性SVM通常需要在对偶形式下进行
- FM的模型预测是与训练样本独立,而SVM则与部分训练样本有关,即支持向量为什么线性SVM在和多项式SVM在稀疏条件下效果会比较差呢?线性svm只有一维特征,不能挖掘深层次的组合特征在实际预测中并没有很好的表现;而多项式svn正如前面提到的,交叉的多个特征需要在训练集上共现才能被学习到,否则该对应的参数就为0,这样对于测试集上的case而言这样的特征就失去了意义,因此在稀疏条件下,SVM表现并不能让人满意。而FM不一样,通过向量化的交叉,可以学习到不同特征之间的交互,进行提取到更深层次的抽象意义。
3.3 FM和LR的区别
- LR是从组合特征的角度去描述单特征之间的交互组合;FM实际上是从模型(latent factor model)的角度来做的。即FM中特征的交互是模型参数的一部分。
- FM能很大程度上避免了数据系数行造成参数估计不准确的影响。FM是通过MF的思想,基于latent factor,来降低交叉项参数学习不充分的影响.具体而言,两个交互项的参数学习,是基于K维的latent factor每个特征的latent factor是通过它与其它(n-1)个特征的latent factor交互后进行学习的,这就大大的降低了因稀疏带来的学习不足的问题。latent factor学习充分了,交互项(两个latent factor之间的内积)也就学习充分了。即FM学习的交互项的参数是单特征的隐向量。
参考文献:
https://www.biaodianfu.com/ctr-fm-ffm-deepfm.html https://www.cnblogs.com/wkang/p/9588360.html

FM算法解析:点击率预估模型的高效实现
本文详细介绍了FM(Factorization Machines)算法,包括基本概念、梯度下降求解方法以及与SVM和LR的区别。FM通过引入特征的隐向量来描述特征间的交互,有效解决了数据稀疏性问题,提高了模型学习效率和预测能力。
1811

被折叠的 条评论
为什么被折叠?



