FFM模型

作者: 一个菜鸟的自我修养 | 来源:发表于2020-03-31 10:30 被阅读0次

  回顾上一节说的FM模型https://www.jianshu.com/p/b63c05758b2a
,同样假设我们的样本有m个,维度是n,经过ont-hot或者multi-hot之后的维度是feature_size=N维。则二阶项实际上是如下的表达式:
(x_{i, 1},x_{i,2},....x_{i,N})\left[ \begin{matrix} v_{1,1} & v_{1, 2} & ... & v_{1,d}\\ v_{2,1} & v_{2,2} &...& v_{2,d}\\ ...& ...&...&...\\ v_{N,1} &v_{N,2}&... & v_{N,d} \end{matrix} \right]^T\left[ \begin{matrix} v_{1,1} & v_{1, 2} & ... & v_{1,d}\\ v_{2,1} & v_{2,2} &...& v_{2,d}\\ ...& ...&...&...\\ v_{N,1} &v_{N,2}&... & v_{N ,d} \end{matrix} \right] \left[ \begin{matrix} x_{i,1}\\ x_{i,2} \\ ... \\ x_{i,N} \end{matrix} \right]
当然实际上我们不这样求解,因为一般N很大, 这也就解释了上节为何我们要进行一个简化,由下式也很容易看出,比如\sum_{f=1}^d v_{1,f}x_{i,1}很多计算是不必要的,因为ont-hot或者multi-hot之后,实际上很多x_{i,j}都等于0,0乘以一个数仍然是0。上节的问题,所谓的embedding的含义,也就可以这样理解
\left[ \begin{matrix} v_{1, 1} & v_{1, 2} & ... & v_{1,d}\\ v_{2, 1} & v_{2, 2} &...& v_{2,d}\\ ...& ...&...&...\\ v_{N,1} &v_{N,2}&... & v_{N,d} \end{matrix} \right] \left[ \begin{matrix} x_{i,1}\\ x_{i,2} \\ ... \\ x_{i,N} \end{matrix} \right]=\left[ \begin{matrix} \sum_{f=1}^d v_{1,f}x_{i,1}\\ \sum_{f=1}^d v_{2,f}x_{i,2} \\ ... \\ \sum_{f=1}^d v_{N,f}x_{i,N} \end{matrix} \right]
  将原本one-hot或者multi-hot变高维的稀疏向量映射到了d维的低维向量。若我们令上述降维后的向量为z,则二阶部分就是<z, z>。有文章说这样做有个缺陷就是将不同fild看成无差异性。我们先解释一下经常会见到的fild域。举个例子,比如性别它是一个性别域记为fild1,它的取值有男,女,未知,未知域fild2,它的取值有北京,上海等。实际上每个域经过one-hot/multi-hot后都有一个稀疏表示,这里大家就会惊奇的发现,若我们将所有的特征域归为一个域fild1,就变成了FM模型,所以我们会发现FM模型实际上是FFM模型的一个特例。当然每个域是不一样的,如果将每个域看成无差异的,将其都映射到d维的低维空间是不对的。
  若将不同的fild降维到不同的维度,则第一个式子就变成了,我们重新定义x_{i, fild_{l,k}}表示第i个样本的第l个域的第k个特征,若将该域降维到d维,。举个例子,还是性别吧,假设性别是第l个域,男=1,女=2,未知=3,则k就取值1,2,3,若样本i是男,则对应的是
\left[ \begin{matrix} v_{fild_{l,1},fild_{l,1}} & v_{fild_{l,1}, fild_{l, 2}} & ... & v_{fild_{l,1},d}\\ v_{fild_{l, 2},fild_{l,1}} & v_{fild_{l, 2},fild_{l, 2}} &...& v_{fild_{l, 2},d}\\ ...& ...&...&...\\ v_{fild_{l,N} ,fild_{l,1}} &v_{fild_{l,N} ,fild_{l, 2}}&... & v_{fild_{l,N} ,d} \end{matrix} \right] \left[ \begin{matrix} x_{i,fild_{l,1}}\\ x_{i,fild_{l, 2}} \\ ... \\ x_{i,fild_{l,N} } \end{matrix} \right]
然后将所有embedding后的结果拼接成一列,得到的embedding后的向量[x_{i,fild_{1,1}}, x_{i,fild_{1,d_1}},...,x_{i,fild_{L,d_L}}]^T,再做内积即可。
  在代码实现之前,先抛出一个问题,一直也困扰我很久但尚未解决的。对于embedding的维度,是如何确定的?之前看过一段代码的是这样得到embedding的维度的 embedding_dim = 6 * int(pow(vocabulary_size, 0.25)),其中vocabulary_size表示的是词典的大小。举个例子,比如性别,它的取值只有男、女、未知三种,则vocabulary_size=3。说明embedding的维度与fild的取值个数有关系。一般大家用的时候默认的大小是4,这个4又是怎么得到的?跪求大佬解答。
  接下来讲一下,如何将FM模型的代码快速的修改成FFM模型的实现代码。我们观察发现求和后面部分的实现逻辑和FM一致,我们要做的是将每个特征分到特定的fild里,然后复用FM的框架。首先我们得知道每个fild的其实x_index是多少(翻看上一节的代码)。
  首先我们要将每个fild的特征进行降维,然后拼接成一个1\times t的向量,其中t为每个fild降维后的维度的总和。

相关文章

  • FFM模型

    论文《Field-aware Factorization Machines for CTR Prediction》...

  • FFM模型

      回顾上一节说的FM模型https://www.jianshu.com/p/b63c05758b2a,同样假设我...

  • 推荐系统 - FM模型

    1. 模型演进 LR -> POLY2 -> FM -> FFM 1.1 LR模型 - 融合多种特征的推荐模型 线...

  • FFM-报文格式及示例

    1、FFM按块解读 2、FFM按行解读 3、FFM示例

  • 推荐系统排序算法--FFM模型

    1、FFM理论 在CTR预估中,经常会遇到one-hot类型的变量,one-hot类型变量会导致严重的数据特征稀疏...

  • 推荐系统与DNN的结合

      这篇博客记录自己前段时间对基于DNN的推荐模型的学习,包括FM、FFM、DCN、PNN、AFM和XDeepFM...

  • FFM

    1.学习美团FM Factorization Machine(因子分解)主要做特征的交叉,多项式模型是包含特征组合...

  • ffm

    1. FFM (Field Factorial Machine) FM的出现是为了解决为了得到交叉特征信息而设计的...

  • FFM

    Fileds Factorization Machine 与FM相比多了一个filed的概念; 增加field的作...

  • FM与FFM的在线召回工程实现

    前记 这篇文章其实是对俊林全能的FM模型和沉重的FFM模型工程实现的个人理解和整理。这两篇文章写得非常通俗易懂,强...

网友评论

      本文标题:FFM模型

      本文链接:https://www.haomeiwen.com/subject/oxbidhtx.html