推荐系统论文阅读笔记(二)DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

参考博客:https://www.jianshu.com/p/6f1c2643d31b1. 思路low-order和high-order的feature interaction同样重要,FM擅长发现low-order的特征交互,DNN擅长发现high-order的特征交互。DeepFM将FM和DNN联合在一起,综合了二者的优点。相较于Wide&Deep,DeepFM不需要对原始特征进行人工特征工程的工作,FM会自动学习特征交互。点击率预测——CTR(click-through rate)对于推
摘要由CSDN通过智能技术生成

参考博客:https://www.jianshu.com/p/6f1c2643d31b

1. 思路

low-orderhigh-orderfeature interaction同样重要,FM擅长发现low-order的特征交互,DNN擅长发现high-order的特征交互。DeepFMFMDNN联合在一起,综合了二者的优点。相较于Wide&Deep,DeepFM不需要对原始特征进行人工特征工程的工作,FM会自动学习特征交互。

点击率预测——CTR(click-through rate)对于推荐系统而言至关重要,而学习用户点击行为背后的隐式特征交互对于点击率预测很重要。从人工特征工程的角度,【男性】【青年】喜欢玩【射击游戏和RPG游戏】,这样的话,(游戏类别,用户性别,用户年龄)就是一个order-3的交互。

CTR的一个关键挑战就是:有效地对特征交互建模。

一些特征交互,可以通过人工组合,而这依赖于专业人员对领域的深入了解,才能比较好的提取出好的特征组合。大多数特征交互隐藏在数据中很难先验识别,只能通过机器学习发现,并且当特征很多的时候,想要依靠人工特征工程是不现实的。

简单线性模型缺乏学习high-order特征的能力,很难从训练样本中学习到从未出现或极少出现的重要特征。FM模型可以通过点积和隐向量的形式学习交叉特征。理论上FM也可以对高阶特征交互进行建模,但是由于高复杂性,一般只考虑二阶。

【是否可以辅以人工或者其它手段降低高阶特征交互的复杂性,让FM能够对三阶特征交互进行建模,比如对特征进行分块?对块内的特征进行高阶特征交互建模】

深层模型善于捕捉high-order复杂特征,如CNN/RNN/FNN/PNN/Wide & Deep等,但都有各自的问题。FNN和PNN缺乏low-order特征,Wide & Deep需要人工构造Wide部分交叉特征。

为了解决以上模型的缺陷,同时学习高阶和低阶的组合特征,避免Wide & Deep的手工构造交叉特征,Deep FM集成了因子分解机(FM)和深度神经网络(DNN)的体系结构。

2. DeepFM架构

模型架构如下:

image-20210616191403848

DeepFM模型包含FM和DNN两部分,FM算法负责对一阶特征以及二阶特征(由一阶特征交叉组合得到的)进行特征的提取;DNN算法负责对高阶特征进行特征的提取,与Wide & Deep不同的地方主要有以下两点:

  1. wide模型部分由LR替换为FM。FM模型具有自动学习交叉特征的能力,避免了原始Wide & Deep模型中浅层部分人工特征工程的工作。
  2. 共享原始输入特征。DeepFM模型的原始特征将作为FM和Deep模型部分的共同输入,所以模型训练速度很快。
2.1 Sparese Feature
  1. Field:比如说代表职业分类,经过one-hot编码后,Field字段表示成一个向量,向量中只有一个1,其余都是0
  2. 对于输入的Sparse Features,如果是分类field,则表示为one-hot编码后的向量,如果是连续field,则表示为一个实数或者通过离散化后进行one-hot编码后的向量。每一条记录转化为 ( x , y ) , x = [ x field  1 , x field  2 , … , x filed  j , … , x field  m ] (x,y),x=\left[x_{\text {field }_{1}}, x_{\text {field }_{2}}, \ldots, x_{\text {filed }_{j}}, \ldots, x_{\text {field }_{m}}\right] (x,y)x=[xfield 1,xfield 2,,xfiled j,,xfield m]。显然x将会是一个非常稀疏的高维矩阵
  3. 数据输入对于FM和Deep部分都是共享的,是不需要人工特征工程的。
2.2 Embedding Layer

image-20210617100219467

每个圆点代表一个神经元,神经元本身是没有数值的,我们需要知道的是Sparse Feature 到 Embedding 层之间连线的权重,这个权重就是所谓的Embedding Vector。

输入层的 F

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值