title: Factorization Machines 因式分解机
date: 2018-03-28 10:01:12
tags: [Factorization Machines, 因式分解机]
categories: 机器学习
Factorization Machines 因式分解机原理
文章目录
1. 概述
在使用线性模型,例如LR模型时,特征工程是很大一块工作,有时为了产生较好的效果需要人工进行一些特征的二维或者三维交叉。FM(Factorization machines)提供了一种思路可以自动进行特征交叉,同时能够处理非常稀疏数据,线性时间复杂度,计算简单。
由于FM实现简单效果非常好,而且应用范围非常广,FM是近期非常火的技术,在比赛或者大公司都非常常见。
2. FM优势
FM能够解决的问题及优点1:
- FM能够解决分类和回归问题
- FM能够代替SVD、SVD++等进行矩阵分解
- FM可以处理非常稀疏数据,此时SVM等模型会失效
- FM线性时间复杂度,计算简单
- FM可表示性较强,FM将模型参数表示为K维向量,向量之间可以交叉运算,即使两个交叉特征没有对应训练数据,也能表示出权重。
3. 2维-FM
先回顾一下线性回归模型,其建模时采用的函数是:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat y({\rm{x}…
从方程中可以看出各特征分量
x
i
x_i
xi和
x
j
(
i
≠
j
)
x_j\ (i \ne j )
xj (i=j)之间是相互孤立的,该模型仅考虑单个的特征分量,没有考虑特征分量之间的相互关系。
在 ( 1 ) (1) (1)的基础上改写为:
y ^ ( x ) = ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ω i j x i x j (2) \hat y({\rm{x}}) = {\omega _0} + \sum\limits_{i = 1}^n {{\omega _i}{x_i}} + \sum\limits_{i = 1}^{n - 1} {\sum\limits_{j = i + 1}^n {{\omega _{ij}}{x_i}} {x_j}} \tag{2} y^(x)=ω0+i=1∑nωixi+i=1∑n−1j=i+1∑nωijxixj(2)
这样也将任意两个不同的特征向量之间的关系也考虑进来了。
但是,有一个问题就是,在稀疏数据中这种直接在 x i x j {x_i} {x_j} xixj前面配上一个系数 ω i j \omega_{ij} ωij的方式会有很大的缺陷。因为对于观察样本中未出现过交互的特征分量,不能对相应的参数进行估计2。
一定要注意的是,在高度稀疏数据场景中,由于数据量的不足,样本中出现未交互的特征分量是很普遍的。
为了克服这个缺陷,我们在(2)中的系数
ω
i
j
\omega_{ij}
ωij上做文章,将其换成另外一种形式。针对每个维度的特征分量
x
i
x_i
xi,引入辅助向量:
v
i
=
(
v
i
1
,
v
i
2
,
⋯
,
v
i
k
)
T
∈
R
k
,
i
=
1
,
2
,
⋯
,
n
{{\rm{v}}_i} = {({v_{i1}},{v_{i2}}, \cdots ,{v_{ik}})^T} \in {R^k},\ \ i = 1,2, \cdots ,n
vi=(vi1,vi2,⋯,vik)T∈Rk, i=1,2,⋯,n
其中
k
k
k为超参数,将(2)中的
ω
i
j
\omega_{ij}
ωij改写为:
ω
^
i
j
=
v
i
T
v
j
:
=
∑
l
=
1
k
v
i
l
x
j
l
{{\hat \omega }_{ij}} = {{\rm{v}}_i}^T{{\rm{v}}_j}: = \sum\limits_{l = 1}^k {{v_{il}}{x_{jl}}}
ω^ij=viTvj:=l=1∑kvilxjl
如此,我们可以获得FM的二维模型。
3.1 模型
对于2次特征交叉的FM模型可以表示为2:
y
(
x
)
=
w
0
+
∑
i
=
1
n
(
w
i
x
i
)
+
∑
i
=
1
n
−
1
∑
j
=
i
+
1
n
(
<
v
i
,
v
j
>
x
i
x
j
)
(3)
y(x)=w_0+\sum_{i=1} ^n(w_i x_i)+\sum_{i=1}^{n-1} \sum_{j=i+1}^n(<v_i,v_j>x_ix_j) \tag{3}
y(x)=w0+i=1∑n(wixi)+i=1∑n−1j=i+1∑n(<vi,vj>xixj)(3)
其中模型参数有
w
0
w_0
w0为截距,
w
i
w_i
wi为一维特征权重,
v
i
v_i
vi为每一维度特征的分布式表示,也即
w
0
w_0
w0为整体偏置量,
W
W
W对特征向量的每个分量的强度进行建模,
V
V
V对特征向量中任意两个分量之间的关系进行建模。
其中特征交叉权重计算为:
<
v
i
,
v
j
>
=
∑
f
=
1
k
v
i
,
f
v
j
,
f
(3.1)
<v_i,v_j>=\sum_{f=1}^k v_{i,f}v_{j,f} \tag{3.1}
<vi,vj>=f=1∑kvi,fvj,f(3.1)
3.2 二维-FM计算复杂度
如果对式子(1)直接进行计算,那么其复杂度是
O
(
k
n
2
)
O(kn^2)
O(kn2),但是我们可以通过简单的数学变换将其转化为
O
(
k
n
)
O(kn)
O(kn),由于前面两项的计算复杂度都是
O
(
k
n
)
O(kn)
O(kn),所以我们只需要对第三项进行处理3:
∑
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
)
(2)
\begin{aligned} \sum_{i=1}^n \sum_{j=i+1}^n(<v_i,v_j>x_ix_j) &= \frac12 \sum_{i=1}^n \sum_{j=1}^n(<v_i,v_j>x_ix_j) - \frac12 \sum_{i=1}^n<v_i,v_i>x_ix_i\\ & =\frac12(\sum_{i=1}^n \sum_{j=1}^n\sum_{f=1}^k(v_{i,f}v_{j_f}x_ix_j)-\sum_{i=1}^n\sum_{f=1}^k(v_{i,f}v_{i,f}x_ix_i)) \\ & = \frac12\sum_{f=1}^k((\sum_{i=1}^nv_{i,f}x_i)(\sum_{j=1}^nv_{j,f}x_j)-\sum_{i=1}^nv_{i,f}^2x_i^2) \\ & = \frac12\sum_{f=1}^k((\sum_{i=1}^nv_{i,f}x_i)^2-\sum_{i=1}^nv_{i,f}^2x_i^2) \end{aligned} \tag{2}
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∑k(vi,fvjfxixj)−i=1∑nf=1∑k(vi,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)(2)
相当于特征分布式表示中每一维度和特征进行求和平方和平方求和相减。
3.2 二维-FM的梯度计算
采用SGD进行模型计算 :
∂
∂
θ
y
(
x
)
=
{
1
,
i
f
θ
i
s
ω
0
x
i
,
i
f
θ
i
s
ω
i
x
i
∑
j
=
1
n
v
j
,
f
x
j
−
v
i
,
f
x
i
2
,
i
f
θ
i
s
ν
i
,
f
(3)
\frac{\partial }{{\partial \theta }}y(x) = \left\{ {\begin{aligned} {1,}&{{\rm{if }}\ \theta \ {\rm{is}}\ {\omega _0}}\\ {{x_i},}&{{\rm{if }}\ \theta\ {\rm{is}}\ {\omega _i}}\\ {{x_i}\sum\limits_{j = 1}^n {{v_{j,f}}} {x_j} - {v_{i,f}}x_i^2,}&{{\rm{if }}\ \theta \ {\rm{is}}\ {\nu _{i,f}}} \end{aligned}} \right.{\rm{ }} \tag{3}
∂θ∂y(x)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1,xi,xij=1∑nvj,fxj−vi,fxi2,if θ is ω0if θ is ωiif θ is νi,f(3)
基于随机梯度的方式求解4:
4. FM应用
在很多应用中,FM可以取代常用模型并且能够取得不错效果,例如
- FM - SVM,能够处理稀疏特征
- FM - MF
- FM - SVD++
- FM - PITF
- FM - FPMC
具体可以参考论文介绍。