Factorization Machines简介

在推荐场景中,我们经常面临稀疏的数据样本。SVM这种通用模型在稀疏场景下将失效,故论文提出了FM,这种能够在稀疏场景下有效的通用模型。论文最后也提到了FM与矩阵分解MF、SVD++等其他模型的关系,最后你会惊奇的发现FM模型是有多强大。

FM模型把稀疏特征映射为K维的隐变量,并且通过隐变量之间的点积来作为两个特征交叉的权重值.当然FM也可以做高阶的特征交叉,但是绝大部分时候我们还是只用二阶部分,更高阶的部分还是交给深度网络吧。

FM模型结构

FM把每个稀疏特征作为一个field,每个field可能有多种取值。

如下图,我们有三个field,每个field分别有N1, N2, N3三种不同取值。

每个field的具体取值会对一个一阶权重 w i w_i wi以及一个隐变量 [ v i 1 , v i 2 , . . . v i k ] [v_{i1},v_{i2},...v_{ik}] [vi1,vi2,...vik]

最后模型的计算公式分为三部分: 偏置 + 一阶权重 + 二阶交叉权重:

FM的计算Trick

FM通过使用特征隐变量来降低交叉特征需要训练的权重数量,只需要训练K*N个隐变量参数。由于使用了隐变量,所以训练样本中不需要交叉特征同时出现也可以学习到他们之间的权重(论文中举例了电影推荐的场景, 很多时候未出现的交叉特征并不代表他们没有相关性).

尽管降低了参数量,但是二阶部分的计算复杂度为: O ( k n 2 ) O(kn^2) O(kn2), 不同通过以下矩阵计算的转换,我们可以把计算复杂度降为 O ( k n ) O(kn) O(kn), 同时训练时候的SGD运算复杂度也降为 O ( k n ) O(kn) O(kn).

FM的特点

整体来看FM解决了以下问题:

  1. 降低交叉特征所需要训练的权重数量。使用特征隐变量内积作为两个交叉特征的权重,隐变量的总参数为 K ∗ N K*N KN

  2. 降低交叉特征的计算复杂度, 从原来的 O ( k n 2 ) O(kn^2) O(kn2)降低为 O ( k n ) O(kn) O(kn). 当然对于稀疏场景来说N不算太大. 这一操作使得在训练时候,SGD的运算复杂度也为 O ( k n ) O(kn) O(kn).

  3. 解决从未出现过的交叉特征问题。

参考资料:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值