在《深入FFM原理与实践》中提到:“所有二次项参数 w i j w_{ij} wij 可以组成一个对称阵 W W W,那么这个矩阵就可以分解为 W = V T V W=V^TV W=VTV, V V V 的第 j j j 列便是第 j j j 维特征的隐向量。换句话说,每个参数 w i j = ⟨ v i , v j ⟩ w_{ij}=\left \langle v_i,v_j \right \rangle wij=⟨vi,vj⟩,这就是FM的核心思想。”
在POLY2模型中等式为: y ^ ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n w i , j x i x j \hat{y}(x)=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n{\sum_{j=i+1}^n{w_{i,j}x_ix_j}} y^(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑nwi,jxixj 在梯度下降时,偏导求解结果如下:
∂ ∂ θ y ^ ( x ) = { 1 i f θ i s w 0 x i i f θ i s w i x i y i i f θ i s w i j \frac{\partial }{\partial \theta}\hat{y}(x)=\begin{cases} 1 &{if\;\theta\;is\;w_0} \\ x_i &{if\;\theta\;is\;w_i} \\ x_iy_i &{if\;\theta\;is\;w_{ij}}\\ \end{cases} ∂θ∂y^(x)=⎩⎪⎨⎪⎧1xixiyiifθisw0ifθiswiifθiswij 而在FM模型中等式为: y ^ ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n ⟨ v i , v j ⟩ x i x j \hat{y}(x)=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n{\sum_{j=i+1}^n{{\left \langle v_i,v_j \right \rangle}x_ix_j}} y^(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑n⟨vi,vj⟩xixj 偏导结果为:
∂ ∂ θ y ^ ( x ) = { 1 i f θ i s w 0 x i i f θ i s w i x i ∑ j = 1 n v j , f x j − v i , f x i 2 i f θ i s v i , f \frac{\partial }{\partial \theta}\hat{y}(x)=\begin{cases} 1 &{if\;\theta\;is\;w_0} \\ x_i &{if\;\theta\;is\;w_i} \\ x_i\sum_{j=1}^nv_{j,f}x_j-v_{i,f}x_i^2 &{if\;\theta\;is\;v_{i,f}}\\ \end{cases} ∂θ∂y^(x)=⎩⎪⎨⎪⎧1xixi∑j=1nvj,fxj−vi,fxi2ifθisw0ifθiswiifθisvi,f 于是便会发现在POLY2模型中,如果训练数据过于稀疏,导致 x i y i = 0 x_iy_i=0 xiyi=0 的情况大量出现,那么在求解的时候 w i j w_{ij} wij 也会大量出现0,也就是虽然引进两两组合的特征,但是训练效果不好;但是在FM模型中则不会出现这个问题,FM能够抓住变量间的相互作用,并且时间复杂度为 O ( k n ) O(kn) O(kn)。