1.摘要
在本文中,我们介绍了一种新的模型因子分解机(FM),它结合了支持向量机(SVM)和分解模型的优点。与SVM一样, FM模型是一种能处理任何实值特征向量的通用预测器。 与SVM相比,FMs利用因式分解对变量之间的关系进行建模。 因此,FMs可以在大量稀疏特征中进行特征交叉关系的估计。 FM模型可以在线性时间内求解,因此FMs可以进行直接的优化。 所以,不像非线性的SVM,不需要进行对偶变换,FM模型的参数可以直接的进行估计,不需要用到支持向量。 本文展示了与 SVM 的关系以及 FM 在数据稀疏的情况下进行参数估计的优势。
另外,有许多因式分解模型如矩阵分解,并行因子分析如SVD++,PITF,FPMC。 这些方法的缺点是通用性不好,只对特殊的输入数据有用。 优化方法对于不同的任务也各不相同。FM 可以通过指定输入数据(即特征向量)来模仿这些模型。这就使得FMs非常的易用,甚至可以不需要因式分解分解模型的专业知识都可以。
- FM是一种新的模型, 可以处理任何实值特征向量的预测器
- FMs可以在大量稀疏特征中进行特征交叉关系的估计 胜过LR模型, 因为LR模型只是一个线性模型
- FM模型可以在线性时间内求解
- FM胜过SVM的地方在于可以用于非常稀疏的Features, 但是SVM更适用于Dense Feature
2.引言
支持向量机是机器学习和数据挖掘中最流行的预测器之一。 然而在协同过滤的场景中,SVM并没有发挥重要作用,最好的模型要么直接使用矩阵的因式分解或者使用特定的因式分解参数。 在本文中得到 SVM之所以在这些任务中表现不好,是因为SVM在复杂的非线性的稀疏的核空间中很难找到一个可靠的分割超平面。 而张量分解模型的缺点在于(1)不用应用于标准的预测数据(2)不同的任务需要专门的模型设计和学习算法。
在本文中,我们介绍了一个新的预测器,Factorization Machine(FM),是一种类似SVM的通用预测模型,但是可以在非常稀疏的数据中估计出可靠的参数。FM对所有变量的相互关系进行建模(对比SVM的多项式核),但是利用了因式分解的参数,而不是像SVM一样使用了稠密的参数。我们展示了,模型的表达式可以在线性时间内求解,而且只依赖与线性数量的参数。这就允许了直接进行优化和存储模型的参数,而不需要存储任何的训练数据(SVM是需要存储支持向量)。非线性的 SVM通常使用对偶形式进行求解,而且会使用到支持向量。我们也证明了在协同过滤的业务上FMs比许多很成功的模型如带偏置的MF,SVD++,PITF,FPMC等都好。
总的来说,我们提出的FM的优点有:
1)FMs可以在非常稀疏的数据上进行参数估计。
2)FMs的复杂度是线性的,方便优化,不像SVM需要依赖支持向量。 我们证明FM可以扩展应用在大
数据集上,例如有1亿训练样例的Netflix数据集。
3)FMs是通用的预测模型,可以适用于任意的实值的特征向量。 与此相反,其他先进的分解模型只
在特定输入数据的情况下起作用。我们将通过定义输入数据的特征向量来证明这一点,FM可以模仿其
他最先进的模型例如带偏置项的MF,SVD++,PITF以及FPMC模型。
FM为人称道的也正是这一点,既引入了特征交叉,又解决了复杂度以及模型参数的问题.
FM的优点:
- FMs可以在非常稀疏的数据上进行参数估计
- FMs的复杂度是线性的,方便优化,不像SVM需要依赖支持向量。
- FMs是通用的预测模型,可以适用于任意的实值的特征向量。
FM的缺点
- 每个特征只引入了一个隐向量,不同类型特征之间交叉没有区分性。FM模型正是以这一点作为切入进行改进。
- 虽然考虑了特征的交叉,但是表达能力仍然有限,不及深度模型;
3.在稀疏数据下进行预测
最常见的预测任务是估计一个预测的函数 y : R n → T y:R^n→T y:Rn→T,从一个实数向量 x ∈ R n x∈R^n x∈Rn到目标T(如果是回归任务 T = R T=R T=R,如果是分类任务T={+,−})。在监督学习中,假设有个给定 y y y值的样本训练数据集 D = ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … D={(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),…} D=(x(1),y(1)),(x(2),y(2)),…。在排序任务中,拥有目标值 T = R T=R T=R的函数 y y y可用于对特征向量 x x x的评分, 并根据分数进行排序。评分函数可以通过成对的数据进行训练,当一个样本组合 ( x ( A ) , x ( B ) ) ∈ D (x^{(A)},x^{(B)})∈D (x(A),x(B))∈D表示 x ( A ) x^{(A)} x(A)应该排在 x ( B ) x^{(B)} x(B)的前面。由于成对数据是反对称的,因此可以直接使用正的实例。
在本文中,我们要解决的问题是数据的稀疏问题,也就是说在 x x x向量中,几乎所有元素 x i x_i xi 都为零。令 m ( x ) m(x) m(x)表示特征向量 x x x中非0元素的个数, m ‾ D \overline{m}_D mD表示所有特征向 x ∈ D x∈D x∈D的非零元素个数 m ( x ) m(x) m(x)的平均值。在实际情况下是高稀疏性的数据是非常常见的,如文本分析和推荐系统的数据。高稀疏性难处理的的一个原因是在处理超多的类别型变量。
例1 假设我们有个电影评分系统的交互数据。系统记录了用户 u ∈ U u∈U u∈U 在特定的时间 t ∈ R t∈R t∈R对电
影
i
∈
I
i∈I
i∈I的评分
r
∈
1
,
2
,
3
,
4
,
5
r∈{1,2,3,4,5}
r∈1,2,3,4,5。用户
U
U
U和电影
I
I
I为:
U
=
A
l
i
c
e
(
A
)
,
B
o
b
(
B
)
,
C
h
a
r
l
i
e
(
C
)
,
.
.
.
I
=
T
i
t
a
n
i
c
(
T
I
)
,
N
o
t
t
i
n
g
H
i
l
l
(
N
H
)
,
S
t
a
r
W
a
r
s
(
S
W
)
,
S
t
a
r
T
r
e
k
(
S
T
)
,
.
.
.
\begin {align} & U={Alice(A),Bob(B),Charlie(C),...} \\ & I={Titanic(TI),NottingHill(NH),StarWars(SW),StarTrek(ST),...} \end {align}
U=Alice(A),Bob(B),Charlie(C),...I=Titanic(TI),NottingHill(NH),StarWars(SW),StarTrek(ST),...
设观测数据
S
S
S表示:
任务是使用这些数据,估计一个函数 y ^ \hat y y^,函数能够预测一个用户在某个时间对某个电影的评分。
图1展示了在这个任务中如何从观测数据S中构建特征向量。 首先 ∣ U ∣ |U| ∣U∣是一个活跃用户的二值变量(蓝色的),总是可以确定的是在一次交互 S ( u , i , t , r ) ∈ S S(u,i,t,r)∈S S(u,i,t,r)∈S中有一个确定的活跃用户。 例如,第一行中的Alice ( x A ( 1 ) = 1 ) (x^{(1)}_A=1) (xA(1)=1)。 下一个二值示性变量 ∣ I ∣ |I| ∣I∣(红色的)表示活跃的物品,同样的总是有一个活跃的物品,例如( x T I ( 1 ) = 1 x^{(1)}_{TI}=1 xTI(1)=1)。 图1中的特征向量也包含了用来表示用户曾经评价过的其他物品的表示向量(黄色的)。 对于每个用户来说,变量均是被归一化之后的。例如Alice评价过Notting Hill和 Star Wars。 此外,样本还包含一个从2019年一月开始的月份向量(绿色的)来表示时间。 最后几列表示用户评价过的最后一个电影,最右边的是当前电影的评分y。在第五部分,我们将展示因式分解机是如何利用输入数据中的特征向量来做到最先进的因式分解模型。
我们将通过这篇论文用这个示例数据集来证明。然而FMs是一个像SVMs一样的通用模型,可以应用在任何一个现实中的特征向量,并不限于推荐系统。
- 高稀疏性难处理的的一个原因是在处理超多的类别型变量。
- FM主要是解决稀疏数据下的特征组合问题,并且其预测的复杂度是线性的,对于连续和离散特征有较好的通用性。
4.因式分解机(FM)
在这一部分,我们将来介绍因式分解机。我们会详细地讨论模型中的公式推导,并且会展示怎么使用FMs进行多预测任务。
A. 因式分解模型
1)模型方程:2-维的因式分解机模型方程:
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
(
1
)
\hat y(x) := w_0 + \sum^n_{i=1}w_ix_i+\sum^n_{i=1}\sum^n_{j=i+1}\langle \bold v_i,\bold v_j\rangle x_ix_j \qquad (1)
y^(x):=w0+i=1∑nwixi+i=1∑nj=i+1∑n⟨vi,vj⟩xixj(1)
公式中的模型参数必须在下面的值域中进行估计:
w
o
∈
R
,
w
∈
R
n
,
V
∈
R
n
×
k
(
2
)
w_o \in R, \quad \bold w \in R^n, \quad V\in R^{n×k} \qquad (2)
wo∈R,w∈Rn,V∈Rn×k(2)
其中
⟨
⋅
,
⋅
⟩
⟨⋅,⋅⟩
⟨⋅,⋅⟩表示长度为
k
k
k的点乘,
k
k
k是一个超参数:
⟨
v
i
,
v
j
⟩
:
=
∑
f
=
1
k
v
i
,
f
⋅
v
j
,
f
(
3
)
\langle \bold v_i, \bold v_j \rangle := \sum^k_{f=1}v_{i,f}·v_{j,f}\qquad (3)
⟨vi,vj⟩:=f=1∑kvi,f⋅vj,f(3)
V中的行向量
v
i
v_i
vi表示第k个因子的第i个变量。
k
∈
N
0
+
k∈N^+_0
k∈N0+是定义分解维度的参数。
一个2阶的FM模型能获取所有的单个特征和两个交叉特征的相互关系:
-
w 0 w_0 w0是全局偏置项
-
w i w_i wi是模型中第i个变量的权重
-
w ^ i , j : = < v i , v j > \hat w_{i,j} := <v_i, v_j> w^i,j:=<vi,vj> 表示 模型中第i个变量和第j个变量之间的交互项。 FM 不是为每个交互特征使用单一特征的模型参数 w i , j ∈ R w_{i,j} \in R wi,j∈R,而是通过不同特征交叉进行分解来建模。这是允在稀疏性下对高阶交互(d≥2)进行可靠参数估计的关键点。
-
表达能力: 对于正定矩阵 W \bold W W,如果 k k k足够大,存在矩阵 V \bold V V,使得 W = V ⋅ V T W=V⋅V^T W=V⋅VT。
当 k k k足够大的时,FM能够表达任何交互矩阵 W \bold W W。然而对于稀疏的情况,应该选择一个比较小的 k k k,因为没有足够的数据去预测一个复杂的 W \bold W W。 控制 k k k的大小,限制FM的表达能力,能够提高稀疏情况下的预测交互矩阵的泛化能力。 -
稀疏情况下的参数估计: 在稀疏情况下,通常没有足够的数据进行直接的参数估计。
FM模型可以进行稀疏的估计,甚至在稀疏的情况下可以估计的很好,这是因为它打破了交互项参数和因式分解之间的独立性。 总的来说是因为进行了因式分解之后,用来估计一个参数的数据也可以用来估计相关的另一个参数。 图1中的数据能论证这个观点。 假设我们想估计Alice(A)和Star Trek(ST)交互项的参数来预测目标值 y y y(这里是评分)。 很显然,在一个样本中,对于变量 x A , x S T x_A,x_{ST} xA,xST可能同时取值为0,如果直接进行估计的话,那将导致没有交互作用 ( w A , S T = 0 w_{A,ST} = 0 wA,ST=0)。 但是通过分解参数 ⟨ v A , v S T ⟩ ⟨v_A,v_{ST}⟩ ⟨vA,vST⟩的话,在这个案例中我们就可以直接进行估计了。 首先,Bob和 Charlie将具有相似的因子向量 v B v_B vB 和 v C v_C vC,因为两人都对Star Wars( v S W v_{SW} vSW) 的因子向量有交互来预测打分。即 ⟨ v B , v S W ⟩ ⟨v_B ,v_{SW}⟩ ⟨vB,vSW⟩和 ⟨ v C , v S W ⟩ ⟨v_C ,v_{SW}⟩ ⟨vC,vSW⟩相似。Alice( v A v_A vA) 与Charlie({ v C v_C vC}) 具有不同的因子向量,因为她与Titanic和 Star Wars的因子具有不同的交互作用来预测打分。接下来,Star Trek的因子向量很可能与_Star Wars_的因子向量相似,因为 Bob 在两部电影中都有相似的交互作用来预测 y y y。总而言之,这意味着 Alice和 Star Trek的因子向量的点积(即交互作用)将类似于 Alice 和 Star Wars 的点积——这在直觉上也是有意义的。
4)计算量: 接下来,我们展示如何让FMs变得实际可用。
前面提到的方程(1)的计算复杂度是
O
(
k
n
2
)
O(kn^2)
O(kn2),因为所有的变量都是两两交互。但是变换之后将会使其复杂度降低到线性的。
引理 3.1:分解机的模型方程(方程(1)可以在线性时间
O
(
k
n
)
O(kn)
O(kn) 内计算。
证明:由于变量两两相互作用的分解,没有单独取决两个变量的模型参数所有成对的交互项可以进行如下的变化:
∑
i
=
1
n
∑
j
=
i
+
1
n
⟨
v
i
,
v
j
⟩
x
i
x
j
=
1
2
∑
i
=
1
n
∑
j
=
1
n
⟨
v
i
,
v
j
⟩
x
i
x
j
−
1
2
∑
i
=
1
n
⟨
v
i
,
v
i
⟩
x
i
x
i
=
1
2
(
∑
i
=
1
n
∑
j
=
1
n
∑
f
=
1
k
v
i
,
f
v
j
,
f
x
i
x
j
−
∑
i
=
1
n
∑
f
=
1
k
v
i
,
f
v
i
,
f
x
i
x
i
)
=
1
2
∑
f
=
1
k
(
(
∑
i
=
1
n
v
i
,
f
x
i
)
(
∑
j
=
1
n
v
j
,
f
x
j
)
−
∑
i
=
1
n
v
i
,
f
2
x
i
2
)
=
1
2
∑
f
=
1
k
(
(
∑
i
=
1
n
v
i
,
f
x
i
)
2
−
∑
i
=
1
n
v
i
,
f
2
x
i
2
)
\begin{aligned} & \sum^n_{i=1}\sum^n_{j=i+1}\langle v_i,v_j \rangle x_ix_j &\ \\ & =\frac{1}{2}\sum^n_{i=1}\sum^n_{j=1}\langle v_i,v_j\rangle x_ix_j-\frac{1}{2}\sum^n_{i=1}\langle v_i,v_i\rangle x_ix_i \\ & =\frac{1}{2}(\sum^n_{i=1}\sum^n_{j=1}\sum^k_{f=1}v_{i,f}v_{j,f}x_ix_j-\sum^n_{i=1}\sum^k_{f=1}v_{i,f}v_{i,f}x_ix_i)\\ & =\frac{1}{2}\sum^k_{f=1}((\sum^n_{i=1}v_{i,f}x_i)(\sum^n_{j=1}v_{j,f}x_j)-\sum^n_{i=1}v^2_{i,f}x^2_i)\\ & =\frac{1}{2}\sum^k_{f=1}((\sum^n_{i=1}v_{i,f}x_i)^2-\sum^n_{i=1}v^2_{i,f}x^2_i) \end{aligned}
i=1∑nj=i+1∑n⟨vi,vj⟩xixj=21i=1∑nj=1∑n⟨vi,vj⟩xixj−21i=1∑n⟨vi,vi⟩xixi=21(i=1∑nj=1∑nf=1∑kvi,fvj,fxixj−i=1∑nf=1∑kvi,fvi,fxixi)=21f=1∑k((i=1∑nvi,fxi)(j=1∑nvj,fxj)−i=1∑nvi,f2xi2)=21f=1∑k((i=1∑nvi,fxi)2−i=1∑nvi,f2xi2)
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 = w 0 + ∑ i = 1 n w i x i + 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) 2 − ∑ i = 1 n v i , f 2 x i 2 ) \hat y(x) := w_0 + \sum^n_{i=1}w_ix_i+\sum^n_{i=1}\sum^n_{j=i+1}\langle \bold V_i,\bold V_j\rangle x_ix_j = w_0 + \sum^n_{i=1}w_ix_i+\frac{1}{2}\sum^k_{f=1}((\sum^n_{i=1}v_{i,f}x_i)^2-\sum^n_{i=1}v^2_{i,f}x^2_i) y^(x):=w0+i=1∑nwixi+i=1∑nj=i+1∑n⟨Vi,Vj⟩xixj=w0+i=1∑nwixi+21f=1∑k((i=1∑nvi,fxi)2−i=1∑nvi,f2xi2)
以上的公式的结果仅仅有线性的计算复杂度,当 k k k和 n n n固定的时候,计算复杂度就为 O ( k n ) O(kn) O(kn)。
此外,在稀疏情况下, x x x 中的大多数元素都是 0(即 m ( x ) m(x) m(x) 很小),因此,只需要在非零元素上计算总和。 因此在稀疏数据中因式分解机的计算复杂度就在 O ( k m ‾ D ) O(k\overline{m}D) O(kmD),当 m ‾ D = 2 \overline{m}_D=2 mD=2时就是一个经典的推荐系统,例如MF算法(参见 V-A 节)。
首先了解 对称 矩阵上三角求和,设矩阵为 M M M :
其中, m i j = m j i m_{ij} = m_{ji} mij=mji。
令上三角元素和为 A A A, 即 ∑ i = 1 n − 1 ∑ j = i + 1 n m i j = A \sum^{n-1}_{i=1}\sum^{n}_{j=i+1}m_{ij}=A ∑i=1n−1∑j=i+1nmij=A, 那么 M M M的所有元素之和等于
2 ∗ A + t r ( M ) , t r ( M ) 2*A +tr(M), tr(M) 2∗A+tr(M),tr(M)为矩阵的迹。
∑ i = 1 n ∑ j = 1 n m i j = 2 ∗ ∑ i = 1 n − 1 ∑ j = i + 1 n m i j + ∑ i = 1 n m i i \sum^{n}_{i=1}\sum^{n}_{j=1}m_{ij}=2*\sum^{n-1}_{i=1}\sum^{n}_{j=i+1}m_{ij}+\sum^n_{i=1}m_{ii} i=1∑nj=1∑nmij=2∗i=1∑n−1j=i+1∑nmij+i=1∑nmii
可得:
A = ∑ i = 1 n − 1 ∑ j = i + 1 n m i j = 1 2 ∗ { ∑ i = 1 n ∑ j = 1 n m i j − ∑ i = 1 n m i i } A=\sum^{n-1}_{i=1}\sum^{n}_{j=i+1}m_{ij}=\frac{1}{2} * \{\sum^{n}_{i=1}\sum^{n}_{j=1}m_{ij}-\sum^n_{i=1}m_{ii}\} A=i=1∑n−1j=i+1∑nmij=21∗{i=1∑nj=1∑nmij−i=1∑nmii}
- 普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。 实际上,特征之间可能具有一定的关联
- 以新闻推荐为例,一般男性用户看军事新闻多,而女性用户喜欢情感类新闻,那么可以看出性别与新闻的频道有一定的关联性
- 在数据稀疏的情况下,满足交叉项不为0的样本将非常少,当训练样本不足时,很容易导致参数 w i j w_{ij} wij 训练不充分而不准确,最终影响模型的效果。
- 引入隐向量的好处:
- 二阶项的参数量由原来的 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1) 降为 k n kn kn 。
- 原先参数之间并无关联关系,但是现在通过隐向量可以建立关系。如,之前 w i j w_{ij} wij 与 w i k w_{ik} wik 无关,但是现在 w i j = ⟨ V i , V j ⟩ w_{ij}=\langle \bold V_i, \bold V_j\rangle wij=⟨Vi,Vj⟩, w i k = ⟨ V i , V k ⟩ w_{ik}=\langle \bold V_i, \bold V_k\rangle wik=⟨Vi,Vk⟩ 两者有共同的 V i \bold V_i Vi ,也就是说,所有包含 x i x j x_ix_j xixj的非零组合特征(存在某个 j ≠ i j≠i j=i ,使得 x i x j ≠ 0 x_ix_j≠0 xixj=0 )的样本都可以用来学习隐向量 V i \bold V_i Vi ,这很大程度上避免了数据稀疏性造成的影响
B 使用因式分解机进行预测
FM模型可以用在各种预测任务中:
-
回归: y ^ ( x ) \hat y(x) y^(x)直接进行预测,在数据集 D \bold D D上使用最小均方误差进行优化。
-
二分类:使用合页损失或者对数几率损失进行优化。
-
排序: 向量 x x x按照预测的分数( y ^ ( x ) \hat y(x) y^(x))进行排序,可以通过成对实例 ( x ( a ) , x ( b ) ) (x^{(a)}, x^{(b)}) (x(a),x(b))的分类损失进行优
化。
在上面所有的情况下,都可以使用L2的正则化来防止过拟合。
- FM既可以应用在回归任务,也可以应用在分类任务中。
- 关于模型最终的损失函数同样可以有多种形式,如回归任务可以使用均方误差 ,分类任务可以使用交叉熵 等。
C 因式分解机的学习
FMs模型通过一些处理使其计算复杂度达到线性的。 因此,FMs的参数
(
w
0
,
w
a
n
d
V
)
(w_0,\bold w\ and \bold V)
(w0,w andV)可以通过梯度下降的方式求解,例如随机梯度下降法(SGD)–用于各种损失函数,其中包括平方、logit或合页损失。FM模型的梯度是:
∂
∂
θ
y
^
(
x
)
=
{
1
,
i
f
θ
i
s
w
0
x
i
,
i
f
θ
i
s
w
i
(
4
)
x
i
∑
j
=
1
n
v
j
,
f
x
j
−
v
i
,
f
x
i
2
,
i
f
θ
i
s
v
i
,
f
\frac{\partial}{\partial\theta} \hat y(x) = \begin{cases} 1, \qquad\qquad\qquad\qquad\quad\qquad if\ \theta\ is\ w_0 \\[2ex] x_i, \qquad\qquad\qquad\qquad\qquad\quad if\ \theta\ is\ w_i \qquad\qquad (4)\\[2ex] x_i\sum^n_{j=1}v_{j,f}x_j-v_{i,f}x_i^2, \qquad if\ \theta\ is\ v_{i,f} \end{cases}
∂θ∂y^(x)=⎩
⎨
⎧1,if θ is w0xi,if θ is wi(4)xi∑j=1nvj,fxj−vi,fxi2,if θ is vi,f
其中,求和项
∑
j
=
1
n
v
j
,
f
x
j
\sum^n_{j=1}v_{j,f}x_j
∑j=1nvj,fxj是和i无关的,可以预先求出来(例如:在计算
y
^
(
x
)
\hat y(x)
y^(x))。总的来说,每个梯度都可以在
O
(
1
)
O(1)
O(1)时间内求解。对于给定案例
(
x
,
y
)
(\bold x,y)
(x,y)整体参数更新时间
O
(
k
n
)
O(kn)
O(kn),在数据稀疏的情况下则为
O
(
k
m
(
x
)
)
O(km(\bold x))
O(km(x))。
D d阶的因式分解机
2阶的因式分解机可以很容易的推广到d阶:
y
^
(
x
)
:
=
w
0
+
∑
i
=
1
n
w
i
x
i
+
∑
l
=
2
d
∑
i
1
=
1
n
.
.
.
∑
i
l
=
i
l
−
1
+
1
n
(
∏
j
=
1
l
x
i
j
)
(
∑
f
=
1
k
l
∏
j
=
1
l
v
i
j
,
f
(
l
)
)
(
5
)
\hat y(x) := w_0 + \sum^n_{i=1}w_ix_i\ +\ \sum^d_{l=2}\sum^n _{i_1=1}...\ \sum^n_{i_{l}=i_{l-1}+1}\Big(\prod^l_{j=1}x_{i_j}\Big)\Big(\sum^{k_l}_{f=1}\prod^l_{j=1}v^{(l)}_{{i_j},f}\Big) \qquad\qquad (5)
y^(x):=w0+i=1∑nwixi + l=2∑di1=1∑n... il=il−1+1∑n(j=1∏lxij)(f=1∑klj=1∏lvij,f(l))(5)
其中,第
l
l
l个相互关系参数可以通过PARAFAC模型进行因式分解:
V
(
l
)
∈
R
n
×
k
l
,
k
l
∈
N
0
+
(
5
)
V^{(l)} \in R^{n×k_l},\ k_l\in N^+_0 \qquad\qquad (5)
V(l)∈Rn×kl, kl∈N0+(5)
公式5的时间复杂度为
O
(
k
d
n
d
)
O(k_dn^d)
O(kdnd), 使用与引理 3.1 中相同的论点,它也可以在线性时间内计算。
E 总结
FM模型用因子分解交叉而不是直接完全参数化来对特征向量 x 中的值之间的所有可能的交互进行建模。这有两个主要优点:
1). 可以在稀疏的情况下进行可靠的参数估计,特别是可以估计没有观测到的相互关系。
2). 参数的数量以及预测和学习的时间是线性的。 使得使用 SGD 进行直接优化,并允许针对各种损失函数进行优化。
在本文的其余部分,我们将展示分解机和支持向量机之间的关系,以及矩阵、张量和专用分解模型。
5.FMs vs. SVMs
A SVM模型
SVM可以表示成变换后的特征向量
x
\bold x
x和参数
w
\bold w
w的点积的形式:
y
^
(
x
)
=
⟨
ϕ
(
x
)
,
w
⟩
\hat y(x)= \langle\phi(\bold x), \bold w \rangle
y^(x)=⟨ϕ(x),w⟩, 其中
ϕ
\phi
ϕ是将特征空间
R
n
R^n
Rn映射到一个更复杂的空间
F
F
F。这个映射通常使用核函数来进行:
K
:
R
n
×
R
n
→
R
,
K
(
x
,
z
)
=
⟨
ϕ
(
x
)
,
ϕ
(
z
)
⟩
K:\ R^n \ ×\ R^n \rightarrow R,\quad K(\bold x,\bold z) = \langle \phi(\bold x), \phi(\bold z) \rangle
K: Rn × Rn→R,K(x,z)=⟨ϕ(x),ϕ(z)⟩
下面我们通过分析SVMs主要形式来讨论FM和SVM之间的关系。
1) 线性核
最简单的核函数就是线性核: K l ( x , z ) : = 1 + ⟨ x , z ⟩ K_l(\bold x, \bold z ) := 1+\langle \bold x, \bold z \rangle Kl(x,z):=1+⟨x,z⟩,对应的
映射就是
ϕ
(
x
)
:
=
(
1
,
x
1
,
⋯
,
x
n
)
\phi(\bold x):=(1,x_1,⋯,x_n)
ϕ(x):=(1,x1,⋯,xn)。因此线性核的SVM模型等式可以重写为:
y
^
(
x
)
:
=
w
0
+
∑
i
=
1
n
w
i
x
i
,
w
0
∈
R
,
w
∈
R
n
(
7
)
\hat y(x) := w_0 + \sum^n_{i=1}w_ix_i,\qquad w_0 \in R, \quad \bold w\in R^n\qquad\qquad(7)
y^(x):=w0+i=1∑nwixi,w0∈R,w∈Rn(7)
明显可以发现线性的SVM模型和FM为1阶的情况完全等效。
2) 多项式核
多项式的核函数可以让SVM模型去拟合更高维的变量交互项。可以定义:
K
l
(
x
,
z
)
:
=
(
⟨
x
,
z
⟩
+
1
)
d
K_l(\bold x, \bold z ) := (\langle \bold x, \bold z \rangle +1)^d
Kl(x,z):=(⟨x,z⟩+1)d。 例如当多项式为2阶的时候,对应如下的映射:
ϕ
(
x
)
:
=
(
1
,
2
x
1
,
.
.
.
,
2
x
n
,
x
1
,
.
.
.
,
x
n
2
,
2
x
1
x
2
,
.
.
.
,
2
x
1
x
n
,
2
x
2
x
3
,
.
.
.
,
2
x
n
−
1
x
n
)
(
8
)
\begin{align} &\phi(\bold x)\ :=(1,\ \sqrt{2}x_1,...,\ \sqrt{2}x_n,x_1,...,x^2_n,\\ &\sqrt{2}x_1x_2,...,\sqrt{2}x_1x_n,\ \sqrt{2}x_2x_3,..., \sqrt{2}x_{n-1}x_n ) \qquad\qquad (8) \end {align}
ϕ(x) :=(1, 2x1,..., 2xn,x1,...,xn2,2x1x2,...,2x1xn, 2x2x3,...,2xn−1xn)(8)
因此,多项式核函数的SVM模型等式可以重写为:
y
^
(
x
)
:
=
w
0
+
2
∑
i
=
1
n
w
i
x
i
+
∑
i
=
1
n
w
i
,
i
(
2
)
x
i
2
+
2
∑
i
=
1
n
∑
j
=
i
+
1
n
w
i
,
j
(
2
)
x
i
x
j
(
9
)
\hat y(x) := w_0 + \sqrt{2}\sum^n_{i=1}w_ix_i\ + \sum^n_{i=1}w^{(2)}_{i,i}x_i^2\ + \sqrt{2}\sum^n_{i=1}\sum^n_{j=i+1}w^{(2)}_{i,j}x_ix_j \qquad\qquad(9)
y^(x):=w0+2i=1∑nwixi +i=1∑nwi,i(2)xi2 +2i=1∑nj=i+1∑nwi,j(2)xixj(9)
其中模型的参数是:
w 0 ∈ R , w ∈ R n , W ( 2 ) ∈ R n × n w_0\in R, \ \bold w \in R^n, \ \bold W^{(2)} \in R^{n×n} w0∈R, w∈Rn, W(2)∈Rn×n(对称矩阵)
对比多项式核函数的SVM模型(公式9)和FM模型(公式1) , 可以发现两个模型交互项全部上升到了2维。 SVM 和 FM 之间的主要区别在于参数化: SVMs的所有交互项参数( w i , j w_{i,j} wi,j)之间是相互独立的(例如: w _ i , j w\_{i,j} w_i,j和 w _ i , l w\_{i,l} w_i,l)。 相反,对于FMs模型来说所有的交互项参数都是经过因式分解的,因此 ⟨ v i , v j ⟩ \langle v_i,v_j \rangle ⟨vi,vj⟩和 ⟨ v i , v l ⟩ \langle v_i,v_l \rangle ⟨vi,vl⟩依赖于各自交叉共享的参数( v i v_i vi)。
B 稀疏情况下的参数估计
下面解释一下为什么线性和多项式的SVM在稀疏的情况下表现不佳。 我们将使用用户和物品表征向量的数据来证明这个协同过滤的例子。 参见图 1 示例中的前两组(蓝色和红色)。 这里,特征向量是稀疏的,并且仅仅两个元素是非0的(活跃用户 u 和活跃物品 i)。
1) 线性SVM
对于这种数据x,线性的SVM模型等价于下面的等式:
y
^
(
x
)
=
w
0
+
w
u
+
w
i
(
10
)
\hat y(\bold x) = w_0\ +\ w_u\ + w_i \qquad\qquad\qquad(10)
y^(x)=w0 + wu +wi(10)
因为当且仅当
j
=
u
j=u
j=u 或者
j
=
i
j=i
j=i的时候
x
j
=
1
x_j=1
xj=1。 这个模型对应于一个最基础的协同过滤模型,即只有用户和物品的偏置项存在。 由于这个模型很简单,即使在稀疏的情况下也可以很好地估计参数。但是预测的效果却不好,见图2。
2) 多项式SVM
这种情况下,SVM可以获取高阶的相互关系(用户和物品)。在
m
(
x
)
=
2
m(\bold x)=2
m(x)=2的稀疏情况下,这时候SVMs模型的等式等价于:
y
^
(
x
)
=
w
0
+
2
(
w
u
+
w
i
)
+
w
u
,
u
(
2
)
+
w
i
,
i
(
2
)
+
2
w
u
,
i
2
\hat y(x) = w_0 + \sqrt{2}(w_u+w_i)+w^{(2)}_{u,u}+w^{(2)}_{i,i}+\sqrt{2}w^2_{u,i}
y^(x)=w0+2(wu+wi)+wu,u(2)+wi,i(2)+2wu,i2
首先,
w
u
w_u
wu和
w
u
,
u
(
2
)
w^{(2)}_{u,u}
wu,u(2)表达相同,可以去除其中一个(例如:
w
u
,
u
(
2
)
w^{(2)}_{u,u}
wu,u(2))。 现在模的等式就变成了线性的除了有一个额外的用户交叉项
w
u
,
i
(
2
)
w^{(2)}_{u,i}
wu,i(2)。 在经典的协同过滤(CF)问题中, 对于每个交叉项参数
w
u
,
i
(
2
)
w^{(2)}_{u,i}
wu,i(2), 训练数据中至少有一个观测样本
(
u
,
i
)
(u,i)
(u,i),而在测试数据中的案例
(
u
′
,
i
′
)
(u′,i′)
(u′,i′)就一般不会在训练数据及中再次出现了。 例如在图1中,只能观察到 (Alice, Titanic),而没有观察到 (Alice, Star Trek)。 这意味着对于所有的测试案例(u,i)的交叉项参数来说,最大边际解是0(例如:
w
A
,
S
T
(
2
)
=
2
w^{(2)}_{A,ST}=2
wA,ST(2)=2)。 多项式SVM对于二阶的交叉项来进行测试集预测没有任何作用。 所以多项式核的SVM模型仅仅依赖于用户和物品偏置项,在效果上并没有比线性的SVM好多少。
对于SVM模型,预估高阶交互不仅是在 CF 中存在的问题,而且在数据非常稀疏的所有场景中都表现也不佳。 因为对于一个成对的交叉项 ( i , j ) (i,j) (i,j)想要得到一个可靠的参数估计 w i , j ( 2 ) w^{(2)}_{i,j} wi,j(2)的话,必须提供足够多的样例 x ∈ D x \in D x∈D且 x i ≠ 0 x_i \neq 0 xi=0后者 x j ≠ 0 x_j \neq 0 xj=0。 只要不同时出现 x i = 0 , x j = 0 x_i=0,x_j=0 xi=0,xj=0,这个样例就可以用来进行参数估计。 总而言之,如果数据太稀疏,即 ( i , j ) (i,j) (i,j) 的案例太少甚至没有,SVM 很可能会失败。
C 总结
1)SVM的稠密的参数需要相互关系的直接的观测值,而在稀疏的输入的情况下,这种直接的观测值 很少。但是FMs模型就可以在稀疏的情况将进行很好的参数估计。
2)FMs可以直接进行学习,非线性的SVM通常在对偶形式进行求解。
3)FMs的函数不依赖与训练数据SVM的预测依赖部分训练数据(支持向量)。
6. FMs vs. 其他的因式分解模型
有多种分解模型,从用于分类变量的 m 元关系的标准模型(例如 MF、PARAFAC)到用于特定数据和任务的专用模型(例如 SVD++、PITF、FPMC)。我们展示了 FM 可以通过使用正确的输入数据(例如特征向量 x)来达到其中的许多模型的效果。
A.矩阵和张量分解
矩阵分解(MF)是研究最多的因子分解模型之一。它是分解了在两个分类变量之间的关系(例如
U
U
U和
I
I
I)。 标准处理分类变量的方法是为每个U和I级别定义二值的指标变量(例如见图1,第一个(蓝色)和第二个(红色)组):
n
:
=
∣
U
∪
I
∣
,
x
j
:
=
δ
(
j
=
i
∨
j
=
u
)
(
11
)
n := \lvert U \cup I \rvert, \ x_j := \delta(j=i\ \vee j=u) \qquad\qquad\qquad(11)
n:=∣U∪I∣, xj:=δ(j=i ∨j=u)(11)
使用这个特征向量
x
\bold x
x的FM模型与矩阵分解模型相同,因为
x
j
x_j
xj仅仅在当前u和i是非0的,所以其他的偏置项和交互项都可以舍去:
y
^
(
x
)
=
w
0
+
w
u
+
w
i
+
⟨
V
u
,
V
i
⟩
(
12
)
\hat y(\bold x) = w_0\ +\ w_u\ +\ w_i\ +\ \langle V_u, V_i \rangle \qquad\qquad\qquad(12)
y^(x)=w0 + wu + wi + ⟨Vu,Vi⟩(12)
同样的考虑,当有两个以上的分类变量的时候可以发现存在一样的问题,FM包括了一个嵌套并行因子分析模型(PARAFAC)。
B.SVD++
对于评分预测任务(即回归)来说,Koren将矩阵分解模型改进成了SVD++模型。FM模型就可以使
用下列的输入数据来模拟这个模型(就像图一中的前三组):
n
:
=
∣
U
∪
I
∪
L
∣
,
x
j
:
=
{
1
,
i
f
j
=
i
∨
j
=
u
1
∣
N
u
∣
,
i
f
j
∈
N
u
0
,
e
l
s
e
n := \lvert U \cup I \cup L \rvert, x_j:= \begin{cases} 1, \qquad if\ j=i\ \vee j=u \\ \frac{1}{\sqrt{|N_u|}},\quad if\ j\in N_u \\ 0, \qquad else \end{cases}
n:=∣U∪I∪L∣,xj:=⎩
⎨
⎧1,if j=i ∨j=u∣Nu∣1,if j∈Nu0,else
其中
N
u
N_u
Nu是当前用户曾经评论过的所有电影的集合。一个二维的FM模型将以如下方式处理这个数
据集:
y
^
(
x
)
=
w
0
+
w
u
+
w
i
+
⟨
v
u
,
v
i
⟩
+
1
∣
N
u
∣
∑
l
∈
N
u
⟨
v
u
,
v
l
⟩
⏞
S
V
D
+
+
+
1
∣
N
u
∣
∑
l
∈
N
u
(
w
l
+
⟨
v
u
,
v
l
⟩
+
1
∣
N
u
∣
∑
l
‘
∈
N
u
,
l
‘
>
l
⟨
v
l
‘
,
v
l
⟩
)
\hat y(x) = \overbrace{w_0+w_u+w_i+\langle \bold{v}_u, \bold{v}_i\rangle+\frac{1}{\sqrt{|N_u|}}\sum_{l\in N_u}\langle \bold{v}_u, \bold{v}_l\rangle}^{SVD++}\\+\frac{1}{\sqrt{|N_u|}}\sum_{l\in N_u} \Big(w_l+\langle \bold{v}_u, \bold{v}_l\rangle + \frac{1}{\sqrt{|N_u|}}\sum_{l^`\in N_u,l^`\gt l}\langle \bold{v}^`_{l}, \bold{v}_l\rangle\Big)
y^(x)=w0+wu+wi+⟨vu,vi⟩+∣Nu∣1l∈Nu∑⟨vu,vl⟩
SVD+++∣Nu∣1l∈Nu∑(wl+⟨vu,vl⟩+∣Nu∣1l‘∈Nu,l‘>l∑⟨vl‘,vl⟩)
其中第一部分(即第一行就等价于一个SVD++模型。但FM还包含一些额外的用户和电影
N
u
N_u
Nu之间的交互项,以及
N
u
N_u
Nu中电影对之间交互项。
C.PITF的标签推荐
标签预测的问题被定义为对于给定的用户和物品组合来排名标签。 这意味着有涉及三个分域:用户U,物品I和标签T 。 在关于标签推荐的ECML/PKDD的比赛中, 基于分解成对的交互项的模型(PITF)取得了最好成绩 。 我们将展示FM如何可以模仿这个模型。一个对于活动用户u,项目i和标签t有二值表示变量分解机的可写成以下模型:
n
:
=
∣
U
∪
I
∪
L
∣
,
x
j
:
=
δ
(
j
=
i
∨
j
=
u
∨
j
=
t
)
(
13
)
n := \lvert U \cup I \cup L \rvert, \ x_j := \delta(j=i\ \vee j=u\ \vee j=t) \qquad\qquad\qquad(13)\\
n:=∣U∪I∪L∣, xj:=δ(j=i ∨j=u ∨j=t)(13)
⇒ y ^ ( x ) = w 0 + w u + w i + w t + ⟨ v u , v i ⟩ + ⟨ v u , v t ⟩ + ⟨ v i , v t ⟩ \Rightarrow \hat y(x)=w_0+w_u+w_i+w_t+\langle \bold{v}_u, \bold{v}_i\rangle + \langle \bold{v}_u, \bold{v}_t\rangle + \langle \bold{v}_i, \bold{v}_t\rangle ⇒y^(x)=w0+wu+wi+wt+⟨vu,vi⟩+⟨vu,vt⟩+⟨vi,vt⟩
由于该模型用于在相同的用户/物品组合(u,i)内的两个标签
t
A
,
t
B
t_A,t_B
tA,tB之间进行排序的,两者都是始终致力于优化和预测案例
(
u
,
i
,
t
A
)
(u,i,t_A)
(u,i,tA) 和
(
u
,
i
,
t
B
)
(u,i,t_B)
(u,i,tB) 之间的得分差异。 因此对于成对排序的优化,FM模型等价于:
y
^
(
x
)
:
=
w
t
+
⟨
v
u
,
v
t
⟩
+
⟨
v
i
,
v
t
⟩
(
14
)
\hat y(x) := w_t + \langle v_u, v_t \rangle + \langle v_i, v_t \rangle \qquad\qquad (14)
y^(x):=wt+⟨vu,vt⟩+⟨vi,vt⟩(14)
现在二元值的原始PITF模型和FM模型几乎是相同的。 唯一的区别在于(1) FM模型对t具有偏差项
w
t
w_t
wt, (2)
(
u
,
t
)
−
(
i
,
t
)
(u,t)−(i,t)
(u,t)−(i,t)交叉项的标签之间的分解参数
(
v
t
)
(v_t)
(vt)在FM模型中是共享的,但是又不同于原始PITF模型。除了这个理论分析,图3显示了两种模型实现此任务预测的效果图。
D.分解个性化的马尔科夫链
FPMC模型基于用户u的最后一次购买(时间t-1)在线上商店进行商品排序。
再次用特征生成,一个二维的因式分解机可以来近似:
n
:
=
∣
U
∪
I
∪
L
∣
,
x
j
:
=
{
1
,
i
f
j
=
i
∨
j
=
u
1
∣
B
t
−
1
u
∣
,
i
f
j
∈
B
t
−
1
u
(
15
)
0
,
e
l
s
e
n := \lvert U \cup I \cup L \rvert, x_j:= \begin{cases} 1, \quad\quad\quad if\ j=i\ \vee j=u \\ \frac{1}{\sqrt{|B^u_{t-1}|}},\quad if\ j\in B^u_{t-1} \qquad\qquad (15)\\ 0, \qquad\quad else \end{cases}
n:=∣U∪I∪L∣,xj:=⎩
⎨
⎧1,if j=i ∨j=u∣Bt−1u∣1,if j∈Bt−1u(15)0,else
其中
B
t
u
⊆
L
B_t^u \subseteq L
Btu⊆L是一个用户u在时间t可购买的所有物品的集合,然后:
y
^
(
x
)
=
w
0
+
w
u
+
w
i
+
⟨
v
u
,
v
i
⟩
+
1
∣
B
t
−
1
u
∣
∑
l
∈
B
t
−
1
u
⟨
v
i
,
v
l
⟩
+
1
∣
B
t
−
1
u
∣
∑
l
∈
B
t
−
1
u
(
w
l
+
⟨
v
u
,
v
l
⟩
+
1
∣
B
t
−
1
u
∣
∑
l
‘
∈
B
t
−
1
u
,
l
‘
>
l
⟨
v
l
‘
,
v
l
⟩
)
\hat y(x) = w_0+w_u+w_i+\langle \bold{v}_u, \bold{v}_i\rangle+\frac{1}{\sqrt{|B^u_{t-1}|}}\sum_{l\in B^u_{t-1}}\langle \bold{v}_i, \bold{v}_l\rangle\\+\frac{1}{\sqrt{|B^u_{t-1}|}}\sum_{l\in B^u_{t-1}} \Big(w_l+\langle \bold{v}_u, \bold{v}_l\rangle + \frac{1}{\sqrt{|B^u_{t-1}|}}\sum_{l^`\in B^u_{t-1},l^`\gt l}\langle \bold{v}^`_{l}, \bold{v}_l\rangle\Big)
y^(x)=w0+wu+wi+⟨vu,vi⟩+∣Bt−1u∣1l∈Bt−1u∑⟨vi,vl⟩+∣Bt−1u∣1l∈Bt−1u∑(wl+⟨vu,vl⟩+∣Bt−1u∣1l‘∈Bt−1u,l‘>l∑⟨vl‘,vl⟩)
与标签推荐一样,这个模型被用来优化排名(这里是排序物品i),因此在预测和优化标准中仅使用
(
u
,
i
A
,
t
)
(u,i_A,t)
(u,iA,t)和
(
u
,
i
B
,
t
)
(u,i_B,t)
(u,iB,t)之间的评分存在差异。因此,所有额外的不依赖于i都可以去掉,FM模型的等式就相当于:
y
^
(
x
)
:
=
w
i
+
⟨
v
u
,
v
i
⟩
+
1
∣
B
t
−
1
u
∣
∑
l
∈
B
t
−
1
u
⟨
v
i
,
v
l
⟩
(
16
)
\hat y(x) := w_i + \langle v_u, v_i \rangle + \frac{1}{\sqrt{|B^u_{t-1}|}}\sum_{l\in B^u_{t-1}}\langle \bold{v}_i, \bold{v}_l\rangle\qquad\qquad\qquad (16)
y^(x):=wi+⟨vu,vi⟩+∣Bt−1u∣1l∈Bt−1u∑⟨vi,vl⟩(16)
现在可以看到原始的FPMC模型和FM模型几乎是相同的,仅在附加的偏置项
w
i
w_i
wi中有所不同,以及FM模型中的(u,i)和(i,l)交互项物品的分解参数的共享。
E.总结
1)标准分解模型,如PARAFAC或MF不是像因式分解机这样的通用预测模型。相反,他们需要特征向量被分成m个部分,每个部分都是精确的一个元素是1,其余元素是0。
2)有许多关于专业化因子分解的建议为单个任务设计的模型。我们已经证明了这一点,因式分解机可以模仿许多最成功的分解模型(包括MF,PARAFAC,SVD++,PITF,FPMC)只需通过特征提取即可,这使得FM在实践中很容易应用。
7.结论
在本文中,我们介绍了因式分解机。FMs融合了SVM模型的泛化能力以及因式分解模型的优势。不同于SVM模型,1)FMs可以在高稀疏的情况下进行参数估计,2)模型方程是线性的并且仅依赖于模型的参数,3)它们可以在原始等式中进行优化。FMs模型的解释力相当于多项式SVMs模型。不同于像PARAFAC这种张量因子分解模型,FMs是一个泛化的模型,它可以处理任何实值向量。再者,可以通过在输入特征向量中使用正确的表征来进行简化,FMs相对于其他特别高级的模型来说是更单一且非常简单的,不像那些模型仅仅只能应用在特定的任务重,例如MF, SVD++, PITF和FPMC。
8.思考
Q1:隐向量 V i \bold V_i Vi 就是embedding vector?
- 隐向量 V i \bold V_i Vi 实际上是一个向量组,其形状为(输入特征One-hot后的长度,自定义长度(嵌入向量的长度如k维));
- 隐向量 V i \bold V_i Vi 代表的并不是embedding vector,而是在对输入进行embedding vector的向量组,也可理解为是一个权重矩阵;
- 由输入 x i ∗ v i x_i*v_i xi∗vi得到的向量(维度为1*k)才是真正的embedding vector。
Q2:如何理解FM模型?
主要从两个角度理解FM:1.特征组合模型发展角度 2.从协同过滤模型发展角度
LR->SVM->FM
- LR: 简单,解释性强且易于扩展 但是需要大量的人工特征工程,非常耗时且人工密集。
- 多项式模型是包含特征组合最直观的模型。这个二阶特征组合相当于SVM的多项式核。
y ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j y(x) = w_0 + \sum^n_{i=1}w_ix_i + \sum^n_{i=1}\sum^n_{j=i+1}w_{ij}x_ix_j y(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑nwijxixj- 特征 x i x_i xi和 x j x_j xj 的组合采用 x i x j x_ix_j xixj表示,即 x i x_i xi 和 x j x_j xj 都非零时,组合特征 x i x j x_ix_j xixj 才有意义。
- n 代表样本的特征数量, x i x_i xi 是第 i 个特征的值, w 0 , w i , w i j w_0,w_i, w_{ij} w0,wi,wij是模型的参数。从上式可以看出,组合特征的参数共有 n ( n − 1 ) 2 \frac {n(n-1)}{2} 2n(n−1) 个,任意两个参数都是独立的。
- 在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是,每个参数 w i j w_{ij} wij 的训练需要大量 x i x_i xi和 x j x_j xj 都非零的样本;由于样本数据本来就比较稀疏,满足“ x i x_i xi和 x j x_j xj 都非零”的样本将会非常少。训练样本的不足,很容易导致参数 w i j w_{ij} wij不准确,泛化能力很差,最终将严重影响模型的性能。
- FM:引入任意两个特征的二阶特征组合, 与SVM最大的差异就在于特征组合权重的计算方法上
- 对于每一个特征,FM学习了一个大小为k的一维向量,使得两两特征 x i x_i xi和 x j x_j xj 的特征组合的权重由对应特征的内积表示。这与embedding的思路就非常相似了。
- FM可以看做一种embedding方法,实际上它只是缺少几层MLP的加持。
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 y(x) = w_0 + \sum^n_{i=1}w_ix_i + \sum^n_{i=1}\sum^n_{j=i+1} \langle \bold v_i, \bold v_j \rangle x_ix_j y(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑n⟨vi,vj⟩xixjQ:为什么FM能很好地处理稀疏数据,泛化能力强呢?
- 比如在SVM中,假如 x i x_i xi和 x j x_j xj 从来没有一起出现过, w i j w_{ij} wij就不能被学习出来,就一直是0。
- 在FM中,要学习的是单个特征的embedding,并不依赖与谁是否同时出现过,可以自己学习对应的embedding值。即使在train set里 x i x_i xi和 x j x_j xj 没同时出现过,在预测时你依然可以对 x i x_i xi和 x j x_j xj 这个特征组合进行预测,因为他们都各自有各自的embedding值。
MF->FM
- 本质上,前面文章说过,MF是一种降维方法,用于构建user和item的embedding,也叫latent vector。类似的方法也用在NLP的主题建模中。
- MF主要就是将评分矩阵进行分解,得到一个user的embedding和一个item的embedding。
- FM可以看做MF的扩展,处理user和item ID以外,还集成了其他的特征。
- 如果FM只用user和item ID,预测过程与MF是相同的。
FM与其他模型的关系
- FM与决策树
- CTR预测问题中的一个经典方法GBDT+LR,主要想利用决策树能够非常方便地做特征高阶组合的优势。
- 在用GBDT构造新的训练数据时,采用的也是One-Hot Encoding方法。并且由于每一弱分类器有且只有一个叶子节点输出预测结果,所以在一个有n个弱分类器、共计m个叶子结点的GBDT中,每一条训练数据都会被转换为1*m维稀疏向量,且有n个元素为1,其余m-n 个元素全为0。
- 决策树和SVM的问题一样,无法学习数据中不存在的模式。
- 当数据不高度稀疏时,组合模式的样本是足够的,可以比较有效地进行学习。当数据高度稀疏时,组合特征的学习就比较困难了,高阶的组合可能根本找不到样本。
FM与Deep learning
- FM的本质就是对高度稀疏的数据特征做embedding,比较最近几年发布的论文,只是缺少了几层MLP。
- Wide and deep模型的categorical特征转换成embeddings作为神经网络的输入来帮助学习不同阶的特征交叉。
- 将Google App推荐的wide部分换成FM得到DeepFM
Q3:FM模型能够解决冷启动问题吗,为什么?
应该是没办法解决冷启动问题的,比如在电商推荐系统中,没有过任何transaction行为的用户或商品就无法更新对应的embedding。
Q4:FM模型的k值一般取多少,为什么?
k值一般要通过效率和效果两个方向来衡量吧,要根据数据量来看,如果量数据量非常大(指的是user和item都很大),维度应无需太大,否则可以设的大一些增加embedding的表达能力
Q5:FM模型学习后,特征还是很稀疏,或者说权重很小,怎么处理?
在FM特征组合后,特征的权重依然非常小,其实没必要参与计算,可以用L1正则进行特征选择。
Q6:FM模型怎么做召回?
取出隐向量即可。