特征组合之DeepFM
1. 为什么需要DeepFM?
我们在之前的文章中提到FM, FMM,理论上,FM可以处理高阶的特征组合,但由于计算复杂度的原因,一般只处理二阶的特征组合(即在FM章节提到的度为2的FM)。所以我们很一般地想到用DNN的方法来解决拟合更高阶的特征组合。
注:可以很显然地得知,高阶的特征组合的参数时阶乘上涨的。比如2阶的FM的特征组合部分的参数数量时 C(n,2),则三阶的时C(n,3)
2.DeepFM的提出思路?
在CTR预估的过程中,特征组合后one hot编码常常会导致特征非常稀疏。在这个场景下,将one hot 特征直接输入DNN会导致参数爆炸,DNN中会有过多的参数,所以是不可行的。
如何解决这个问题呢?借鉴FMM的思路,引入filed,将特征分为不同的filed。
低阶和高阶的特征组隐含在两个隐层中。
将DNN与FM融合:
所以网络融合分为两种结构:(1)并行结构。 (2)串行结构。
3. 什么是DeepFM?
DeepFM是并行网络融合的一个典型,它为了融合低阶特征组合和高阶特征组合,用FM加上DNN的并行方式。
DeepFM包含两部分:神经网络部分与因子分解机部分,分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。DeepFM的预测结果可以写为:
分为FM部分和DNN部分:
FM因子分解机在上篇博客中游详细的介绍。
DNN部分:
深度部分是一个前馈神经网络。与图像或者语音这类输入不同,图像语音的输入一般是连续而且密集的,然而用于CTR的输入一般是及其稀疏的。因此需要重新设计网络结构。具体实现中为,在第一层隐含层之前,引入一个嵌入层作embedding来完成将输入向量压缩到低维稠密向量。
代码实现:https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2FChenglongChen%2Ftensorflow-DeepFM