FM演变过程:线性模型->二项式模型->FM模型
-
线性模型
f ( x ) = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . + ω n x n = ω 0 + ∑ i = 1 n ω i x i f(x) = \omega_0+\omega_1x_1+\omega_2x_2+...+\omega_nx_n=\omega_0+\sum_{i=1}^n{\omega_ix_i} f(x)=ω0+ω1x1+ω2x2+...+ωnxn=ω0+∑i=1nωixi -
二项式模型
f ( x ) = ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ω i j x i x j f(x)=\omega_0+\sum_{i=1}^n\omega_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n\omega_{ij}x_ix_j f(x)=ω0+∑i=1nωixi+∑i=1n−1∑j=i+1nωijxixj
考虑了任意2个特征分量之间的关系
但是,训练 ω i j \omega_{ij} ωij参数需要 x i x_i xi和 x j x_j xj同时不为0,但在特征非常稀疏的情况下,满足条件的样本数量特别少,所以该参数不能得到足够的训练,不准确。FM基于二项式模型做了改进
- FM模型
目标是要求 ω i j \omega_{ij} ωij,也就是:
W = ( ω 11 ω 12 . . . ω 1 n ω 21 ω 22 . . . ω 2 n ⋮ ⋮ ⋱ ⋮ ω n 1 ω n 2 . . . ω n n ) n × n W=\begin{pmatrix} \omega_{11} & \omega_{12}& ... &\omega_{1n}\\ \omega_{21} & \omega_{22}& ... &\omega_{2n}\\ \vdots &\vdots &\ddots & \vdots \\ \omega_{n1} & \omega_{n2}& ... &\omega_{nn}\\ \end{pmatrix}_{n\times n} W=⎝⎜⎜⎜⎛ω11ω21⋮ωn1ω12ω22⋮ωn2......⋱...ω1nω2n⋮ωnn⎠⎟⎟⎟⎞n×n
引入隐变量:
为每个特征维度
x
i
x_i
xi引进辅助向量:
V
i
=
(
v
i
1
,
v
i
2
,
v
i
3
,
.
.
.
,
v
i
k
)
T
∈
R
k
,
i
=
1
,
2
,
3
,
.
.
.
,
n
V_i = (v_{i1},v_{i2},v_{i3},...,v_{ik})^T\in \mathbb R^k, i=1,2,3,...,n
Vi=(vi1,vi2,vi3,...,vik)T∈Rk,i=1,2,3,...,n
V = ( v 11 v 12 . . . v 1 k v 21 v 22 . . . v 2 k ⋮ ⋮ ⋱ ⋮ v n 1 v n 2 . . . v n k ) n × k = ( V 1 T V 2 T ⋯ V n T ) V=\begin{pmatrix} v_{11} & v_{12}& ... &v_{1k} \\ v_{21} & v_{22}& ... &v_{2k} \\ \vdots &\vdots &\ddots &\vdots\\ v_{n1} & v_{n2}& ... &v_{nk} \\ \end{pmatrix}_{n\times k}=\begin{pmatrix} V_1^T\\ V_2^T\\ \cdots \\ V_n^T\\ \end{pmatrix} V=⎝⎜⎜⎜⎛v11v21⋮vn1v12v22⋮vn2......⋱...v1kv2k⋮vnk⎠⎟⎟⎟⎞n×k=⎝⎜⎜⎛V1TV2T⋯VnT⎠⎟⎟⎞
V V T = W VV^T = W VVT=W 也就是转换为求 V V V
FM模型即为:
$f(x) = \omega_0+\sum_{i=1}n\omega_ix_i+\sum_{i=1}{n-1}\sum_{j=i+1}n(V_iTV_j)x_ix_j $
v
i
v_i
vi对应
x
i
x_i
xi的k维embedding表示,FM可进一步表示为:
f
(
x
)
=
ω
0
+
∑
i
=
1
n
ω
i
x
i
+
∑
i
=
1
n
−
1
∑
j
=
i
+
1
n
<
v
i
,
v
j
>
x
i
x
j
f(x) = \omega_0+\sum_{i=1}^n\omega_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n<v_i,v_j>x_ix_j
f(x)=ω0+∑i=1nωixi+∑i=1n−1∑j=i+1n<vi,vj>xixj
其中:
∑ i = 1 n − 1 ∑ j = i + 1 n x i x j = 1 2 [ ( ∑ i = 1 n x i ) 2 − ∑ i = 1 n ( x i 2 ) ] \sum_{i=1}^{n-1}\sum_{j=i+1}^nx_ix_j = \frac{1}{2}[(\sum_{i=1}^nx_i)^2 - \sum_{i=1}^n(x_i^2)] ∑i=1n−1∑j=i+1nxixj=21[(∑i=1nxi)2−∑i=1n(xi2)]
∑
i
=
1
n
−
1
∑
j
=
i
+
1
n
<
v
i
,
v
j
>
x
i
x
j
=
1
2
∑
j
=
1
k
[
∑
i
=
1
n
(
v
i
,
j
x
i
)
2
−
∑
i
=
1
n
(
v
i
,
i
2
x
i
2
)
]
\sum_{i=1}^{n-1}\sum_{j=i+1}^n<v_i,v_j>x_ix_j = \frac{1}{2}\sum_{j=1}^k[\sum_{i=1}^n(v_{i,j}x_i)^2 - \sum_{i=1}^n(v_{i,i}^2x_i^2)]
∑i=1n−1∑j=i+1n<vi,vj>xixj=21∑j=1k[∑i=1n(vi,jxi)2−∑i=1n(vi,i2xi2)]
(详细推导过程)