FFM

1.介绍

​ 在FM中,将特征与特征之间交互作用的时候,用的是一个变量。在FFM中这一点得到了改进,作者认为一个特征在跟其他特征交互的时候,会发挥不同的作用,因此应该具有不同的向量表示。

2.原理

​ 先把FM的表达式放在这里我们:

y^=w0+i=1nwixi+i=1n1j=i+1n<vi,vj>xixj\hat y = w_0 + \sum _{i=1}^{n}w_ix_i+\sum_{i=1}^{n-1}\sum _{j=i+1}^{n}<v_i,v_j>x_ix_j

​ 接下来我们想办法增加一个域,增加一个参数,增强模型的能力。

​ FM中的特征xix_i在跟其他特征交叉的时候,特征xix_i使用的是同一个隐向量ViV_i,而FFM模型将特征按照事先的规则分为多个场,每个特征将被映射为多个隐向量:Vi1,Vi2,Vi3.....VifV_{i1},V_{i2},V_{i3}.....V_{if},每个隐向量对应一个场。当两个特征xi,xjx_i,x_j组合的时候,用对方对应的场对应的隐向量做内积。

y^=w0+i=1nwixi+i=1nj=i+1n<vi,fj,vj,fi>xjxi\hat y = w_0+\sum_{i=1}^{n}w_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_{i,f_j},v_{j,f_i}>x_jx_i

3.总结

​ 优点:

​ 1.引入field的概念,让某一特征与不同特征交互的时候,可以发挥不同的重要性,增强模型的表达能力。

​ 2.可解释性强,对于一些现实中相互影响的特征的重要性可以更为便捷的解释。

​ 缺点:

​ 复杂度高,时间复杂度为O(n2)O(n^2).