[论文阅读]Factorization Machines

Factorization Machines

/ 2020-01 Howard Wonanut 推荐算法系列文章(1)

😀人工翻译幷包含部分个人理解,欢迎批评指正,但谢绝转载。

本文介绍因子分解机(FM),这是一种新的模型,它结合了支持向量机(SVM)和因式分解模型的优点。FM是一种通用预测器(与SVM一样),能够处理任何实值数。另外,其使用分解参数模拟变量之间的所有交互(原文:In contrast to SVMs, FMs model all interactions between variables using factorized parameters.)。因此,即使在SVM也无力回天的稀疏性(如推荐系统)问题中,FM模型也能胜任。本文证明了FM的模型方程可以在线性时间内完成计算

另一方面,有许多不同的因子分解模型,如矩阵分解;并行因子分析或专用模型,如SVD ++,PITF或FPMC。这些模型的缺点是它们不具有普遍适用性,仅适用于特殊输入数据。此外,他们的模型方程和优化算法也是针对特定任务的。FM仅通过指定输入数据(即特征向量)就可以模拟这些模型。这使得即使对于没有分解模型专业知识的用户,FM也很容易使用。

关键词:因子分解机;稀疏数据;张量因子化;支持向量机

1 FM模型基本介绍

SVM分类器是机器学习和数据挖掘领域的翘楚,但是其在协同过滤这样的推荐领域就无法继续称霸了,因为在这个领域的数据往往具有稀疏这个特点,SVM在稀疏数据中往往不能得到一个优秀的分类超平面。因此,FM模型就横空出世了,FM模型中文名叫作因子分解机(Factorization Machines),我看到这个名字是真的不知其意

FM模型的优点主要有三点:

  • FM能够在特征矩阵非常稀疏的情况下使用,完爆SVM
  • FM具有线性时间复杂度,可以在原始中进行优化,不用像SVM那样依赖支持向量。
  • FM是一种可以与任何实值特征向量一起使用的通用预测器
  • 支持特征组合(我加的)

2 使用稀疏数据做预测

在传统的监督学习问题中,假设给定训练集D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}D=\{(\bold{x}^{(1)},y^{(1)}),(\bold{x}^{(2)},y^{(2)}),...,(\bold{x}^{(m)},y^{(m)})\},其中y(i)y^{(i)}为标签。如果其为离散值,则常用该数据做分类任务,如果其为数值,则常用该数据做回归任务。同时,在排名问题(如推荐系统)中yy可以用来给特征向量x\bold{x}打分,并且根据分值对其进行排序。

本文中使用的数据是高度稀疏的,给定特征向量x\bold{x}中的绝大多数值xix_i都是0。做如下定义:

  • m(x)m(\bold{x}):特征向量x\bold{x}中特征不为0的个数;
  • mˉD\bar{m}_D:数据集DDm(x)m(\bold{x})的均值,其中任意xD\bold{x} \in D

极度稀疏的数据(mˉD<<n\bar{m}_D << n)在现实世界中很常见,如购物应用的推荐系统。如果有很多类别特征,每个类别特征有很多类,那么特征矩阵就会特别稀疏(如购物应用中的商品往往有上千种)。

🐒 举个栗子:
假如现在有一个电影评分系统,该系统记录用户uUu \in U在时间tRt \in \mathbb{R}给电影iIi \in I打分为r1,2,3,4,5r \in {1,2,3,4,5}。现给定用户列表UU和电影列表II为:
U=Alice(A),Bob(B),Charlie(C),... U={Alice(A), Bob(B), Charlie(C),...} I=Titanic(TI),NottingHill(NH),StarWars(SW),StarTrek(ST),... I={Titanic (TI), Notting Hill (NH), Star Wars (SW),Star Trek (ST), . . .}
部分评分操作数据SS为:S = {(A, TI, 2010-1, 5), (A, NH, 2010-2, 3), (A, SW, 2010-4, 1), (B, SW, 2009-5, 4), (B, ST, 2009-8, 5),(C, TI, 2009-9, 1), (C, SW, 2009-12, 5)}。

针对上面数据的一个简单的预测问题就是:预测某个一个用户在某个时间给某个电影的评分y^\hat{y}。数据SS将会被转化为下图所示的矩阵。
图1
每行表示目标y(i)y^{(i)}与其对应的特征向量 x(i)\bold{x}^{(i)} ;蓝色区域表示了用户变量;红色区域表示了电影变量,黄色区域表示了该用户曾经看过的电影,按照其看过的电影数归一化,使得其和为1;绿色区域表示投票月份(从2009年1月开始算);棕色区域表示了用户上一个评分的电影;最右边的区域是评分。

本文将以该数据集为例解释为什么FM比SVM好,到现在你应该明确:相比于SVM,FM是一个更加通用的预测模型,因此FM不仅能用于推荐系统,也能够在其他领域使用。

3 FM模型

3.1 模型推导

在这个部分,我们详细的介绍一下FM模型。普通的线性模型都是将各个特征独立考虑的,并没有考虑到特征之间的相互关系。但是实际上,特征之间可能具有一定的关联,比如男生更喜欢购买电子设备,女生更喜欢购买衣服化妆品。如果能找出这类的特征,是非常有意义的。

3.1.1 模型等式

为了简单起见,这里只考虑二阶交叉的情况(特征两两组合),对应的FM模型为:
y~(x)=w0+i=1nwixi+i=1nj=i+1nwijxixj \widetilde{y}(x)=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n\sum_{j=i+1}^n{w_{ij}x_ix_j} 其中,n代表样本的特征数量,xix_i是第i个特征的值,w0,wi,wijw_0,w_i,w_{ij}是模型参数,wijWw_{ij} \in W表示第ii个变量和第jj个变量的交互作用(interaction),只有当xix_ixjx_j都不为0时,交叉才有意义。

由于线代中有如下定义:
如果一个实对称矩阵AA正定,则AAEE合同,那么存在可逆矩阵CC,使得A=CTCA=C^TC

如果矩阵WW是正定矩阵,那么只要kk足够大,就存在VV使得W=VVTW=VV^T,其中VVn×kn\times k 的二维矩阵。因此可以将上面的式子转化为:
y~(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj \widetilde{y}(x)=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n\sum_{j=i+1}^n {\lt \bold{v}_i,\bold{v}_j \gt x_ix_j}
其中<,>\lt ·,·\gt表示维数为kk的向量的点乘,kk为超参数,决定因子分解的维度:
<vi,vj>:=f=1kvi,fvj,f \lt \bold{v}_i,\bold{v}_j \gt :=\sum_{f=1}^k{v_{i,f}·v_{j,f}} viV\bold{v}_i \in \bold{V}表示第ii个变量的kk个因子组成的向量。

不过在数据稀疏的情况下,应该选择较小的kk,因为可能没有足够的数据来估计矩阵WW。限制kk的大小能够使得FM模型更加通用,能够提高其泛化能力。

3.1.2 在数据稀疏的情况下进行参数估计

在数据稀疏的情况下,交互作用项wijw_{ij}对应的特征xix_ixjx_j的不为0的样本将非常少,当训练样本不足时,很容易导致参数 wijw_{ij}训练不充分而不准确,最终影响模型的效果。不过,FM模型能够克服这个困难,因为该模型通过分解打破了交互作用参数的独立性。这意味着一个交互作用项wijw_{ij}也会有助于估计与其相关的交互作用项的参数。

上面的话是真的难懂,基于上面的例子说明一下:

假如现在想要估计Alice(A)和Star Trek(ST) 的交互作用参数wA,STw_{A, ST},由于训练集中没有实例同时满足xAx_AxSTx_{ST}非零,因此会导致这两个特征之间没有交互(wA,ST=0w_{A,ST}=0)。但是如果使用了特征矩阵分解(factorized)获得了矩阵V\bold{V},我们可以通过求解<vA,vST><\bold{v}_A,\bold{v}_{ST}>求解wijw_{ij}

直接计算上面的公式求解y~(x)\widetilde{y}(x)的时间复杂度为O(kn2)O(kn^2),因为所有的特征交叉都需要计算。但是可以通过公式变换,将时间复杂度减少到线性复杂度,如下公式推导:
在这里插入图片描述

3.2 使用FM进行预测

FM算法可以应用在多种预测任务中,包括:

  • 回归:y^(x)\hat{y}(x)可以直接作为预测结果;
  • 二分类:sign(y^(x))sign(\hat{y}(x))可以直接作为分类结果,可使用hingle loss或者logit loss进行优化;
  • 排名:向量x\bold{x}可通过y^(x)\hat{y}(x)分数进行排序,并且通过pairwise的分类损失来优化成对样本(x(a),x(a))D(\bold{x}^{(a)},\bold{x}^{(a)}) \in D

在以上的任务中,一般都会使用L2正则防止过拟合。

3.3 参数学习

从上面的描述可以知道FM可以在线性的时间内进行预测。因此模型的参数(w0,wVw_0, \bold{w}和\bold{V})可以通过梯度下降的方法(例如随机梯度下降)来学习。FM模型的梯度是:
在这里插入图片描述
由于j=1nvj,fxj\sum_{j=1}^n{v_{j,f}x_j}ii是独立的,因此可以提前计算其结果(如在计算y^(x)\hat{y}(x)的时候直顺便算了)。并且每次梯度更新可以在常数时间复杂度内完成,因此FM参数训练的复杂度也是O(kn)O(kn)。综上可知,FM可以在线性时间训练和预测,是一种非常高效的模型。

3.4 扩展到d-阶

前面都是针对2阶FM模型进行讨论,这个模型可以直接拓展到d阶:
在这里插入图片描述
其中第ll个交互作用项的参数可以通过PARAFAC模型的参数:
V(l)Rn×kl,klN0+ V^{(l)}\in \mathbb{R}^{n\times k_l}, k_l \in \mathbb{N}^+_0
如果直接计算上面公式的时间复杂度为O(kdnd)O(k_dn^d),如果进行优化,其时间复杂度也会是线性的。

4 FM vs. SVM

文章在这里还做了挺多对比的,我就不详细写了,说下大概思路:

4.1 SVM模型公式

SVM分类器进行预测的公式如下:
y^(x=<ϕ(x),w> \hat{y}(\bold{x}=<\phi(\bold{x}), \bold{w}> 其中ϕ\phi是映射函数,将在RN\mathbb{R}^N空间中的特征映射到更高维的空间F\mathcal{F}中,映射函数ϕ\phi与核函数的关系为:
K:Rn×RnR,K(x,z)=<ϕ(x),ϕ(z)> K:\mathbb{R}^n \times \mathbb{R}^n \rightarrow \mathbb{R}, \qquad K(\bold{x}, \bold{z}) = <\phi(\bold{x}), \phi(\bold{z})> 以线性核(Linear kernel)和多项式核(Polynominal kernel)为例,线性核函数为Kl(x,z):=1+<x,z>K_l(\bold{x}, \bold{z}):=1+<\bold{x}, \bold{z}>,其对应的映射函数为ϕ(x):=(1,x1,...,xn)\phi(\bold{x}):=(1,x_1,...,x_n)。因此线性核的SVM预测函数为:
y^(x)=w0+i=1nwixi,w0R,wRn \hat{y}(\bold{x})=w_0+\sum_{i=1}^n{w_ix_i}, \qquad w_0 \in \mathbb{R}, \qquad \bold{w} \in \mathbb{R}^n 因此线性SVM等价于1-阶FM模型。

而多项式核为:K(x,z):=(<x,z>+1)dK(\bold{x}, \bold{z}):=(<\bold{x}, \bold{z}>+1)^d,当d为2时,其映射函数为:
ϕ(x):=(1,2x1,...,2xn,x12,...,xn2,...2x1x2,...,2x1xn,2x2x3,...,2xn1xn) \phi(\bold{x}):=(1,\sqrt{2}x_1,...,\sqrt{2}x_n, x_1^2,...,x_n^2,...\sqrt{2}x_1x_2,...,\sqrt{2}x_1x_n,\sqrt{2}x_2x_3,...,\sqrt{2}x_{n-1}x_n) 多项式核SVM的模型等式为:
y^(x)=w0+2i=1nwixi+wi,i(2)xi2+2i=1nj=i+1nwi,j(2)xixj \hat{y}(\bold{x})=w_0+\sqrt{2}\sum_{i=1}^n{w_ix_i}+\sum{w_{i,i}^{(2)}x_i^2} + \sqrt{2} \sum_{i=1}^n\sum_{j=i+1}^n{w_{i,j}^(2)x_ix_j} 其中 w0R,wRn,W(2)Rn×nw_0 \in \mathbb{R}, \bold{w} \in \mathbb{R}^n, \bold{W}^{(2)} \in \mathbb{R}^{n \times n}

通过对比2-阶多项式核SVM与FM,你会发现,SVMs核FMs的主要区别在于参数化:SVM的所有参数之间都是相互独立的,如wi,jw_{i,j}wi,lw_{i,l}。相反的,FMs的特征矩阵经过分解,因此<vi,vj><\bold{v}_i, \bold{v}_j><vi,vl><\bold{v}_i, \bold{v}_l>并不是相互独立的,他们之间会存在联系,因为存在重叠向量vi\bold{v}_i

4.2 SVM和FM模型对比

为什么线性SVM在和多项式SVM在稀疏条件下效果会比较差呢?

  • 线性svm只有一维特征,不能挖掘深层次的组合特征在实际预测中并没有很好的表现;
  • 而多项式svn正如前面提到的,交叉的多个特征需要在训练集上共现才能被学习到,否则该对应的参数就为0,这样对于测试集上的case而言这样的特征就失去了意义,因此在稀疏条件下,SVM表现并不能让人满意。

而FM不一样,通过向量化的交叉,可以学习到不同特征之间的交互,进行提取到更深层次的抽象意义。

此外,FM和SVM的区别还体现在:

  • FM可以在原始形式下进行优化学习,而基于kernel的非线性SVM通常需要在对偶形式下进行;
  • FM的模型预测是与训练样本独立,而SVM则与部分训练样本有关,即支持向量。

4.3 SVM和FM模型区别总结

  • SVM的密集参数化需要直接观察相互作用,而这通常是在稀疏环境中无法获得的。 然而即使在稀疏情况下,FM的参数也可以很好地进行参数估计。
  • FM可以直接在原始的模型公式上进行学习,而SVM需要模型推导
  • FM模型不依赖于训练集,而SVM依赖于训练集(支持向量和训练集中的数据有关)

参考资料

  1. FM(Factorization Machines)的理论与实践
  2. FM论文地址
  3. FM算法(一):算法理论
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章