美文网首页
FM,稀疏下的艺术

FM,稀疏下的艺术

作者: 邹金伟 | 来源:发表于2018-05-04 22:45 被阅读0次

    最近正好处理一些稀疏数据,抽空看了下FM论文,Factorization Machines,因子分解机。在SVM之后,有各种优秀的推荐系统论文出现,FM是其中非常闪耀的一颗,基于FM的有台湾大学的FFM,华为诺亚方舟的DeepFM等。今天就来讲讲稀疏矩阵下发挥优秀的FM,有一些简单的论文推倒。

    FM的特点很鲜明,优势有以下几种:

    1、FM能够处理SVM无法胜任的工作,在非常稀疏的数据情况下,FM表现良好

    2、FM复杂度为线性

    3、FM对数据要求不严苛

    首先让我们来看看这么一张图(从论文中抠出来的),这是典型的推荐系统方向的问题。

    Fig 1

    这是一个真实的交易数据,所有category类型的数据都做了one-hot处理,整个数据集非常稀疏。每行表示一次交易,同颜色的列表示同一个特征。例如,前三条数据中User特征只有A出现1,表示这几次交易都是A完成的。类似的,Movie代表购买的电影。

    那么如何处理此类问题呢,FM给出答案。

    模型公式

      FM中目标结果由 W0:常数项, WiXi:一次项, <Vi, Vj>XiXj:二次项三部分组成,其中Vi是长度为f的向量,<Vi, Vj>是Vi与Vj的点乘。这是一个典型的2阶FM模型。FM的二阶项能够考虑到因子间的相互关系。例如,在图1中,用户B和用户C都购买过SW电影票,所以用户B和C与SW的应该相似,当然<Vb, Vsw>和<Vc, Vsw>应该也相似。另外,用户B购买SW,ST的目标结果相似(y分别为4,5),SW,ST也应该相似。同样,既然SW,ST两种电影类似,用户A购买SW,ST的概率也应该相似。我们可以看出来,通过Vi, Vj的结合,FM能够应用交叉特征去处理数据,在稀疏数据下表现的很好。

    那么将二次项考虑进来,会增大计算复杂度吗?一般,我们认为二次项的计算复杂度应该是O(kn^2),但是FM却可以优化到O(kn)复杂度。

    我们考虑二次项

    哇塞,这么复杂的公式怎么看得懂,我们一步步来,其实很简单。

    第一步,拆解过程如图

     拆解

    第二步,向量点乘

    第三步,将k求和提出来

    第四步,左边i和j式子相同,可以认为两者相等,直接得出平方

    到此,很明显,它的计算复杂度为O(kn),左边求和之后平方,右边平方后求和,没有出现

    接下来我们看看FM如何收敛,照常使用SGD,计算FM的梯度是:

    求Xi的梯度,令Xj固定,则第三项左边求和是一个定值,与Xi无关。时间复杂度为O(kn)

    FM也可以扩展到更高阶的形式

    到这,我们可以推断,FM能够在O(kn)时间复杂度处理特征间关联问题。

    那么,这和SVM相比有什么优势呢,SVM通过相应的核函数也能做到。还记得我们开头说的吗,相比SVM,FM能够胜任稀疏矩阵。

    首先我们来看一下SVM如何处理特征间关联问题。SVM的公式是:

    选用合适的核函数,这里我们设d=2, 例如

    展开后公式可得

    通过大量的数据训练,我们也能够得出对应的Weight。但是,如果特征i,和特征j没有同时出现呢。例如,从来没有一个人既买过啤酒,又买过烧鸭,那么你能认为某个人买完啤酒后不会再买烧鸭吗?这就是数据稀疏时候出现的问题,这时候Wi,j没有对应的x值训练。FM通过Vi *  Vj来确定W,那么只要其他记录有Vi,和Vj,不用同时出现,就可以分别对其进行训练,最后通过点乘来确定值。这牺牲了Wi,j一点自由度,却能够很好的处理稀疏矩阵的问题。

    在非常稀疏的数据下,FM表现非常优秀,而SVM始终无法收敛,导致误差太大。

    相关文章

      网友评论

          本文标题:FM,稀疏下的艺术

          本文链接:https://www.haomeiwen.com/subject/pkyjrftx.html