天天看点

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

摘要

在实际的应用场景中,数据的稀疏性会大大降低支持向量机(support vector machine,svm)等经典算法的预测性能。另外,传统的因式分解类算法,如矩阵分解(Matrix Factorization,MF)泛化能力弱,无法满足实际需求。为解决上述问题,Steffen Rendle提出一种基于分解思想的算法,即因子分解机(Factorization Machines,FM)。凭借出色的通用性以及较低的线性计算复杂度,FM 在推荐算法大家族中起着举足轻重的作用。

1. FM模型

本小节将简要地介绍FM的工作模型。

FM的建模公式为:

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

算法需要学习的参数为:

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

其中, V V V是一个因子矩阵,里面包含n个物品与k个隐类的关系。

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

式(1)是FM的模型公式。 w 0 w_0 w0​是全局偏置, w i w_i wi​表示具体某一个样本的权重,< v i v_i vi​, v j v_j vj​>表示两个样本的互动权重(interaction)。所以,FM的输出是由全局偏置,单样本信息,样本交互信息三个部分组成的。

式(2)表示模型要学习的参数,可以看出 V V V是一个n行k列的矩阵,行数表示具体的样本,列数表示隐变量。举个例子:

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

其中,每一列代表一个隐变量,当然隐变量往往具有不可解释性,这里只是为了方便读者理解而赋予其具体含义。

式(3)说明< v i v_i vi​, v j v_j vj​>表示两个向量做点积,而我们知道点积可以用来计算两个向量的相似性,因此互动权重可以用来表示两个用户的相似性。

2. FM如何解决数据的稀疏性

在实际的业务场景中,数据往往具有一定的稀疏性,产生这种稀疏性往往有两个原因:数据缺失(用户没对某一个电影进行评分)以及one-hot编码。举一个电影评分的例子:

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

上图中,蓝色框代表用户,红色框代表当前被评分的电影,黄色框表示用户的历史打分情况,绿色框表示最近一次打分到现在的时间,紫色块表示最后一次评分的电影。

那 么 , 稀 疏 性 会 带 来 什 么 问 题 ? \color{red}{那么,稀疏性会带来什么问题?} 那么,稀疏性会带来什么问题?

假设现在目的是预估用户A对电影ST的评分,从上图可以发现,没有一个样本x的A列和ST列同时为非0(这说明用户A从来没对电影ST产生过交互),因此一般的算法可能因为缺乏信息而不能预估A对ST的评分。

那 么 , F M 怎 么 解 决 稀 疏 性 带 来 的 问 题 呢 ? \color{red}{那么,FM怎么解决稀疏性带来的问题呢?} 那么,FM怎么解决稀疏性带来的问题呢?

回顾公式(1),FM在计算预测值时引入了交互信息,因此可以依赖模型学习到的交互信息来进行估计(相当于饶了一点路,迂回估计)。 同样以预估用户A对电影ST为例,用B对ST与SW的评分几乎一样,那么可以认为ST 与SW的隐向量( v s w v_{sw} vsw​, v s t v_{st} vst​)几乎一致,那么就可以通过用户A对电影SW的评分来估计用户A对电影ST的评分。

3 FM的线性复杂度

观察FM的模型公式(公式1),由于需要计算样本的交互信息,FM的计算复杂度为 O ( O( O(kn2 ) ) ),但对公式1进行转换之后,可以把线性复杂度降低至 O ( k n ) O(kn) O(kn)。

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

公式1经过转化后具有可直接求导的性质,因此就可以很方便地使用随机梯度下降法(Stochastic Gradient Descent,SGD)等优化算法进行求解。

(推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结

4.FM与其他算法的对比

4.1 FM与SVM的对比

与SVM对比,FM具有以下优点:

  • FM可以直接求解,而SVM需要先把原问题转化成对偶问题再求解
  • 可以处理稀疏数据:SVM处理稀疏数据的能力很弱,如下图。
    (推荐系统) FM算法:Factorization Machines摘要1. FM模型2. FM如何解决数据的稀疏性3 FM的线性复杂度4.FM与其他算法的对比5 总结
    原因分析:在使用高阶核的情况下,要准确估计高阶的交互信息参数 w i , j w_{i,j} wi,j​(高阶会产生很多交互项,理解以下 ( x 1 + x 2 ) (x_1+x_2) (x1​+x2​)的平方就好了),SVM要求 x i x_i xi​, x j x_j xj​均不为零,这就要求数据不能太稀疏。
  • FM对训练数据的依赖性不高,SVM的效果很依赖支持向量。

4.2 FM与传统因子分解算法的对比

经推导发现,FM可以近似模拟如SVD++,矩阵分解,PITF等传统的因子分解算法这说明FM具有良好的泛化性。详细的公式推导建议阅读原论文,此处不作赘述。

5 总结

本来简要地对FM算法进行了梳理,笔者认为FM算法十分经典,是后序涉及因子分解思想的算法的基础。应重点理解FM算法为何FM能解决稀疏性的问题以及如何降低算法复杂度。

FM算法也为设计推荐算法提供了几个需要考虑的维度:

  • 是否充分考虑了交互信息
  • 怎么去解决数据稀疏的问题
  • 求解是否方便?
  • 算法复杂度如何?
  • 泛化性如何?算法是否只对某些数据有效?

继续阅读