# FFM

Field-aware Factorization Machine, FFM

FFM中,每一维特征xix_{i}针对其他特征的每一种fjf_{j}都会学习一个隐向量vifjv_{ifj}。因此,隐向量不仅与特征相关,也与field相关。Field就是feature group,

比如将一个人表示为:(年龄,在北京,在上海,在深圳,男,女)

其中的field就有年龄、地区、性别,而具体每个field中有多个feature,比如地区field中包含在深圳、在上海、在北京三个feature(因为是onehot表示,所以全部存在)

# 核心

在FM中,每个特征对应了一个隐向量,所以这个特征在跟另外的特征进行交互时,这个隐向量是固定的,所以就很不好,在FFM中,则给每个特征多个隐向量(具体个数跟field的个数有关),当特征xix_{i}跟其他field中的特征计算交叉项时,使用的是不同的隐向量

# 公式改写

根据以上描述,这个具有交叉项的LR公式又可以进行改写

y(x)=ω0+Σωixi+Σi=1nΣj=i+1n<vi,fj,vj,fi>xixjy(x) = \omega_{0} + \Sigma \omega_{i} x_{i} + \Sigma_{i=1}^{n}\Sigma_{j=i+1}^{n} <v_{i,f_{j}},v_{j,f_{i}}>x_{i}x_{j}

其中的vi,fjv_{i,f_{j}}代表了特征xix_{i}与field jj进行交互时的隐向量,vj,fiv_{j,f_{i}}代表了特征xjx_{j}与field ii进行交互时的隐向量

# 优缺点

# 优点

增加field的概念,同一特征针对不同field使用不同的隐变量,因此模型建模更加准确

# 缺点

计算复杂度比较高,参数个数为nfknfk,计算复杂度为O(n2k)O(n^{2}k)

# 注意

使用FMM需要注意

  1. 样本归一化,对样本进行归一化,否则会造成数据溢出,梯度计算失败
  2. 特征归一化,为了消除不同特征值范围不同造成的问题,因此对特征归一化
  3. early stopping,防止过拟合
  4. 省略零值特征,零值特征对模型没有贡献,省略零值特征可以提高FFM模型训练和预测的速度,这也是稀疏样本采用FFM的优势