FM
参考链接:
是2010年Stedden Rendle提出的,目的是解决稀疏数据的特征组合问题。
逻辑回归
公式1
y = w 0 + ∑ i = 1 n w i x i y=w_{0}+\sum_{i=1}^{n} w_{i} x_{i} y=w0+i=1∑nwixi
w 0 , w i w_{0},w_{i} w0,wi 是参数, n n n表示数据总量, x i x_{i} xi表示某条数据。
二阶多项式模型(Poly2模型)
公式2
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}(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j} y^(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑nwijxixj
一次项有 n + 1 n+1 n+1个,二次项(即组合特征的参数)共有
d ( d − 1 ) 2 \frac{d(d-1)}{2} 2d(d−1),而参数与参数之间彼此独立,在稀疏场景下,二次项的训练是很困难的。因为要训练 w i j w_{ij} wij,需要大量的 x i x_{i} xi 和 x j x_{j} xj都非0的样本(只有非0组合才有意义)。而样本本身是稀疏的,满 x i x j ≠ 0 x_{i} x_{j} \neq 0 xixj̸=0的样本会非常少,那么样本少就难以估计参数 w i j w_{ij} wij,训练出来的模型容易过拟合。
为了缓解上述问题,Rendle在2010提出了FM模型,它可以缓解公式2,特定如下:
- FM模型可以在非常稀疏的情况下进行参数估计
- FM模型是线性时间复杂度的,可以直接使用原问题进行求解,而且不用像SVM一样依赖支持向量。
- FM模型是一个通用的模型,其训练数据的特征取值可以是任意实数。
###对参数 W i j W_{ij} Wij进行分解
公式3
y ^ ( x ) = w 0 + ∑ i = 1 d w i x i + ∑ i = 1 d ∑ j = i + 1 d ( v i ⋅ v j ) x i x j \hat{y}(\mathbf{x})=w_{0}+\sum_{i=1}^{d} w_{i} x_{i}+\sum_{i=1}^{d} \sum_{j=i+1}^{d}\left(\mathbf{v}_{i} \cdot \mathbf{v}_{j}\right) x_{i} x_{j} y^(x)=w0+i=1∑dwixi+i=1∑dj=i+1∑d(vi⋅vj)xixj
其中 v i v_{i} vi是第 i i i维特征的隐向量,其长度为 k ( k < < n ) k(k<<n) k(k<<n) , ( v i ⋅ v j ) \left(\mathbf{v}_{i} \cdot \mathbf{v}_{j}\right) (vi⋅vj) 为内积,其乘积为原来 w i j w_{ij} wij, 也就是
w ^ i j = ( v i ⋅ v j ) = ∑ f = 1 k v i , f ⋅ v j , f \hat{w}_{i j}=\left(\mathbf{v}_{i} \cdot\mathbf{v}_{j}\right)=\sum_{f=1}^{k} v_{i, f} \cdot v_{j, f} w^ij=(vi⋅vj)=∑f=1kvi,f⋅vj,f。
将 w i j w_{ij} wij进行分解,使得不同的特征对不再是完全独立的,而它们的关联性可以用隐式因子表示,这将使得有更多的数据可以用于模型参数的学习。比如 x i x_i xi, x j x_j xj与 x i x_i xi, x k x_k xk 的参数分别为: ⟨ v i , v j ⟩ ⟨v_i,v_j⟩ ⟨vi,vj⟩和 ⟨ v i , v k ⟩ ⟨v_i,v_k⟩ ⟨vi,vk⟩,它们都可以用来学习 v i v_i vi,更一般的,包含 x i x j ≠ 0 & i ≠ j x_{i} x_{j} \neq 0 \& i \neq j xixj̸=0&i̸=j的所有样本都能用来学习 v i v_i vi,很大程度上避免了数据稀疏性的影响。
时间复杂度O( k d 2 kd^2 kd2)—>O( k d kd kd)
A = 1 2 ( 2 A + B ) − 1 2 B . A = ∑ i = 1 n ∑ j = i + 1 n ⟨ v i ,