美文网首页
FM、FFM、DeepFM

FM、FFM、DeepFM

作者: xingzai | 来源:发表于2020-08-07 20:24 被阅读0次

    1. CTR预估综述

    点击率(Click through rate)是点击特定链接的用户与查看页面,电子邮件或广告的总用户数量之比。 它通常用于衡量某个网站的在线广告活动是否成功,以及电子邮件活动的有效性。
    点击率是广告点击次数除以总展示次数(广告投放次数)

    目前,CTR的数值平均接近0.2%或0.3%,超过2%被认为是非常成功的。

    常用的CTR预估算法有FM, FFM, DeepFM。

    2. Factorization Machines(FM)

    FM的paper地址如下:https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
    FM主要目标是:解决数据稀疏的情况下,特征怎样组合的问题
    根据paper的描述,FM有一下三个优点:

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

    假如在某个电影播放网站有这么一组实时数据:

    MoviesClass Actor Director MoviesIsPlay?
    Action A AA 1
    Romantic B BB 0
    Action A BB 1

    其中MoviesIsPlay?是label,MoviesClass 、Actor、Director是特征。以上这三种特征都是categorical类型的,需要经过独热编码(One-Hot Encoding)转换成数值型特征。

    MoviesClass = Action MoviesClass = Romantic Actor = A Actor = B Director = AA Director = BB MoviesIsPlay = 1 MoviesIsPlay = 0
    1 0 1 0 1 0 1 0
    0 1 0 1 0 1 0 1
    1 0 1 0 0 1 1 0

    从该独热编码表可以看出矩阵许多值都为0,数据十分稀疏,而且会导致数据维度增大,数量级从n增大到n^2

    而我们的目的是从该矩阵中获取到特征的某些关联,比如MovieClass=action 与 actor=A 关联比较大,电影播放量可很客观,从而对用户进行推荐。

    一般的线性模型为:
    y=w0+∑_{i=1}^nw_ix_i
    从上面的式子中看出,一般的线性模型没有考虑特征之间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征xi与xj的组合用xixj表示。为了简单起见,我们讨论二阶多项式模型。
    y=w0+∑_{i=1}^nw_ix_i + \sum_{i=1}^n\sum_{j=i+1}^nw_{i,j}x_ix_j
    从此公式可以看出组合特征一共有n(n-1)/2个,如果特征n上百个,组合特征上万个,就是任意两个wij相互独立,样本数据很稀疏,xixj为非零的项会非常的少,导致训练样本的不足,很容易导致参数 wij 不准确,最终将严重影响模型的性能和稳定性。

    所有二次项参数 wij 可以组成一个对称阵 W,可以分解为 W=V^TV,VV 的第 j 列便是第 j 维特征的隐向量,也就是说每个参数 wij=⟨vi,vj⟩,这就是FM模型的核心思想(不讨论高阶形式)。所以可以得到:
    y=w0+∑_{i=1}^nw_ix_i + \sum_{i=1}^n\sum_{j=i+1}^n<v_i, v_j>x_ix_j
    其中<>表示两个向量的点积
    <v_i, v_j> = \sum_{f=1}^kv_{i,f} \cdot v_{j,f}
    直观上看,FM的复杂度是 O(kn^2)。但是,通过下列等式,FM的二次项可以化简,其复杂度可以优化到 O(kn)。由此可见,FM可以在线性时间对新样本作出预测。
    \sum_{i=1}^n\sum_{j=i+1}^n<v_i, v_j>x_ix_j = \frac{1}{2}\sum_{f=1}^k\lgroup(\sum_{i=1}^nv_{i,f}x_i)^2 - \sum_{i=1}^nx_{i,f}^2\cdot x_i^2\rgroup
    下面给出详细证明过程:

    3. Field-aware Factorization Machines(FFM)

    FFM的论文地址:https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf
    在FFM中,每一维特征 x_i,针对其它特征的每一种field f_j,都会学习一个隐向量 V_{i,f_j}。因此,隐向量不仅与特征相关,也与field相关。这也是FFM中“Field-aware”的由来。

    设样本一共有n个特征, f 个field,那么FFM的二次项有nf个隐向量。而在FM模型中,每一维特征的隐向量只有一个。FM可以看作FFM的特例,是把所有特征都归属到一个field时的FFM模型。根据FFM的field敏感特性,可以导出其模型方程。
    y=w0+∑_{i=1}^nw_ix_i + \sum_{i=1}^n\sum_{j=i+1}^n<v_{i,f_j}, v_{j, f_i}>x_ix_j
    其中,f_j是第j个特征所属的field。如果隐向量的长度为k,那么FFM的二交叉项参数就有nfk个,远多于FM模型的nk个。此外,由于隐向量与field相关,FFM的交叉项并不能够像FM那样做化简,其预测复杂度为O(kn^2)

    4. Deep FM

    论文地址:https://arxiv.org/pdf/1703.04247.pdf

    对于一个基于CTR预估的推荐系统,最重要的是学习到用户点击行为背后隐含的特征组合。在不同的推荐场景中,低阶组合特征或者高阶组合特征可能都会对最终的CTR产生影响。

    DeepFM模型结合了广度和深度模型的有点,联合训练FM模型和DNN模型,来同时学习低阶特征组合和高阶特征组合。此外,DeepFM模型的Deep component和FM component从Embedding层共享数据输入,这样做的好处是Embedding层的隐式向量在(残差反向传播)训练时可以同时接受到Deep component和FM component的信息,从而使Embedding层的信息表达更加准确而最终提升推荐效果。DeepFM相对于现有的广度模型、深度模型以及Wide&Deep; DeepFM模型的优势在于:

    • DeepFM模型同时对低阶特征组合和高阶特征组合建模,从而能够学习到各阶特征之间的组合关系
    • DeepFM模型是一个端到端的模型,不需要任何的人工特征工程

    DeepFM的系统框图


    DeepFM包含两部分,左边的FM部分和右边的DNN部分。这两部分共享相同的输入。对于给定的特征i, wi用于表示一阶特征的重要性,特征ii的隐向量(latent vector)Vi用户表示和其他特征的相互影响。在FM部分,Vi用于表征二阶特征,同时在神经网络部分用于构建高阶特征。对于当前模型,所有的参数共同参与训练。DeepFM的预测结果可以写为

    y∈(0,1) 是预测的CTR,是FM部分得到的结果,是DNN部分的结果

    FM结构:


    DNN结构:

    深度部分是一个前馈神经网络,可以学习高阶的特征组合。需要注意的是原始的输入的数据是很多个字段的高维稀疏数据。因此引入一个embedding layer将输入向量压缩到低维稠密向量。
    embedding layer的结构如下图所示,

    embedding layer有两个有趣的特性:
    • 输入数据的每个字段的特征经过embedding之后,都为kk维(lantent vector的维度),所以embedding后的特征维度是 字段数×k字段数×k
    • 在FM里得到的隐变量VV现在作为了嵌入层网络的权重,FM模型作为整个模型的一部分与其他深度学习模型一起参与整体的学习, 实现端到端的训练。

    相关文章

      网友评论

          本文标题:FM、FFM、DeepFM

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