CTR 系列文章:
- 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)
- CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
- CTR深度学习模型之 DeepFM 模型解读
- 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
- CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读
- 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)
- 【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)
上一篇文章讲了一些比较经典的 CTR 模型:CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解,从这一篇文章开始将会陆续介绍一些使用深度学习完成CTR预估的模型,本文主要讲的是DeepFM模型。
之前讲的 FM、FFM、Bi-FFM 本质上都是要学习户点击行为背后隐含的特征组合,不过这些经典模型主要是进行二阶特征组合。理论上也可以进行更高阶的特征组合,但是会造成特征维度指数级增长以及数据稀疏等问题。对于高阶特征组合问题不难想到可以用多层的神经网络解决。
DeepFM 的整体结构
对于类别变量,需要进行onehot编码后输入到DNN中,但是常规的做法会导致网络参数过多:
为了减少参数数量,可以借鉴FFM的思想,将特征划分为不同的 field:
然后再接上几个全连接层完成高阶特征组合:
当然,我们也可以单独进行低阶特征组合,然后和高级特征融合,即将DNN与FM进行融合。具体的形式有两种,一是串行结构,二是并行结构:
DeepFM 是并行结构的代表,具体结构如下:
此模型主要分为左边的FM模块与右边的DNN模块,最终的预测由两部分的输出相加得到:
y ^ = s i g m o i d ( y F M + y D N N ) \hat{y}=sigmoid(y_{FM}+y_{DNN}) y^=sigmoid(yFM+yDNN)
DeepFM 中的 FM 模块
FM模块如下图所示:
此部分实现的功能是: