本文记录因子分析机FM算法的推导和理解笔记
论文地址
https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
二阶FM推导过程
FM在预测任务是考虑了不同特征之间的交叉情况, 以2阶的交叉为例:
y ^ ( x ) = w 0 + ∑ i = 1 n w i ∗ x i + ∑ i = 1 n ∑ j = i + 1 n W x i x j (1) \hat{y}(x)=w_0+\sum_{i=1}^{n}w_i*x_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}Wx_ix_j \tag{1} y^(x)=w0+i=1∑nwi∗xi+i=1∑nj=i+1∑nWxixj(1)
其中的 w 0 w_0 w0, w i w_i wi, W W W是模型需要学习的内容。由于在实际场景中, x i x_i xi, x j x_j xj都是维度很大并且稀疏的one-hot类型的向量,如果直接学习交叉项的权重 W W W很容易过拟合。
但是注意到 W W W应该是一个实对称的矩阵,由实对称矩阵理论的性质:
每个实对称矩阵 A A A可以分解成这样一种形式: A = Q Λ Q T A=Q\Lambda Q^T A=QΛQT ,其中 Λ \Lambda Λ为对角阵, Q Q Q为正交矩阵
进而 W W W可以被分解成 W = V V T W=VV^T W=VVT,其中 V ∈ R n × k V \in R^{n \times k} V∈Rn×k,所以式子(1)可以化成: 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 (2) \hat{y}(x)=w_0+\sum_{i=1}^{n}w_i*x_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n} \langle v_i, v_j \rangle x_ix_j \tag{2} y^(x)=w0+i=1∑nwi∗xi+i=1∑nj=i+1∑n⟨vi,vj⟩xixj(2)
v i v_i vi和 v j v_j vj可以用长度为 k k k的向量表示: ⟨ v i , v j ⟩ = ∑ f = 1 k v i , f ⋅ v j , f \langle v_i, v_j \rangle = \sum_{f=1}^{k}v_{i,f} \cdot v_{j,f} ⟨vi,vj⟩=∑f=1kvi,f⋅vj,f
所以有:
y ^ ( x ) = w 0 + ∑ i = 1 n w i ∗ x i + ∑ i = 1 n ∑ j = i + 1 n ∑ f = 1 k v i , f ⋅ v j , f x i x j (3) \hat{y}(x)=w_0+\sum_{i=1}^{n}w_i*x_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}\sum_{f=1}^{k}v_{i,f} \cdot v_{j,f}x_ix_j \tag{3} y^(x)=w0+i=1∑nwi∗xi+i=1∑nj=i+1∑n

本文详细解析了FM(Factorization Machines)算法,从二阶版本的理论推导入手,通过实对称矩阵分解降低计算复杂度,并介绍了反向传播求解方法,以及如何扩展到多阶模型。重点讲解了线性时间复杂度的实现策略。
最低0.47元/天 解锁文章
1287

被折叠的 条评论
为什么被折叠?



