特征组合之DeepFM

特征组合之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中会有过多的参数,所以是不可行的。

特征组合之DeepFM_第1张图片

如何解决这个问题呢?借鉴FMM的思路,引入filed,将特征分为不同的filed。
特征组合之DeepFM_第2张图片

低阶和高阶的特征组隐含在两个隐层中。
特征组合之DeepFM_第3张图片

将DNN与FM融合:
特征组合之DeepFM_第4张图片

所以网络融合分为两种结构:(1)并行结构。 (2)串行结构。
特征组合之DeepFM_第5张图片
特征组合之DeepFM_第6张图片

3. 什么是DeepFM?
DeepFM是并行网络融合的一个典型,它为了融合低阶特征组合和高阶特征组合,用FM加上DNN的并行方式。
特征组合之DeepFM_第7张图片

DeepFM包含两部分:神经网络部分与因子分解机部分,分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。DeepFM的预测结果可以写为:

在这里插入图片描述

分为FM部分和DNN部分:
FM因子分解机在上篇博客中游详细的介绍。
DNN部分:
特征组合之DeepFM_第8张图片
深度部分是一个前馈神经网络。与图像或者语音这类输入不同,图像语音的输入一般是连续而且密集的,然而用于CTR的输入一般是及其稀疏的。因此需要重新设计网络结构。具体实现中为,在第一层隐含层之前,引入一个嵌入层作embedding来完成将输入向量压缩到低维稠密向量。
特征组合之DeepFM_第9张图片

代码实现:https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2FChenglongChen%2Ftensorflow-DeepFM

参考:
DeepFM介绍
FM,FFM,DeepFM

你可能感兴趣的:(机器学习,特征工程,广告推荐)