FM与FFM

1.FM

逻辑回归、线性回归等均没有考虑特征交叉,可以考虑

$$y(x)=w_0+\sum_{i=1}^{n}w_ix_i + \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}w_{ij}x_ix_j$$

但此处\(w_{ij}\)为稠密矩阵,学习的计算复杂度高而且在特征高度稀疏的时候w得不到有效的学习,因此将w分解为向量的乘积,具体的

$$w_{ij}=v_i^Tv_j$$

其中\(v_i,v_j\)均为K维向量。

式中的交叉项

$$\begin{align}\sum_{i=1}^{n-1}\sum_{j=1}^{n}w_{ij}x_ix_j= &\frac{1}{2}\sum_{i=1}^{n}\sum_{i=1}^{n}v_i^Tv_jx_ix_j - \frac{1}{2}\sum_{i=1}^{n}v_i^Tv_ix_ix_i\\ = & \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{K}v_{ik}v_{jk}x_ix_j - \frac{1}{2}\sum_{i=1}^{n}\sum_{k=1}^{K}v_{ik}^2x_i^2\\ =&\frac{1}{2}\sum_{k=1}^{K}((\sum_{i=1}^{n}v_{ik}x_i)^2-\sum_{i=1}^{n}(v_{ik}x_i)^2) \end{align}$$

可以看出只要\(x_i\)和\(x_j\)其中一个不为0,v就能得到学习。

2.FFM

引入域的概念,每个特征有一个对应的域,相同性质的特征归于同一个域,比如一个离散特征经过one-hot编码之后会产生的高维特征就属于同一个域,共需要学习的隐向量的数目为\(n*f\)。

$$y(x)=w_0+\sum_{i=1}^{n}w_ix_i + \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}v_{i,f_j}^Tv_{j,f_i}x_ix_j$$

猜你喜欢

转载自blog.csdn.net/Xafter0/article/details/81706549
FFM