FM和FFM原理

模型用途

FM和FFM,分解机,是近几年出的新模型,主要应用于广告点击率预估(CTR),在特征稀疏的情况下,尤其表现出优秀的性能和效果,也数次在kaggle上的数据挖掘比赛中拿到较好的名次。

FM原理

特征编码时常用的one-hot编码,会导致特征非常稀疏(很多0值)。常用的特征组合方法是多项式模型,模型表达式如下:

y(x)=w0+i=1nwixi+i=1nj=i+1nwijxixj

其中xi表示第i列特征,n表示特征数,w0,wi,wij为模型参数。模型参数为n2个。在对模型进行训练时,采用SGD(随即梯度下降),由于特征较稀疏,大部分wij的梯度值为0,那么参数wij的值就不准确,会影响模型的效果。
FM模型,将参数wij对应的矩阵W,利用矩阵分解表示为W=VTV, 矩阵VRk×n, 可以通过调节k来调节模型的泛化能力。
FM和FFM原理
FM模型则表示为:
y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj

模型参数减少为kn个。训练方法还是采用SGD,在预测时,可以通过下式将计算复杂度从O(kn2)降低为O(kn)
i=1nj=i+1n<vi,vj>xixj=12f=1k((i=1nvi,fxi)2i=1n(vi,fxi)2)

FFM 原理

FFM模型是在FM特征组合的基础上给特征加上了field属性,于是模型表示为

y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,fj,vj,fi>xixj

其中fi表示特征i所属的field,需要训练的Vn×k×f,f为field的个数,具体案例见ppt
由于FFM加入field,使得训练和预测过程参数计算不能简化,复杂度为O(kn2)

参考文献

  1. http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html
  2. ffm源码git