您的位置:首页 > 其它

【每周一文】Factorization Machines

2016-02-16 23:48 127 查看

概述

在使用线性模型,例如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)y(x)=w_0+\sum_{i=1} ^n(w_i x_i)+\sum_{i=1}^n \sum_{j=i+1}^n(x_ix_j)其中模型参数有w0w_0为截距,wiw_i为一维特征权重,viv_i为每一维度特征的分布式表示。

其中特征交叉权重计算为<vi,vj>=∑f=1kvi,fvj,f=\sum_{f=1}^k v_{i,f}v_{j,f}

模型计算优化

在整个模型中,计算复杂度比较高的是最后一项,优化如下

∑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)\begin{align}
\sum_{i=1}^n \sum_{j=i+1}^n(x_ix_j) &= \frac12 \sum_{i=1}^n \sum_{j=1}^n(x_ix_j) - \frac12 \sum_{i=1}^nx_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{align}

相当于特征分布式表示中每一维度和特征进行求和平方和平方求和相减。

模型计算

采用SGD进行模型计算

∂∂θy(x)=⎧⎩⎨⎪⎪1,xi,xi∑nj=1vj,fxj−vi,fx2i,if θ is w_0if θ is w_iif θ is vi,f\frac {\partial}{\partial \theta} y(x) =
\begin{cases}
1, & \text{if $\theta$ is w_0} \\
x_i, & \text{if $\theta$ is w_i} \\
x_i\sum_{j=1}^nv_{j,f}x_j-v_{i,f}x_i^2, & \text{if $\theta$ is $v_{i,f}$}
\end{cases}

d-way FM

FM 还可以进行扩展d维特征交叉,计算相对比较复杂,而且多维交叉应用比较少。

FM应用

在很多应用中,FM可以取代常用模型并且能够取得不错效果,例如

1. FM - SVM,能够处理稀疏特征

2. FM - MF

3. FM - SVD++

4. FM - PITF

5. FM - FPMC

具体可以参考论文介绍。

总结

通过该论文学习,能够了解FM模型的基本形式以及FM能够解决那些问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: