FM 的 优点:
- 解决了特征稀疏的问题,能在非常系数数据的情况下进行预估。
- 解决了特征组合的问题,研究了特征与特征之间的向量,不像LR线性回归那样没有组合
- FM使一个通用模型,适用于大部分场景,而其他因式分解模型只能用于一些输入数据比较固定的情况
- 训练速度快,线性复杂度是线性的,优化效果很好
一般的线性回归:

考虑了特征组合:

缺点:复杂度太高,复杂度n^2,wij只能在xi,xj不同时为0的情况下训练,特征稀疏的情况下,大多数情况下xi,xj大多数情况下为0,训练不充分
FM的推导:
引入一个变量ViV_iVi,让ViV_iVi等于
Vi=(vi1,vi2,vi3,...,vik)T
V_i = (v_{i1},v_{i2},v_{i3},...,v_{ik})^T
Vi=(vi1,vi2,vi3,...,vik)T
所以当 i =1或者n时:
V1=(v11,v12,v13,...,v1k)T
V_1 = (v_{11},v_{12},v_{13},...,v_{1k})^T
V1=(v11,v12,v13,...,v1k)T
Vn=(vn1,vn2,vn3,...,vnk)T
V_n = (v_{n1},v_{n2},v_{n3},...,v_{nk})^T
Vn=(vn1,vn2,vn3,...,vnk)T
已知wijw_{ij}wij可以组成一个矩阵:
W=[w11w12...w1nw21w22...w2n⋮⋮⋱⋮wn1wn2...wnn]nn W = \begin{bmatrix}
w_{11} & w_{12}& ... & w_{1n}\\
w_{21} & w_{22}& ... & w_{2n}\\
\vdots & \vdots& \ddots & \vdots\\
w_{n1} & w_{n2}& ...& w_{nn}
\end{bmatrix} _{nn}
W=⎣⎢⎢⎢⎡w11w21⋮wn1w12w22⋮wn2......⋱...w1nw2n⋮wnn⎦⎥⎥⎥⎤nn
而ViV_iVi组成一个矩阵VVV:
V=[V1TV2T ⋮VnT]=[v11v12...v1kv21v22...v2k⋮⋮⋱⋮vn1vn2...vnk]nk
V = \begin{bmatrix}
{V_{1}}^T\\
{V_{2}}^T\\\
\vdots\\
{V_{n}}^T\\
\end{bmatrix} = \begin{bmatrix}
v_{11} & v_{12}& ... & v_{1k}\\
v_{21} & v_{22}& ... & v_{2k}\\
\vdots & \vdots& \ddots & \vdots\\
v_{n1} & v_{n2}& ...& v_{nk}
\end{bmatrix} _{nk}
V=⎣⎢⎢⎢⎡V1TV2T ⋮VnT⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡v11v21⋮vn1v12v22⋮vn2......⋱...v1kv2k⋮vnk⎦⎥⎥⎥⎤nk
所以可以有VVT=WVV^T = WVVT=W
所以可以得到一个FM的推导公式:

其中,点积可以写成

所以原公式又可以写成


复杂度只n, k有关,所以这个FM的复杂度是nk,是线性复杂度,相对较小
拓展,FFM
FM模型有效解决特征稀疏和组合问题,适用于多种场景,训练速度快,复杂度低。相较于线性回归,FM通过引入向量Vi改善了特征组合的考虑,避免了高复杂度和训练不足的问题。
8888

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



