跳到主要内容

FM/FFM模型学习笔记

对fm和ffm做一下总结和整理

一、前言 #

fm和ffm模型

二、FM模型(Factorization Machines) #

background #

LR模型需要人工设计组合特征来引入非线性,FM模型能够自动对特征进行组合,提升模型泛化能力。

model #

image
2阶的FM模型如图所示,Vi跟Vj的点乘用来刻画特征i和特征j之间的组合性质。对于正定矩阵W(两两特征之间的权重wij组成的矩阵),存在一个矩阵V,使得W=V·VT。

预估计算复杂度 #

image
根据公式1,计算复杂度为O(kn2),通过如图化简,复杂度可以降为O(kn)

学习算法 #

image
FM每个参数的梯度可以在O(1)的时间内计算出来,一共有kn个参数,所以一次参数更新时间复杂度为O(kn)。由于n大部分值稀疏(即为0),因此实际复杂度更低为 O(km(x)),m(x)表示样本x中非0的特征数。

高阶FM #

image
image
通过化简,高阶FM也可以再线性时间做预测

三、FFM模型(Field-aware Factorization Machines) #

background #

FFM模型,在FM的基础上引入了field的概念,作者认为features can be grouped into “fields”。每一个特征属于一个field,对属于不同field的其他特征有不同的权重。这样能够更好的捕捉特征之间的关系

model #

image
模型如图所示,另外FFM里面的k(特征向量长度)通常设置的要比FM小一点。

训练优化 #

开发了libffm,使用了Hog-wild!算法

四、开源工具 #

  • libfm
  • libffm
  • xlearn

reference [1] FM https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf [2] FFM https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf [3] 深入FFM原理与实践 https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html


38db85a4c595ca6