概述
在使用线性模型,例如LR模型时,特征工程是很大一块工作,有时为了产生较好的效果需要人工进行一些特征的二维或者三维交叉。FM(Factorization machines)提供了一种思路可以自动进行特征交叉,同时能够处理非常稀疏数据,线性时间复杂度,计算简单。
由于FM实现简单效果非常好,而且应用范围非常广,FM是近期非常火的技术,在比赛或者大公司都非常常见。
FM
FM优势
在正式介绍FM之前,首先介绍一下FM能够解决问题以及优点:
1. FM能够解决分类和回归问题
2. FM能够代替SVD、SVD++等进行矩阵分解
3. FM可以处理非常稀疏数据,此时SVM等模型会失效
4. FM线性时间复杂度,计算简单
5. FM可表示性较强,FM将模型参数表示为K维向量,向量之间可以交叉运算,即使两个交叉特征没有对应训练数据,也能表示出权重。
2维-FM模型
模型表示
对于2次特征交叉的FM模型可以表示为
y(x)=w0+∑i=1n(wixi)+∑i=1n∑j=i+1n(<vi,vj>xixj)
其中模型参数有
w0
为截距,
wi
为一维特征权重,
vi
为每一维度特征的分布式表示。
其中特征交叉权重计算为
<vi,vj>=∑f=1kvi,fvj,f
<script type="math/tex; mode=display" id="MathJax-Element-5">
=\sum_{f=1}^k v_{i,f}v_{j,f}</script>
模型计算优化
在整个模型中,计算复杂度比较高的是最后一项,优化如下
∑i=1n∑j=i+1n(<vi,vj>xixj)=12∑i=1n∑j=1n(<vi,vj>xixj)−12∑i=1n<vi,vi>xixi=12(∑i=1n∑j=1n∑f=1k(vi,fvjfxixj)−∑i=1n∑f=1k(vi,fvi,fxixi))=12∑f=1k((∑i=1nvi,fxi)(∑j=1nvj,fxj)−∑i=1nv2i,fx2i)=12∑f=1k((∑i=1nvi,fxi)2−∑i=1nv2i,fx2i)
相当于特征分布式表示中每一维度和特征进行求和平方和平方求和相减。
模型计算
采用SGD进行模型计算
∂∂θy(x)=⎧⎩⎨⎪⎪1,xi,xi∑nj=1vj,fxj−vi,fx2i,if θ is w_0if θ is w_iif θ is vi,f
d-way FM
FM 还可以进行扩展d维特征交叉,计算相对比较复杂,而且多维交叉应用比较少。
FM应用
在很多应用中,FM可以取代常用模型并且能够取得不错效果,例如
1. FM - SVM,能够处理稀疏特征
2. FM - MF
3. FM - SVD++
4. FM - PITF
5. FM - FPMC
具体可以参考论文介绍。
总结
通过该论文学习,能够了解FM模型的基本形式以及FM能够解决那些问题。