Duncan's Blog

FM & FFM & DeepFM

模型表示为:因子分解机(Factorization Machine)

1.概念

在如广告点击预测问题中,根据用户画像、广告位以及一些其他特征来预测用户是否会点击广告。当对离散特征进行One-hot编码后,将出现特征维度爆炸,而且特征数据较稀疏。因此,FM最大的特点是对于稀疏的数据具有很好的学习能力。


可以处理以下三类问题:

  • 回归问题:使用最小均方误差作为优化标准
  • 二分类问题:加一个激活函数,如sigmoid或tanh函数等
  • 排序问题:按照预测分数召回

2.优点

  • 可以在非常稀疏的数据中进行合理的参数估计
  • 在FM模型的复杂度是线性
  • FM是一个通用模型,可以应用于任何特征为实值的情况

3.为什么有效?模型细节

  • 在一般的线性模型中,各个特征独立考虑的,没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。

    举例:电商中,男性购买啤酒较多,女性购买化妆品较多,性别与购买类别之间存在关联。

  • 模型

    • 一般的线性模型为

    • 对于度为2的因子分解机模型为:

      ,其中,$$表示两个大小为$k$的向量之间的点积。与线性模型相比,FM的模型多了后面特征组合的部分。

  • 如何求解?

    对每一个特征分量$xi$构造一个辅助向量$v_i=(v{i1},v{i2},…,v{ik})$,利用$v_iv_j^T$对交叉项的$w{ij}$进行估计。

  • K的选取?

    k越大能够解释的特征维度越高,但是k的选取不宜太大。

  • 为什么求解模型复杂度是线性的?

    1566111191953

  • 求解过程

    使用随机梯度下降方式求解


局部感知因子分解机(FFM)

1.基于FM改进之处

特征One-hot之后过于稀疏,因此,同一个categorical特征经过One-hot编码之后生成的数值特征可以放到同一个field。

因此在FFM中,每一维特征都会针对其他特征的每个field,分别学习一个隐变量,该隐变量不仅与特征相关,也与field相关。假设样本的$n$个特征属于$f$个field,那么FFM的二次项有$nf$个隐向量。而在FM模型中每一维特征的隐向量只有一个。如果隐向量的长度为$k$,那么FFM的二次项参数有$nfk$个,远多于FM的$nk$个。

2.模型

3.求解

随机梯度下降,同FM

4.应用

为了使用FFM方法,所有的特征必须转换成“field_id:feat_id:value”格式,field_id代表特征所属field的编号,feat_id是特征编号,value是特征的值。


DeepFM

1.概念

DeepFM目的是同时学习低阶和高阶的特征交叉,主要由FM和DNN两部分组成,底部共享同样的输入。模型可以表示为:

这里的低阶和高阶指的是特征组合的维度,虽然FM理论上可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合。因此,FM负责二阶特征组合,DNN负责高阶特征的组合。

2.优势

  • 同时结合高阶和低阶特征组合(FM+DNN)
  • 端到端模型,无需特征工程(DNN)
  • 共享相同的输入和embedding参数,训练高效(借助FFM来做预训练,得到embedding后的向量)
  • 评估模型时,用到了新的指标“Gini Normalization”
分享