2019-09-23-Field-aware-Factorization-Machine

场感知分解机

Posted by lambda on September 23, 2019

Concat: github: lambda_xmu

Field-aware Factorization Machines(FFM)

FFM 模型中引入了类别的概念,即 field,将相同性质的特征归于同一个 field。

在 FFM 中,每一维特征 $x_i$,针对其它特征的每一种 field $f_j$,都会学习一个隐向量 $v_{i,f_j}$,即 $v_i$ 成了一个二维向量 $v_{𝐹\times 𝐾}$,$F$ 是 Field 的总个数。因此,隐向量不仅与特征相关,也与 field 相关。这也是 FFM 中 “field-aware” 的由来。

假设样本的 $n$ 个特征属于 $f$ 个 field,那么 FFM 的二次项有 $nf$ 个隐向量。而在 FM 模型中,每一维特征的隐向量只有一个。FM 可以看作 FFM 的特例,是把所有特征都归属到一个 field 时的 FFM 模型。根据 FFM 的 field 敏感特性,可以导出其模型方程。

其中,$f_j$ 是第 $j$ 个特征所属的 field。如果隐向量的长度为 $k$,那么FFM的二次参数有 $nfk$ 个,远多于FM模型的 $nk$ 个。此外,由于隐向量与 field 相关,FFM二次项不能够化简,其预测复杂度是 $O(kn^2)$。

上表格的组合特征如下:

由于 $x_2,x_3,x_4$ 属于同一个 Field,所以 $f_2,f_3,f_4$ 可以用同一个变量来代替,比如就用 $f_2$。

在实际预测点击率的项目中通常会在 FMM 模型上套一层 sigmoid 函数,用 $a$ 表示对点击率的预测值

在参数更新时,令 $y=0$ 表示负样本,$y=1$ 表示正样本,$C$ 表示交叉熵损失函数。

则:

所以:

其中:

因为,$x_j$ 属于 Field $f_j$,且同一个 Field 里面的其他 $x_m$ 都等于0。

参考