FM-Factorization Machines

1.介绍

FM-Factorization Machine是一种结合了因式分解模型和SVM模型的优势的新的模型。

FM相比于SVM有如下特点:

  1. 两者都是需要实值特征向量输入的一般预测器;
  2. FM使用因式分解参数来建模任意两个变量之间的交互特征;
  3. SVM需要对欧变换,而FM不需要对欧变换,不需要支持向量,FM是直接估计模型参数的;
  4. FM模型函数是在线性时间内计算,因此可以直接进行优化。

FM相比于其他因式分解模型有如下特点:

其他因式分解模型有MF(matrix factorization)、parallel factor analysis、SVD++、PITF、FPMC等

  1. 其他因式分解模型只能应用于特定的输入数据,而不能应用于一般的预测任务;
  2. 其他因式分解模型的函数和优化算法是来源于针对性的任务的;
  3. FM模型可以仅仅通过指定输入数据来模仿成其他因式分解模型的额,这使得即使没有专家经验的人也可以很容易应用FM模型。

paper提到协同过滤问题中:

  1. SVM模型基本无法使用,最重要的原因是:SVM在非常稀疏的数据下无法使用复杂的非线性核空间去学习到可靠的参数超平面,作者也提到了这是唯一的原因;
  2. 但即使使用其他的因式分解模型也两个问题:
  3. 无法使用标准的预测数据的输入;
  4. 特定的模型通常是在针对特定的任务专门推导出来的。

基于上面的SVM和其他因式分解模型存在的问题,paper提出了银子分解机算法FM,FM兼具SVM可作为一般估计器的优点、因式分解模型能对于高稀疏数据学习到可靠的参数的优点

FM模型在线性时间内就可以计算完成,并且仅仅依赖于线性数据量的参数,因此,FM可以直接优化和存储模型参数,同时在预测阶段,不需要存储训练数据(对应的,非线性的SVM一般是以对偶形式有阿虎,而且还要通过支持向量来进行预测结果的计算)。

总的来看,FM的优点如下:

  1. FM在稀疏数据集下可以进行参数估计,而SVM做不到;
  2. FM具有线性复杂度,而且不需要依赖支持向量,能够扩展到大规模数据集;
  3. FM一种可接受任何实值特征向量输入的一般预估器。而其他因式分解模型对输入数据有限制。

2.FM模型函数及应用

paper在推导FM模型公式之前还专门花了一些篇幅介绍了稀疏数据下的预测问题,没有太多特别关键的东西,但是还是有亮点可以学习一下:

  1. 作者通过简单的公式表达定义了稀疏数据:D比表示训练数据集,n表示特征向量x的维度,m(x)表示特征向量x中的非零值元素的个数,mD是所有的x∈D中,特征m(x)中的非零值元素数量的平均值。当满足 mD ≪ n 时,则可以认为数据集时高度稀疏的;
  2. 高度稀疏数据形成的原因是:训练数据中涉及到大量类型变量的特征。

paper中在稀疏问题介绍时,也重点以电影推荐的数据集为例,先感受下就好。
在这里插入图片描述

下面就是对FM模型介绍的核心内容了。

2.1 FM模型

2.1.1 FM模型&模型的表达能力

首先看下FM的预测公式:
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_{i=1}^{n} w_{i}x_{i} + \sum_{i=1}^{n} \sum_{j=i+1}^{n} <v_{i}, v_{j}>x_{i}x_{j} \qquad (1) y^(x):=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj(1)
其中需要学习的参数为:
w 0 ∈ R , w ∈ R n , V ∈ R n × k ( 2 ) w_{0}\in \mathbb{R}, \qquad w\in \mathbb{R}^n, \qquad V\in \mathbb{R}^{n\times k} \qquad (2) w0R,wRn,VRn×k(2)
公式(1)中的⟨·, ·⟩表示两个k维向量的点积:
< v i , v j > : = ∑ f = 1 k v i , f ⋅ v j , f ( 3 ) <v_{i}, v_{j}> := \sum_{f=1}^{k} v_{i, f} \cdot v_{j, f} \qquad (3) <vi,vj>:=f=1kvi,fvj,f(3)
其中V的第i行vi表示第i个特征的k维向量表示,而k∈Z+是一个表示因子分解的维数的超参数。

在2阶FM模型中,可以表达出所有单特征以及变量之间二阶交互特征,具体参数如下:

  1. w0表示全局的偏差;
  2. wi表示第i个特征的强度;
  3. wˆi,j := ⟨vi , vj ⟩ 表示第i个特征和第j个特征之间的交互,在实际参数学习中不是直接学习交互特征的权重参数wˆi,j的,而是通过学习因式分解参数来学习交互特征的参数

⚠️FM的因式分解到底体现在哪里:
w i , j = ∑ f = 1 k v i , f ⋅ v j , f ( 4 ) w_{i, j} = \sum_{f=1}^{k} v_{i, f} \cdot v_{j, f} \qquad (4) wi,j=f=1kvi,fvj,f(4)
W = V ⋅ V T ( 5 ) W = V \cdot V^T \qquad (5) W=VVT(5)
上式(4)中即体现了因式分解的过程,即将wi,j分解为vivj的点积。因此FM中是将第i特征和第j特征的交互特征的权重参数wˆi,j的学习,转换分别学习出第i个特征的对应向量vi以及第j个特征的对应向量vj
对于整个参数空间来讲,因式分解的过程是直接体现在公式(5)中的。由于对于直接参数W的学习比较困难,包括数据量特别大、数据稀疏等问题,因此通过将其分解为V与V的转置两个矩阵来简化问题,如果是要(5)式absolutly相等的话,比较困难,但是一般情况下只需要(5)式近似相等即可,即存在一定的误差,这个误差的大小会跟V的维度k的大小有关系,理论上k越大,误差会越小,但是一般情况下选择一个较小的k值就可以了,原始是:

  1. 较大的k值需要更多的训练数据来学习出来靠谱的参数,较小的k值需要更少的训练数据来就可以学习出来靠谱的参数,而一般情况下缺少足够多的训练数据,所以需要对k值的大小进行限制;
  2. 通过限制k的大小,可以提升FM模型的表现力,从而提高模型的泛化能力。

这种因式分解的思想,也是确保在稀疏数据集上能够学习出来靠谱的高阶交互特征的参数的关键因素

2.1.2 稀疏数据下的参数估计

paper以电影打分数据集合举例,具体的例子可以阅读paper,具体的思想就是: 一个交叉特征的数据,对于预估相关联的交叉特征的参数是有帮助的。即通过其他交叉特征的数据可以得到user, movie各自的特点(向量v),那么即使数据集中没有出现user, movie同时存在的情况,也可以直接计算出来user, movie的打分结果。

2.1.3 二阶交叉特征部分的计算

paper提出FM的模型函数可以在线性时间复杂度内计算完成。并在下面推导下了FM模型公式(1)中的特征二阶交互部分的计算公式:
∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j \sum_{i=1}^{n}\sum_{j=i+1}^{n} <v_{i}, v_{j}>x_{i}x_{j} i=1nj=i+1n<vi,vj>xixj
= 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 = \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n} <v_{i}, v_{j}>x_{i}x_{j} - \frac{1}{2} \sum_{i=1}^{n}<v_{i}, v_{i}>x_{i}x_{i} =21i=1nj=1n<vi,vj>xixj21i=1n<vi,vi>xixi
= 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 ) = \frac{1}{2}(\sum_{i=1}^{n} \sum_{j=1}^{n} \sum_{f=1}^{k} v_{i, f} v_{j, f} x_{i}x_{j} - \sum_{i=1}^{n} \sum_{f=1}^{k}v_{i, f}v_{i, f}x_{i}x_{i}) =21(i=1nj=1nf=1kvi,fvj,fxixji=1nf=1kvi,fvi,fxixi)
= 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 ) = \frac{1}{2} \sum_{f=1}^{k} ((\sum_{i=1}^{n}v_{i, f}x_{i})(\sum_{j=1}^{n} v_{j, f}x_{j}) - \sum_{i=1}^{n} v_{i, f}^2x_{i}^2) =21f=1k((i=1nvi,fxi)(j=1nvj,fxj)i=1nvi,f2xi2)
= 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) 2 − ∑ i = 1 n v i , f 2 x i 2 ) = \frac{1}{2} \sum_{f=1}^{k} ((\sum_{i=1}^{n}v_{i, f}x_{i})^2 - \sum_{i=1}^{n} v_{i, f}^2x_{i}^2) =21f=1k((i=1nvi,fxi)2i=1nvi,f2xi2)
在上面的二阶计算的推导公式中,累加和计算的部分只需要计算非零特征部分的累加和,而且一般情况下稀疏数据集中m(x)非常小,对于平均非零特征数量为mD时,那么因子分解机FM的计算的复杂度为O(k·mD),

2.2 FM的应用

FM可以在多种不同的预测任务中进行应用,常见的有下面三种应用:

  1. 回归任务:ˆy(x)可以直接用于回归任务的预测结果,可以使用最小平方无误差作为优化的代价函数;
  2. 二分类任务:可以使用hing loss、logit loss等作为优化的代价函数;
  3. 排序任务:基于预测结果ˆy(x)的大小,可以对向量x所代表的实例进行排序,模型优化过程是在成对的实例的向量(x(a),x(b))∈D上以pairwise分类损失函数为目标进行的。

2.3 FM参数的更新学习

paper中说到FM模型有一个闭环的模型函数,这个闭环是什么意思呢?我理解是有前向传播和后向传播的过程,前向传播是指根据模型学习计算预测的结果,后向传播是指不算调整模型参数使得因式分解的误差最小,也就是通过误差函数去调整更新模型参数。这样的一个特点,就可以使用梯度下降法(常用的梯度下降优化算法可以参考史上最详细的梯度下降优化算法介绍)去更新模型参数了,例如可以使用SGD优化算法,相应的loss函数可以有平方差损失、对数损失、hinge损失,FM模型的梯度如下所示:
在这里插入图片描述
由于 vj,f是独立于i特征的,因此可以在计算^y(x)前预先计算出来,这样就可以在O(1)时间复杂度内计算出来预测结果。所以对于所有的(x, y)的参数更新都可以在O(kn)的时间复杂度内计算完成,而在稀疏数据集下只需要O(km(x))的时间复杂度。

2.4 总结

FM使用因子分解形式建模所有可能的交互特征,而不是直接建模参数化的交互特征wi,j,主要有下面两个优点:

  1. 在高度非线性数据集下可以估计交互特征参数,并且可以泛化到数据集中未出现过的交互特征;
  2. 参数学习以及预测过程都是线性时间复杂度,可以轻易地使用SGD等优化算法以及使用多种不同的损失函数。

从pape中可以看到,FM为了提高模型的泛化能力,减小过拟合的方法,主要做了下面三个工作:

  1. 将交叉特征参数的学习转换成学习单个特征对应的k维向量的方式,从而可以泛化到训练数据中未出现过的交叉特征组合的情况。
  2. 限制特征对应的向量的维度k值的大小;
  3. L2等正则化的方式防止过拟合。

参考资料

  1. paper-Factorization Machines
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值