papers地址:https://arxiv.org/pdf/1708.05027.pdf算法
借用论文开头,目前不少的算法任务都是须要使用category feature,而通常对于category feature处理的方式是通过one hot编码,而后咱们有些状况下,category feature 对应取值较多时,如:ID等,one hot 编码后,数据会变得很是的稀疏,不只给算法带来空间上的复杂度,算法收敛也存在必定的挑战。网络
为了能解决one hot 编码带来的数据稀疏性的问题,咱们每每能想到的是否是经过其余的编码Embeding方式。刚好深度学习的爆发,咱们能够经过深度学习构架神经网络对category feature进行embeding。为了介绍该篇论文,主要围绕该篇论文进行介绍一下。论文主要分为四个部分:机器学习
第一部分:介绍背景学习
第二部分:介绍Factorization Machines和DNN优化
第三部分:介绍NFM网络结构及其原理(本文的重点)编码
第四部分:实验部分blog
最后谈谈我的的理解和想法。深度学习
一、介绍背景io
如上面所述,背景部分主要内容说的现阶段的问题和痛点:pdf
(1)category feature在传统机器学习中处理的方法——one hot编码,而这种编码方式会带来数据的维度暴增和数据的稀疏性。这个会给传统机器学习带来空间复杂度和算法收敛较为困难。
(2)FM的二阶交叉项仅仅是两两之间的交叉特征,对于三阶或者高阶的特征并不能很好的表达。
二、介绍Factorization Machines和DNN
(1)Factorization Machines 因式分解机
因式分解机是在LR的基础之上,增长一个二阶交叉特征。其表达式以下所示:
其中,vi和vj是经过矩阵分解的方式获得。
(2)DNN
DNN实际上就会一个全链接的深度神经网络,该网络的特色主要是具备必定的层数,层与层之间是全链接的。
三、NFM网络及其原理
(1)NFM的原理和表达式:
从表达咱们能够看出,其基本形式与FM是一致的,区别在于最后一项,NFM使用的是一个f(x)来表示,实际上该f(x)是一个统称,他表示的一个网络的输出。该网络以下所示:
从f(x)的网络结构咱们一样能够看出,其主要解决的问题就是二阶交叉项的问题。其结构是:
1)第一层是输入层/,即输入category feature
2)第二层Embeding,对category feature进行编码
3)第三层是二阶交叉项层,该层论文中主要是经过网络获得二阶交叉特征,计算方式:(a+b)^2-a*b 获得二阶交叉项
4)DNN层,该层是经过DNN提取高阶特征
以上就是NFM的基本原理和网络结构。
四、实验部分
实验部分主要用了两个数据集,分别以下:
实验结构以下所示:
五、感悟
从该论文内容来看,基本上仍是围绕着怎么解决(1)category feature 编码的问题和(2)获取高阶特征,经过神经网络来优化FM,提出了一个NFM的网络结构。论文主要创新点是:
一、Embeding
二、将二阶交叉特征经过DNN提取高阶特征