Factorization Machines

论文链接:
https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

主要内容

Factorization Machines (FM)结合了Support Vector Machines (SVM) 和factorization models(分解模型)的优点,解决了数据稀疏的情况下,特征怎样组合的问题
FM至少有以下三个优点:
1.稀疏性系统中仍然能够得到合理的参数估计
2.在线性复杂度内计算FM模型,且不需要转化为对偶问题,也不需要存除部分原始数据(SVM中的支持向量)
3.FM是通用的分解模型,不仅适用于特定问题

具体流程与推导

一般的线性模型没有考虑特征之间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征 x i x_i xi x j x_j xj的组合用 x i x j x_ix_j xixj表示。为了简单起见,我们讨论二阶多项式模型。
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 \hat{y}(\mathbf{x}):=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j} y^(x):=w0+i=1nwixi+i=1nj=i+1nwijxixj

特征组合部分的参数有 n ( n − 1 ) 2 \frac{n(n−1)}{2} 2n(n1)个。如果特征非常稀疏且维度很高的话,时间复杂度将大大增加。
为了降低时间复杂度,对每一个特征,引入辅助向量lantent vector V i = [ v i 1 , v i 2 , … , v i k ] T V_{i}=\left[v_{i 1}, v_{i 2}, \ldots, v_{i k}\right]^{T} Vi=[vi1,vi2,,vik]T
模型修改如下:

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 \hat{y}(\mathbf{x}) :=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j} y^(x):=w0+i=1nwixi+i=1nj=i+1nvi,vjxixj
FM模型的表达式就是上式。k是超参数,即lantent vector的维度,一般取较小值。上式直接计算的话,时间复杂度是 O ( k n 2 ) O(kn^2) O(kn2), 通过如下方式化简复杂度可以降为 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 ( ∑ i = 1 n ∑ j = 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_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j} \\=& \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j}-\frac{1}{2} \sum_{i=1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{i}\right\rangle x_{i} x_{i} \\=& \frac{1}{2}\left(\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}\right) \\=& \frac{1}{2}\left(\sum_{i=1}^{n} \sum_{j=1}^{n} v_{i, f} x_{i}\right)\left(\sum_{j=1}^{n} v_{j, f} x_{j}\right)-\sum_{i=1}^{n} v_{i, f}^{2} x_{i}^{2} ) \\=& \frac{1}{2} \sum_{f=1}^{k}\left(\left(\sum_{i=1}^{n} v_{i, f} x_{i}\right)^{2}-\sum_{i=1}^{n} v_{i, f}^{2} x_{i}^{2}\right) \end{aligned} ====i=1nj=i+1nvi,vjxixj21i=1nj=1nvi,vjxixj21i=1nvi,vixixi21i=1nj=1nf=1kvi,fvj,fxixji=1nf=1kvi,fvi,fxixi21(i=1nj=1nvi,fxi)(j=1nvj,fxj)i=1nvi,f2xi2)21f=1k(i=1nvi,fxi)2i=1nvi,f2xi2

由于 x \mathbf{x} x的稀疏性,只需要计算 x \mathbf{x} x中非零元素,这个值为 O ( k m ‾ D ) O(k \overline{m}_{D}) O(kmD) m ‾ D \overline{m}_D mD为训练即中 x \mathbf{x} x平均非零元素个数,一般为2左右

具体代码详见:
https://github.com/DrWelles/CTR_Prediction

更高维度的相关性扩展如下:
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 ) ) \begin{aligned} \hat{y} &(x) :=w_{0}+\sum_{i=1}^{n} w_{i} x_{i} \\ &+\sum_{l=2}^{d} \sum_{i_{1}=1}^{n} \ldots \sum_{i_{l}=i_{l-1}+1}^{n}\left(\prod_{j=1}^{l} x_{i_{j}}\right)\left(\sum_{f=1}^{k_{l}} \prod_{j=1}^{l} v_{i_{j}, f}^{(l)}\right) \end{aligned} y^(x):=w0+i=1nwixi+l=2di1=1nil=il1+1n(j=1lxij)f=1klj=1lvij,f(l)
复杂度为 O ( k d n d ) O(k_{d} n^{d}) O(kdnd)

相对于SVM

1)支持向量机的密集参数化,其在稀疏环境中不能提供较好的参数估计。 即使在稀疏度下,也可以很好地估计FM的参数。
2)FM可以在主问题中直接学习。 非线性SVM通常在对偶问题中学习。
3)FMs的模型方程独立于训练数据。 使用SVM进行预测取决于训练数据的部分(支持向量)。

相对于其他分解模型

以上省略若干字,详见原文
1)PARAFAC、MF这样的标准分解模型不是像FM那样的通用预测模型。 相反,它们要求特征向量以m个部分划分,并且在每个部分为one-hot编码。
2)针对单个任务设计的专门因子分解模型有很多提议。 论文证明,FM可以通过特征提取模拟许多最成功的分解模型(包括MF,PARAFAC,SVD ++,PITF,FPMC),这使得FM在实践中很容易应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值