因子分解机Factorization Machine

  • 在看推荐领域论文时提到了FM(因子分解机),于是搜集资料梳理了一下,以下知乎文章讲的比较好并且其引文中的讲解质量也很高,贴在下面,如侵权请通知,第一时间删除。

前言

FM算法在 LR 的基础上加入二阶特征组合,即任意两个特征进行组合,将组合出的特征看作新特征,加到 LR 模型中。
本文要讲解的FM(Factorization Machine)名字听起来非常硬核,但原理其实很简单。只是在普通线性模型的基础上增加了二阶(或更高阶)的特征交叉,利用矩阵分解的思想把 n ∗ n n*n nn的权重矩阵映射到 n ∗ k n*k nk 的空间内。

正文

1. 首先看一下普通线性模型的公式:

在这里插入图片描述
普通的线性模型有一个明显的短板,模型本身只考虑了一阶特征,因此需要人工来做高阶的特征交叉。

2. 如果我们希望模型能自动学习到二阶的特征组合,该怎么做呢?

很容易想到下面的公式:
在这里插入图片描述
利用一个 n ∗ n n*n nn 的对称矩阵 W W W ,来表示特征 x i x_i xi x j x_j xj 的关系系数,通过模型自动学习出合适的 W W W来进行预测。时间复杂度: O ( n 2 ) O(n^2) O(n2)

这样做有一个巨大的缺点,那就是很难适应稀疏的样本数据,可以看到, x i x_i xi x j x_j xj 只要有一个是0,那么对应的 W i , j W_i,_j Wi,j取值就没有意义。在过于稀疏的数据下训练,容易使 W W W 训练不充分,从而影响到最终的预测结果。

3. 再看一下FM是如何解决样本稀疏的问题的

在这里插入图片描述
我们知道,对于任何一个正定矩阵 W W W ,都能分解为 V ∗ V T V*V^T VVT 。文章便是采用这种思想,把 n ∗ n n*n nn的权重矩阵 W W W映射到 n ∗ k n*k nk维的 V V V

这里的 k k k取值是自定义的, n ∗ k n*k nk维的 V V V表示了 n n n 个特征的关系向量,因此 k k k越大它的表达能力也越强,当然 k < < n k<<n k<<n

这样做的优点如下:
(1) 有效适应稀疏数据。

不管是 < v i , v j > <v_i,v_j> <vi,vj>还是 < v i , v k > <v_i,v_k> <vi,vk> ,只要包含 v i v_i vi 都能对 v i v_i vi进行训练,因此只要存在 i , j i,j i,j满足 x i ∗ x j ≠ 0 x_i* x_j\neq0 xixj=0 ,模型就能正常训练。

(2) 2方法里各个特征之间的关系系数 W i , j W_i,_j Wi,j 是相互独立的;而采用FM的方法,可以提高泛化能力。

举个例子:

如果我们知道 < v 1 , v 2 > <v_1,v_2> <v1,v2>的值 ,那么 < v 1 , v 2 > <v_1,v_2> <v1,v2>的值无从得知;

但是,如果我们知道 < v 1 , v 2 > <v_1,v_2> <v1,v2> < v 1 , v 3 > <v_1,v_3> <v1,v3> 的值,假设他们都为0,那么,起码我们能得出 < v 2 , v 3 > <v_2,v_3> <v2,v3> 一定不为0(简单的正交性质)。

(3) 通过一系列的优化能把时间复杂度降到线性O(k*n)。
在这里插入图片描述
(4) 扩展到更高阶,下面的公式非常直观。
在这里插入图片描述

参考资料

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
https://zhuanlan.zhihu.com/p/50426292

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值