NFM(Neural Factorization Machines for Sparse Predictive Analytics)

普遍问题

  • 在预测任务中,特征向量是高度稀疏的,学习特征交互是重要的

为什么提出该方法,其他方法的缺点

  • 人工设计特征组合需要领域知识,很难泛化到新问题或者新领域,没有办法捕获到没有出现在训练数据中的组合特征;

embedding的方式:

  1. FM:以线性的方式学习二阶特征交互,对于捕获现实数据非线性和复杂的内在结构表达力不够;
  2. 深度网络:例如Wide&Deep 和DeepCross,简单地concatenation特征embedding向量不会考虑任何的特征之间的交互, 但是能够学习特征交互的非线性层的深层网络结构又很难训练优化;

具体方法实现

  • 通过Bilinear Interaction pooling:建模高阶非线性特征交互;
  • 在Bilinear Interaction层之上stack非线性层,来加深浅层线性FM;
  • 通过Bilinear Interaction建模二阶特征交互,随后帮助非线性层来学习高阶特征交互;

算法过程:
在这里插入图片描述
第一与第二部分与FM中相似,第三部分是一个多层的前向神经网络用来建模特征交互;

  1. embedding层: V x = { x i v i }    w h e r e    x i ≠ 0 V_x=\{x_iv_i\}\ \ where\ \ x_i \neq 0 Vx={xivi}  where  xi̸=0
  2. Bi-Interaction layer:将 V x V_x Vx送进Bi-interaction layer, 其是一个pooling操作将embedding向量的集合转换为一个向量:
    在这里插入图片描述
    其中 ⊙ \odot 是两个元素的乘积,其输出是一个k-dim的向量编码了在embedding space中特征之间的二阶交互;
    重要的是,Bi-Interaction pooling没有引入额外的模型参数,可以在线性的时间计算:
    在这里插入图片描述

O ( k N x ) O(kN_x) O(kNx)时间,其中 N x N_x Nx代表x中非零项的个数,这个特征意味着Bi-Interaction在建模成对特征交互时没有映入额外的消耗;(为什么是线性的时间复杂度)???

  1. Hidden layers:
    在Bi-Interaction pooling层之上是一个全连接层,有能力来学习特征之间的高阶交互。

  2. Prediction Layers:
    最后,隐层的输出向量被转换为最终的预测分数
    f ( x ) = h T z L f(x)=h^Tz_L f(x)=hTzL
    其中h为预测层的权重。总结,NFM的预测模型为:
    在这里插入图片描述

与FM相比,额外的模型参数主要是 { W l , b l } \{W_l, b_l\} {Wl,bl},被用于学习特征之间的高阶交互。
与FM模型的关系:
FM可以看作是没有隐层的NFM,把去掉隐层的NFM叫做NFM-0:
在这里插入图片描述

可以看出,如果固定h为一个常数向量 ( 1 , 1 , . . . , 1 ) (1,1,...,1) (1,1,...,1),可以直接得到FM模型;由此可以得到:FM被表达为了神经网络框架的形式,我们可以在FM上使用不同的神经网络技术来提升它的学习和泛化能力;

该方法的优点

  • 实验效果(只具有一个隐藏层):>FM(7.3%), 与Wide&Deep和DeepCross相比,使用了浅层的结构但是提供了更好的性能,更少的模型参数,更容易去训练和调整;
  • 对比于其他传统的深度学习模型仅仅在浅层,concatenate或者average embedding向量,使用Bi-Interaction pooling 编码更多的有价值的特征交互;

该方法解决了什么问题

  • 结合了FM在建模二阶特征交互时的线性特征交互和神经网络建模高阶特征的非线性交互
  • 使用BiInteraction操作能够使神经网络模型在低层学习更多的信息交互;
  • FM可以看作是NFM没有隐层的特例;
  • 降低了构建更深的网络结构的需求用于质量预测;

适用场景

预测分析,类别变量(用户,操作,广告)不同于图像和音频中的raw features都是高度稀疏的;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值