对于预测性的系统来说,特征工程起到了至关重要的作用。特征工程中,挖掘交叉特征是至关重要的。交叉特征指的是两个或多个原始特征之间的交叉组合。例如,在新闻推荐场景中,一个三阶交叉特征为AND(user_organization=msra,item_category=deeplearning,time=monday_morning),它表示当前用户的工作单位为微软亚洲研究院,当前文章的类别是与深度学习相关的,并且推送时间是周一上午。
传统的推荐系统中,挖掘交叉特征主要依靠人工提取,这种做法主要有以下三种缺点:
1)重要的特征都是与应用场景息息相关的,针对每一种应用场景,工程师们都需要首先花费大量时间和精力深入了解数据的规律之后才能设计、提取出高效的高阶交叉特征,因此人力成本高昂;
2)原始数据中往往包含大量稀疏的特征,例如用户和物品的ID,交叉特征的维度空间是原始特征维度的乘积,因此很容易带来维度灾难的问题;
3)人工提取的交叉特征无法泛化到未曾在训练样本中出现过的模式中。
因此自动学习特征间的交互关系是十分有意义的。目前大部分相关的研究工作是基于因子分解机的框架,利用多层全连接神经网络去自动学习特征间的高阶交互关系,例如FNN、PNN和DeepFM等。其缺点是模型学习出的是隐式的交互特征,其形式是未知的、不可控的;同时它们的特征交互是发生在元素级(bit-wise)而不是特征向量之间(vector-wise),这一点违背了因子分解机的初衷。来自Google的团队在KDD 2017 AdKDD&TargetAD研讨会上提出了DCN模型,旨在显式(explicitly)地学习高阶特征交互,其优点是模型非常轻巧高效,但缺点是最终模型的表现形式是一种很特殊的向量扩张,同时特征交互依旧是发生在元素级上。
微软亚洲研究院社会计算组提出了一种极深因子分解机模型(xDeepFM),不仅能同时以显式和隐式的方式自动学习高阶的特征交互,使特征交互发生在向量级,还兼具记忆与泛化的学习能力。
论文地址 https://arxiv.org/pdf/1803.05170.pdf.
相关阅读
1.现在诸如DeepFM和Deep&Wide等模型都可以自动学习隐式的高维交互特征,并结合了低维特征,但是有一个缺点就是它们的高维特征都是在bite-wise的层面上进行交互的。本篇论文提出了一种压缩交互网络(Compressed Interaction Network(CIN)),能够学习显式的交互特征并且是在vector-wise的级别,CIN带有一些CNN和RNN的特点,最终作者将整个模型命名为"eXtreme Deep Factorization Machine(xDeepFM)"。
2.本文提出的模型有两个优点:
个人理解这里作者对implicit和explicit的理解是交互特征的维度是否明确,在这里翻译为隐式和显式。
介绍
1.简单介绍了单值离散特征和多值离散特征,然后介绍三个手动提取交互特征的缺点:
2.然后介绍了经典的FM模型,用提取隐向量然后做内积的形式来提取交叉特征,扩展的FM模型可以提取随机的高维特征,但是主要的缺陷是:
3.介绍了引入了DNN的组合模型,"Factorisation-machine supported Neural Network (FNN)",它在DNN之前使用了预训练的field embedding。
4.介绍了PNN(Product-based Neural Network),在embedding layer和DNN Input之间插入了一层product layer,不依赖于pre-trained FM。
5.FNN和PNN的缺点都是忽略了低维交互特征,Wide&Deep和DeepFM模型通过混合架构解决了这种问题,但是它们同样存在缺点:
6.本文提出的方法基于DCN(Deep & Cross Network)模型,其目标是有效率的捕捉到边界明确的交叉特征。
介绍一些基于"univalent","multivalent"进行embedding的基础知识,这里不介绍了:
这种架构是bit-wise层面的,意思是说,即使是同一个filed embedding,不同的element之间也会互相影响。
PNN和DeepFM基于上面的缺点进行了改进,除了DNN component,还添加了two-way interation layer到架构中,这样就既有vector-wise也有bit-wise的component了。PNN和DeepFM的区别就是DeepFM是把product layer直接作为结果连到输出层,而PNN是把product layer放在DNN和embedding layer之间
这里主要介绍了Cross Network(cross net)也是本文主要借鉴的一种模型,下面是该模型的架构:
通过推导可以看出其实**每一个隐含层都是x0的一个scalar multiple,**这当然不是代表隐含层是x0的线性表达,只是说因为每一层原生x0都会参与计算,因此对x0非常敏感。但是其缺点为:
本论文设计了一种新的cross network, 称为Compressed Interaction Network (CIN), 设计的时候主要考虑了下面三个方面:
下面介绍了一些在CIN的中的概念:
既然在CIN中是vector-wise层级的,那么每一个unit是一个vector,因此field embedding的输出是一个mxD的矩阵(D:embedding size,m:filed size),CIN的第k层是一个Hk x D的矩阵(Hk代表的是CIN中每一层的向量数量,H0=m),下面是第CIN第k层的h-emb的计算公式:
图(a)和(b)表示了如何从这一层的隐藏层(Hk x D)和X^0层(m X D)来产生下一层隐藏层的(Hk+1 x D),图示所示计算方法是为了更好的展现为什么模型有CNN的思想,先通过X0和Xk的第i列做一个outer product(matrix multiplication)得到一个Hk x m的矩阵(0<=i<D), 然后W就像是CNN中的filter,来过滤产生每个feature map的第i列,这样CNN中的"compressed"在CIN中就指代 Hk x D矩阵压缩为Hk+1 x D矩阵。
需要注意的是,**CIN的输出是除了X0以外每一层的feature map的sum pooling横向拼接的结果。**然后根据所需要进行的任务套一个激活函数就行了,比如sigmoid:
总结
下面对本论文提出的模型进行了复现
项目下载地址
关注微信公众号 datayx 然后回复 fm 即可获取。
AI项目体验地址 https://loveai.tech
模型架构 = FM + CIN + DNN
1.数据准备
具体配置在Config.py文件中,也可结合ex_data中的例子作为参考。
转换完成后的训练数据示例:
2.模型训练
3.模型实验
- Batch_size : 4096 , epochs: 2000
- 指标为"logloss"
- 数据为 “2018中国高校大数据挑战赛” 初赛数据
模型基于DeepFM加入了CIN component (压缩交互网络),对原有的结构进行了vector-wise和边界明确的交互填充