FM
在推荐系统中,经常会碰到电影评分这样高度稀疏的数据,在之前的个人总结:推荐算法篇(附协同过滤等) 综述的基于模型的协同过滤中,提到了FunkSVD(LFM,Latent Factor Model),通过设置隐含特征,进行矩阵分解,来实现对未知评分的预测。这里FM,和LFM一样,也是隐变量模型。
问题背景
传统逻辑回归认为特征直接是相互独立的,但是很多情况下特征之间的依赖关系不可忽视,因此需进行特征组合,但是大多数业务场景下,类别特征做完onehot后会变得非常稀疏,尤其是特征组合后,特征空间变得很大,而FM就是为了解决特征组合下数据稀疏所带来的问题。
由线性回归说起
一般的线性模型定义如下,很直观可以看出特征均单独出现。
引入二阶多项式,可以引入特征之间的依赖关系
二阶特征的参数共有n(n - 1)/2种,且任意参数间相互独立,并且在进行参数估计时发现,对于这些二次项的参数,都需要大量的非零样本来进行求解,但是很多时候特征空间是相当稀疏的,这种情况下参数的估计值变得相当不准确。
二阶FM原理
FM引入矩阵分解的思路,对交叉项的系数矩阵进行了如下分解:
这个分解的思想是:由于特征之间不是相互独立的,因此可以使用一个隐因子来串联,类似于推荐算法中将一个打分矩阵分解为user矩阵和item矩阵,也就是前面提到的FunkSVD(LFM,Latent Factor Model),每个user和item都可以用一个隐向量来表示,
FM采用类似思想,将所有二次项系数组成为一个对称矩阵W,W可被分解为V^T*V
V的第j列vj即为第j维特征的隐向量,每一个特征对应一个隐变量,即
特征向量xi和xj的交叉项系数就等于xi对应的隐向量与xj对应的隐向量的内积,即每个参数。
其中为超参数,表示隐向量的长度,因此wij可表示为
两个特征xi和xj的特征组合的权重值,通过特征对应的向量vi和vj的内积表示,这本质上是在对特征进行embedding化表征。
于是模型可以表示为
我们将向量v按行拼成长方阵V
交互矩阵
这里用到了一个结论:当k足够大,对于任意对称正定的实矩阵,均存在实矩阵
,使得成立
。
的对称性可以得到保证,那么如何保证正定性呢?因为我们只关心互异特征之间的相互关系,因此
的对角线元素是可以任意取值的,只需将其取的足够大,就可以保证
的正定性。
我们希望k取得足够大,但是在高度稀疏的场景下,由于没有足够的样本来估计交互矩阵,因此k通常取得较小。实际上对k(FM的表达能力)的限制,一定程度上可以提高模型的泛化能力。
复杂度分析
直观上看FM的预测复杂度为O(kn^2),通过化简可以优化至O(kn)
实际应用中,n(特征维数)往往很大,如果是O(kn^2),就完全没办法被工业界使用了,所以要进行算法复杂度优化。这也是为什么LR(算法复杂度和特征数量n成线性关系)在CTR业界被