FFM原理与实践简单理解

作者: zy_now | 来源:发表于2017-06-22 16:18 被阅读2702次

    点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量广告流量的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告收入有重要的指导作用。
    预估CTR/CVR,业界常用的方法有
    人工特征工程 + LR(Logistic Regression)
    GBDT(Gradient Boosting Decision Tree) + LR(Logistic Regression)
    FM(Factorization Machine)
    FFM(Field-aware Factorization Machine)模型
    DSP(Demand Side Platform)

    1.首先介绍FM的原理

    2.介绍FFM对FM的改进

    3.介绍FFM的实现细节

    4.介绍模型在DSP场景的应用

    FM(Factorization Machine)
    因式分解机 应用范围 解决稀疏数据下的特征组合问题
    问题原因 :经过One-Hot编码之后,样本的维度大幅增加,大部分样本数据特征是比较稀疏的。
    通过观察大量的样本数据可以发现,某些特征经过关联之后,与label之间的相关性就会提高。那么如何进行特征组合就是问题的关键。
    多项式模型是包含特征组合的最直观的模型。
    对于二阶多项式模型,两个特征之间,假设参数相互独立。
    在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是,每个参数 wijwij 的训练需要大量 xixi 和 xjxj 都非零的样本;由于样本数据本来就比较稀疏,满足“xixi 和 xjxj 都非零”的样本将会非常少。训练样本的不足,很容易导致参数 wijwij 不准确,最终将严重影响模型的性能。

    解决二次项参数训练问题的办法:
    矩阵分解
    对二阶多项式参数进行矩阵分解
    即N * N = (Ni) * (iN)
    把以前的高维度矩阵拆开成两个低维度的矩阵就可以了
    一个特征的隐变量应该理解为这个特征的低维度向量表示
    所有包含“xixi 的非零组合特征”(存在某个 j≠ij≠i,使得 xixj≠0xixj≠0)的样本都可以用来学习隐向量 vivi,这很大程度上避免了数据稀疏性造成的影响。

    矩阵分解后的二次参数 进行变换以方便计算 使用随机梯度下降进行收敛

    FM在样本稀疏的情况下有优势。
    FM的训练/预测复杂度是线性的,而二项多项式核SVM需要计算核矩阵,核矩阵复杂度就是N平方。

    FFM原理 : 相同性质的特征归于同一个field
    同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field。

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

    数值型的特征比较容易处理,只需分配单独的field编号,如用户评论得分、商品的历史CTR/CVR等。categorical特征需要经过One-Hot编码成数值型,编码产生的所有特征同属于一个field,而特征的值只能是0或1,如用户的性别、年龄段,商品的品类id等。除此之外,还有第三类特征,如用户浏览/购买品类,有多个品类id且用一个数值衡量用户浏览或购买每个品类商品的数量。这类特征按照categorical特征处理,不同的只是特征的值不是0或1,而是代表用户浏览或购买数量的数值。按前述方法得到field_id之后,再对转换后特征顺序编号,得到feat_id,特征的值也可以按照之前的方法获得。

    在训练FFM的过程中,有许多小细节值得特别关注。
    第一,样本层面的数据是推荐进行归一化的。
    第二,特征归一化。尤其是数值型特征归一化。CTR/CVR模型采用了多种类型的源特征,包括数值型和categorical类型等。但是,categorical类编码后的特征取值只有0或1,较大的数值型特征会造成样本归一化后categorical类生成特征的值非常小,没有区分性。例如,一条用户-商品记录,用户为“男”性,商品的销量是5000个(假设其它特征的值为零),那么归一化后特征“sex=male”(性别为男)的值略小于0.0002,而“volume”(销量)的值近似为1。特征“sex=male”在这个样本中的作用几乎可以忽略不计,这是相当不合理的。因此,将源数值型特征的值归一化到 [0,1] 是非常必要的。
    第三,省略零值特征。从FFM模型的表达式(4)
    可以看出,零值特征对模型完全没有贡献。包含零值特征的一次项和组合项均为零,对于训练模型参数或者目标值预估是没有作用的。因此,可以省去零值特征,提高FFM模型训练和预测的速度,这也是稀疏样本采用FFM的显著优势。

    相关文章

      网友评论

      • 66eb5dea62cf:这篇文章,真是写得太好了,解答了我两个星期以来的困惑, 想问楼主的代码实现,是直接拿的GitHub上本人的代码么?
      • Krystal_YI:可以,可以入门
        1066ac7aabe1:截图请说明出处
        zy_now:@Krystal_YI 谢谢

      本文标题:FFM原理与实践简单理解

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