Factorization Machine

May 14, 2016


1. 符号定义

  • 稀疏训练集D:
  • 第i个数据点:
  • :数据点的不为0的feature数量
  • :D中的均值

2. 度为2的FM模型

度为2的预测函数 \begin{align} y = w_0 + \sum\limits_{i=1}^nw_ix_i + \sum\limits_{i=1}^n\sum\limits_{j=i+1}^n<v_i,v_j>x_ix_j \end{align}

式中的参数

\begin{align} w_0 \in R \quad w\in R \quad v_i,v_j \in R^K \end{align}

表示两个向量的点积

3. 度为2的FM模型的计算简化

\begin{align} \sum\limits_{i=1}^n\sum\limits_{j=i+1}^n<v_i,v_j>x_ix_j = &\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n<v_i,v_j>x_ix_j-\frac{1}{2}\sum\limits_{i=1}^n<v_i,v_i>x_ix_i \\ = &\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\sum\limits_{k=1}^Kv_{i,k}v_{j,k}x_ix_j-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{k=1}^Kv_{i,k}v_{i,k}x_ix_i \\ = &\frac{1}{2}\sum\limits_{k=1}^K\sum\limits_{i=1}^n\sum\limits_{j=1}^nv_{i,k}v_{j,k}x_ix_j-\frac{1}{2}\sum\limits_{k=1}^K\sum\limits_{i=1}^nv_{i,k}v_{i,k}x_ix_i \\ = &\frac{1}{2}\sum\limits_{k=1}^K \left( \left(\sum\limits_{i=1}^nv_{i,k}x_i\right)\left(\sum\limits_{j=1}^nv_{j,k}x_j\right)\right)-\frac{1}{2}\sum\limits_{k=1}^K\sum\limits_{i=1}^nv_{i,k}v_{i,k}x_ix_i \\ = &\frac{1}{2}\sum\limits_{k=1}^K \left(\sum\limits_{i=1}^nv_{i,k}x_i\right)^2-\frac{1}{2}\sum\limits_{k=1}^K\sum\limits_{i=1}^nv_{i,k}^2x_i^2 \end{align}

于是

\begin{align} y = w_0 + \sum\limits_{i=1}^nw_ix_i + \frac{1}{2}\sum\limits_{k=1}^K \left(\sum\limits_{i=1}^nv_{i,k}x_i\right)^2-\frac{1}{2}\sum\limits_{k=1}^K\sum\limits_{i=1}^nv_{i,k}^2x_i^2 \end{align}

上式的计算复杂度是O(Kn)

4. 梯度

\begin{align} \frac{\partial y}{\partial w_0} &= 1 \\ \frac{\partial y}{\partial w_{i\geq1}} &= x_i \\ \frac{\partial y}{\partial v_{i,k}}&= x_i\left(\sum\limits_{j=1}^nv_{j,k}x_j\right) - v_{i,k}x_i^2 \end{align}

5. 度为d的FM模型

\begin{align} y = w_0 + \sum\limits_{i=1}^nw_ix_i + \sum\limits_{l=2}^d\sum\limits_{i_1=1}^n…\sum\limits_{i_l=i_{l-1}+1}^n\left(\prod_{j=1}^lx_{i_j}\right)\left(\sum\limits_{k=1}^{K_l}\prod_{j=1}^lv^{(l)}_{i_j,k}\right) \end{align}