FM,稀疏下的艺术

最近正好处理一些稀疏数据,抽空看了下FM论文,Factorization Machines,因子分解机。在SVM之后,有各种优秀的推荐系统论文出现,FM是其中非常闪耀的一颗,基于FM的有台湾大学的FFM,华为诺亚方舟的DeepFM等。今天就来讲讲稀疏矩阵下发挥优秀的FM,有一些简单的论文推倒。
FM的特点很鲜明,优势有以下几种:
1、FM能够处理SVM无法胜任的工作,在非常稀疏的数据情况下,FM表现良好
2、FM复杂度为线性
3、FM对数据要求不严苛
首先让我们来看看这么一张图(从论文中抠出来的),这是典型的推荐系统方向的问题。
FM,稀疏下的艺术
文章图片
Fig 1 这是一个真实的交易数据,所有category类型的数据都做了one-hot处理,整个数据集非常稀疏。每行表示一次交易,同颜色的列表示同一个特征。例如,前三条数据中User特征只有A出现1,表示这几次交易都是A完成的。类似的,Movie代表购买的电影。
那么如何处理此类问题呢,FM给出答案。
FM,稀疏下的艺术
文章图片
模型公式 FM,稀疏下的艺术
文章图片
FM,稀疏下的艺术
文章图片
FM中目标结果由 W0:常数项, WiXi:一次项, XiXj:二次项三部分组成,其中Vi是长度为f的向量,是Vi与Vj的点乘。这是一个典型的2阶FM模型。FM的二阶项能够考虑到因子间的相互关系。例如,在图1中,用户B和用户C都购买过SW电影票,所以用户B和C与SW的应该相似,当然应该也相似。另外,用户B购买SW,ST的目标结果相似(y分别为4,5),SW,ST也应该相似。同样,既然SW,ST两种电影类似,用户A购买SW,ST的概率也应该相似。我们可以看出来,通过Vi, Vj的结合,FM能够应用交叉特征去处理数据,在稀疏数据下表现的很好。
那么将二次项考虑进来,会增大计算复杂度吗?一般,我们认为二次项的计算复杂度应该是O(kn^2),但是FM却可以优化到O(kn)复杂度。
我们考虑二次项
FM,稀疏下的艺术
文章图片
哇塞,这么复杂的公式怎么看得懂,我们一步步来,其实很简单。
第一步,拆解过程如图
FM,稀疏下的艺术
文章图片
拆解 第二步,向量点乘
第三步,将k求和提出来
第四步,左边i和j式子相同,可以认为两者相等,直接得出平方
到此,很明显,它的计算复杂度为O(kn),左边求和之后平方,右边平方后求和,没有出现
FM,稀疏下的艺术
文章图片
接下来我们看看FM如何收敛,照常使用SGD,计算FM的梯度是:
FM,稀疏下的艺术
文章图片
求Xi的梯度,令Xj固定,则第三项左边求和是一个定值,与Xi无关。时间复杂度为O(kn)
FM也可以扩展到更高阶的形式
FM,稀疏下的艺术
文章图片
到这,我们可以推断,FM能够在O(kn)时间复杂度处理特征间关联问题。
那么,这和SVM相比有什么优势呢,SVM通过相应的核函数也能做到。还记得我们开头说的吗,相比SVM,FM能够胜任稀疏矩阵。
首先我们来看一下SVM如何处理特征间关联问题。SVM的公式是:
FM,稀疏下的艺术
文章图片
选用合适的核函数,这里我们设d=2, 例如
FM,稀疏下的艺术
文章图片
展开后公式可得
FM,稀疏下的艺术
文章图片
通过大量的数据训练,我们也能够得出对应的Weight。但是,如果特征i,和特征j没有同时出现呢。例如,从来没有一个人既买过啤酒,又买过烧鸭,那么你能认为某个人买完啤酒后不会再买烧鸭吗?这就是数据稀疏时候出现的问题,这时候Wi,j没有对应的x值训练。FM通过Vi *Vj来确定W,那么只要其他记录有Vi,和Vj,不用同时出现,就可以分别对其进行训练,最后通过点乘来确定值。这牺牲了Wi,j一点自由度,却能够很好的处理稀疏矩阵的问题。
【FM,稀疏下的艺术】在非常稀疏的数据下,FM表现非常优秀,而SVM始终无法收敛,导致误差太大。
FM,稀疏下的艺术
文章图片

    推荐阅读