FM/FFM模型学习笔记
目录
对fm和ffm做一下总结和整理
一、前言 #
fm和ffm模型
二、FM模型(Factorization Machines) #
background #
LR模型需要人工设计组合特征来引入非线性,FM模型能够自动对特征进行组合,提升模型泛化能力。
model #
2阶的FM模型如图所示,Vi跟Vj的点乘用来刻画特征i和特征j之间的组合性质。对于正定矩阵W(两两特征之间的权重wij组成的矩阵),存在一个矩阵V,使得W=V·VT。
预估计算复杂度 #
根据公式1,计算复杂度为O(kn2),通过如图化简,复杂度可以降为O(kn)
学习算法 #
FM每个参数的梯度可以在O(1)的时间内计算出来,一共有kn个参数,所以一次参数更新时间复杂度为O(kn)。由于n大部分值稀疏(即为0),因此实际复杂度更低为 O(km(x)),m(x)表示样本x中非0的特征数。
高阶FM #
通过化简,高阶FM也可以再线性时间做预测
三、FFM模型(Field-aware Factorization Machines) #
background #
FFM模型,在FM的基础上引入了field的概念,作者认为features can be grouped into “fields”。每一个特征属于一个field,对属于不同field的其他特征有不同的权重。这样能够更好的捕捉特征之间的关系
model #
模型如图所示,另外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