基于高阶特征交互的点击率预估模型的实现
2021-11-01周河晓李大舟
高 巍,周河晓,李大舟
(沈阳化工大学 计算机科学与技术学院,辽宁 沈阳 110142)
0 引 言
随着用户群体的不断细分,在商业环境中已经很难通过仅仅几个标签来区分无数的个体。用户信息包含了用户的行为数据和用户的基本信息等,其特征数量远多于标签性质的分类种类。
原始数据的多样性较高,数据往往具有稀疏而高维的特点,使用传统的人工筛选并组合特征的手段进行数据清洗工作量大、成本高,越来越难以适应大数据时代的背景。高阶特征是通过多个特征项组合得到的复合特征,其描述能力是远强于通过少数特征组合得到的低阶特征的,更多的特征意味着更精细的描述能力。普通全连接深度神经网络虽然可以隐式地生成特征交互,但其交互水平仅限于特征与特征之间的元素级。
在大数据的应用场景下,高维且稀疏的信息一方面可以通过组合为高阶特征更完善地描述用户或推荐物,另一方面也使得低阶特征的描述失去原本的重要性。本文在xDeepFM模型[1]的基础上改进,专注于数据中的高阶特征提取,结合了显式向量级(vector-wise)特征组合和隐式元素级(bit-wise)特征组合对特征进行提取的高阶因子自交互网络模型(high-order automatic interaction network,HAIN)。
1 研究现状
早期的推荐系统中的点击率预估模型大部分都是基于梯度下降[2]的线性模型,针对数据中具有线性关系的信息进行提取,而对于更复杂的非线形特征却很难被提取到,对数据的预处理和算法设计者人为的特征工程要求较高。2010年之后,为了解决在稀疏场景下手动组合特征的低效,提出了以因子分解机(FM)[3]为基础的一系列模型,其基本思想是对特征进行组合,例如典型的FM模型是将特征两两组合,而FFM模型则是按照特征的类别对特征进行组合。这一类模型的可以将稀疏的特征组合为低阶特征。
在深度学习时代,深度神经网络被引入了推荐系统模型中,最初是借鉴了自然语言处理领域的Word2vec思想[4]。深度神经网络此时在推荐系统模型中作为线性模型的辅助,使模型可以同时学习低阶特征和高阶特征,例如Wide&Deep模型[5]和DeepFM模型[6]等。2016年Google介绍了经典的推荐系统架构[7],主要分为召回和排序两个阶段,后续的工业级推荐系统在此基础上得以发展,出现了很多的经典模型,例如ConvMF[8]、PNN[9]、GBDT[10]等。在2018年,xDeepFM模型提出的因子压缩交互网络让高阶特征交互在元素级和向量级两个不同的级别发生,同时还结合了低阶特征的信息。
传统的推荐系统是通过人工筛选数据特征,用复杂度较为简单的线形模型就可以有可用的数据特征提取效果,但其效率逐渐不能满足大数据时代的需求。在数据没有经过人工清洗和组合的情况下数据会包含噪音,此时的高阶特征相较于低阶特征更有意义,可以更完整描述用户和推荐物品。大数据时代的信息可以支撑起一个仅针对高阶特征进行信息提取的推荐系统模型。
2 算法设计
在本文提出的推荐系统模型中,推荐的依据是对点击率(click through rate,CTR)的预测。模型针对高阶特征信息进行提取,在传统嵌入层(embedding)和多层感知器(MLP)组合的基础上,使用多种子模型多路并行运算,分别对数据的高阶特征进行显式或隐式的提取。模型的结构如图1所示。
图1 本文提出模型的结构
首先对输入数据进行多热编码(multi-hot encoding),转换为稀疏的特征向量,并通过嵌入层将数据的特征矩阵压缩为稠密等长的特征向量。模型的3个平行子模型选用的全连接深度神经网络(deep full-connected neural network,FNN)、多重特征自交互网络(automatic feature interaction lear-ning,AutoInt)、因子压缩交互网络(compress interaction network,CIN),使用稠密的特征向量作为输入,对数据的特征信息进行提取。3个子模型均输出各自提取到的高阶特征信息标量,对子模型的输出进行整合,最终得到该项数据的点击率预测值。
2.1 多热编码
多热编码(multi-hot encoding)是在独热编码(one-hot encoding)基础上提出的一种编码方法,是独热编码形式上的一种扩展,其意义仍是将信息转换为高维稀疏的向量,并将输出用于模型的输入。原始特征可以是单个特征或复合特征的形式,例如性别可以视为单个特征,是男性或女性或不明,而某一条推荐广告记录信息可能包含了用户的性别、地区、时间戳、偏好等特征的复合信息。与独热编码只在稀疏向量中保留一个数据项来表示特征不同,为了将符合特征编码为高维稀疏向量,需要在稀疏向量中保存多个数据项的值。
对于高阶特征来说,传统的独热编码不足以满足高阶特征的多样性。高阶特征之所以区别于低阶特征,就是它结合了数个低阶特征来描述事物,而独热编码扩展为多热编码后可以用表达低阶特征的原理来表达高阶特征。以用户行为的编码为例进行说明。假设记录用户的操作为浏览、加入购物车、购买、喜欢或不喜欢等种类,记录到用户有浏览、收藏和加入购物车的行为时,可以将记录进行多热编码,编码过程如图2所示,具有特征的位置标记为1,没有的标记为0。
图2 本文模型使用的数据中的部分特征进行多热编码
多热编码是兼容独热编码的,当并不需要多个特征来描述数据时,其编码形式与独热编码相同。如图2所示,性别信息有3种情况,必为男、女或不明中的一种,则可以得到如图2所示的编码结果。当一类特征中有多个特征时,需要在稀疏向量中使用多个独热编码的标注来表达数据的多维特征。实际的数据集中各类的特征往往不具有相同的特征数量,这意味着独热编码后得到的特征向量往往不等长,不能直接组成特征矩阵。为了将不同特征的多热编码结果转换为等长的特征向量,引入了嵌入层进行加工。
2.2 嵌入层
原始数据经过多热编码后,得到了数个高维稀疏特征向量,特征向量的数量与数据集中的特征类别有关。引入嵌入层不仅可以将不同种类特征转换为等长的稠密特征向量,还可以减少后续模型的计算量。任一项数据通过独热编码得到的各个特征向量,同类特征向量的长度是相等的。对于各类特征,分别使用对应尺寸的矩阵进行乘法,可以使各类特征的特征向量长度变为一个相同值(根据设定来确定具体特征向量尺寸)。图3中展示了矩阵乘法的实例。
图3 不同长度向量通过矩阵乘法转换为同长度向量
以图2中的两个编码结果为例,两个特征向量的长度为4和3,经过与对应尺寸的矩阵乘法运算可以转变为长度均为5的稠密特征向量。嵌入层分别对各个类型的特征向量进行压缩,获得的等长特征向量组成一个特征矩阵,作为嵌入层的输出。
2.3 并行模型
为了提高模型的表达能力,更好提取数据中的特征交互信息,模型使用多个子模型并行,共享嵌入层压缩后的特征作为输入。选用的3个模型共同点是都是针对高阶特征进行交互,区别在于特征交互发生的层级上。嵌入层处理后的各个特征向量对应数据的各个特征类别,对多个特征进行组合可以得到高阶特征组合。当特征跨越类别对同类或异类特征进行组合时是没有明确的规律可言的,称为隐式特征组合。DNN模型的全连接结构可以很好完成隐式的特征交互。
为了给模型添加显式特征交互的能力,在并行结构中加入了CIN和AutoInt模型,帮助模型进行显示的特征提取,这两种模型的交互都是以向量为单位进行的。3种模型输出各自提取到的高阶特征信息,并通过组合层处理后输入Sigmoid函数,将特征信息映射为点击概率。
2.3.1 深度全连接神经网络(DNN)
为了满足不同类各特征之间高阶特征的交互,加入了深度全连接神经网络,让特征交互发生在元素级上,每一个特征都与其它特征发生了隐式交互,而DNN模型的深度越大则提取到的信息组合到了更多的特征。在本文模型中深度神经网络每一层均为全连接,输入层接收嵌入层输出的各个特征,输出层仅有一个神经元,代表对所有高阶特征元素级交互提取到的信息。模型使用的DNN网络结构如图4所示。
图4 DNN结构(除输出层外,每个节点代表60个神经元)
DNN模型中,输入层将嵌入层压缩后的稠密特征向量作为输入,每一个输入层的神经元接收一个稠密特征向量中的特征。在宽度相等的全连接隐藏层中每层有300个节点,特征信息不断向前传递,各个特征与其它特征进行交互和组合,最终由输出层将隐式特征交互提取到的信息压缩为一个标量yDNN,代表模型从输入数据中提取到的隐式交互信息,取值范围在0到1之间。
2.3.2 因子压缩交互网络(CIN)
CIN的思想是实现显式地进行高阶特征的提取,让特征之间的交互发生在输入的各个特征向量之间,即向量级别上以向量为单位进行的特征交互。CIN网络包含了部分循环神经网络(RNN)和卷积神经网络(CNN)的特点,网络的参数数量不会随着网络层数的增大而呈指数级增长。CIN模型中,每一层的输出都是下一层的输入,而每一层的输入都会与模型最初的输入X0发生交互,对交互得到的中间结果进行卷积操作,得到该层的输出。每层的输入和第一层的输入矩阵间同位置的特征矩阵进行点乘运算,得到该类特征的交互矩阵。所有的交互矩阵结合在一起构成了一个三维张量,记为中间结果Zk,k代表当前层是CIN模型中的第几层。输入特征矩阵的尺寸为(特征种类,向量长度),中间结果Zk的尺寸为(特征种类,向量长度,向量长度)。图5为单层压缩交互网络的计算过程示意。
图5 单层压缩交互网络的计算过程
对中间结果Zk的各层进行卷积运算,卷积核的尺寸为(向量长度,向量长度,向量长度),完成卷积后得到的输出尺寸与输入尺寸相同。需要说明的是此处的卷积不进行补零或步移,只是通过对交互特征矩阵各元素加权求和来收集并过滤信息。使用卷积核对中间结果Zk进行卷积,每次卷积的结果为一个标量,则可以获得(特征种类,向量长度)个标量,组成一个与输入尺寸相同的特征均在,作为下一层因子压缩交互网络的输入,数学表达如下
(1)
多层CIN堆叠后,输出仍是一个与输入形状相同的矩阵。而整个CIN子模型需要输出一个标量,代表子模型所提取的显式高阶特征。Xk是通过Xk-1和X0之间的相互作用得出的,该特征的相互作用被显式提取,并且相互作用的程度随层深度的增加而增加。子模型的输出部分,会对最后一层CIN输出的特征矩阵进行一次无补零无步移的卷积,得到标量yCIN作为输出,代表模型通过显式交互提取到的高阶特征。
2.3.3 多重特征自交互网络(AutoInt)
对于高阶特征的显式和隐式交互信息提取通过CIN和DNN模型可以很好解决,但对于高阶特征的不同组成顺序、不同特征种类之间的交互,以上两种模型并不能进行很好的建模。为了使模型可以解决这样的问题,引入多重特征自交互网络。
与CIN网络类似,AutoInt模型[11]也是通过多层堆叠来对不同顺序的组合特征进行建模,上一层的输出是下一层的输入,每一层都通过残差网络保留部分先前学习到的特征。对于每个交互层,高阶特征通过注意力机制进行组合,并且可以使用多头机制评估不同种类的组合,这些机制将特征映射到不同的子空间中。新注意力空间中特征m的表示如图6所示。
图6 新注意力空间中特征m的表示
为了建立起不同种类特征之间的联系,在AutoInt模型中引入了多空间自注意力网络,使用键值关注机制[12],以特征m和k为例,分别表示为em和ek,使m与k进行交互。计算两个特征在注意力空间h中的相似度φh(em,ek)
(2)
(3)
(4)
(5)
(6)
2.4 模型结果组合
3个并行的子模型使用的输入均为经过嵌入层压缩后的低维稠密特征向量组合,并按照各自模型的特点输出对应的提取特征。在本文提出的模型中,3个子模型的输出均为一个标量,代表各个子模型提取到的高阶特征信息。3个特征代表不同模型对同一数据以不同方式提取到的特征信息,为了同时使用多个模型提取到的特征信息,提出了信息组合的子模型。将特征信息进行组合的方式如式(7)所示
CTR=Sigmoid(wT[yDNN,yCIN,yAutoInt]+b)
(7)
公式描述的组合方式本质上是一个单层全连接神经网络,3个子模型输出的标量特征信息组合在一起,作为这个单层全连接神经网络的输入,网络对3个子模型提取到的特征信息进行加权求和,并将结果通过Sigmoid函数映射为一个0到1范围内的实数,即模型对输入数据的点击率预测值。
不同的数据集可能具有不同的特征,3种子模型会针对数据的不同类型特征进行提取。为了充分利用3种模型的特征,需要将3个子模型的特征提取结果组合在一起,它们在最终的点击率预测值输出中占有不同的权重。这种权重并非由人为设计得到,而是在模型的训练过程中根据梯度下降原理不断对随机生成的权重进行修改得到。在模型训练时的反向传播过程中,式(7)中的wT会根据误差和梯度发生变化,以此来不断修正3种子模型提取到的特征对最终点击率预测值的影响大小。
3 实验结果与分析
3.1 实验环境
本实验在macOS10.15系统下进行,使用Intel@i7-8850H作为计算单元,内存为32 GB。模型使用TensorFlow框架进行搭建,版本为2.1.0。构建模型所用的代码均为TensorFlow框架内代码,未调用其它第三方库。
3.2 实验所用数据集
表1 数据集包含文件
3.3 评价指标
本文提出的模型是对点击可能性进行预测,模型的输出结果是介于0到1之间的点击可能性,所以采用对数损失函数(logarithmic loss)和ROC曲线下面积(AUC)作为模型的评估指标。
3.3.1 对数损失函数
由于数据的标签是1或0,而所得的输出为介于0和1之间的实数,衡量标准应该是预测结果与实际结果之间的接近程度,所以如式(8)所示,对数损失函数是一个分段结构。其中,pi表示模型对该项数据输出的点击概率,yi表示该项数据实际的标签值。对所有数据的输出和对应标签值进行运算并求和,取平均值的相反数得到对数损失值。取相反数的原因是,在0到1的范围内log函数的值为负数。本文中提出的模型中使用的所有log函数的底数均为自然对数e
(8)
3.3.2 接收者操作特征曲线下面积(AUC)
接收者操作特征曲线(ROC曲线)是衡量敏感性与特异性连续变量间反应的曲线,其ROC曲线的横坐标代表假阳性率(FPR),代表在标签为0的样本中预测为1的比例。纵坐标代表真阳性率(TPR),代表标签为1的样本中预测也为1的比例。ROC曲线的横纵坐标范围都在0到1之间,在ROC曲线下的面积即为AUC值,AUC值越大代表模型的二分类性能越好
(9)
(10)
3.4 实验结果
使用训练集对模型进行训练后,根据测试过程中得到的对数损失值绘制ROC曲线。从图7和图8中可得出结果,模型的AUC值为0.8088。
图7 交互层深度对模型ROC曲线影响
图8 交互层宽度对模型ROC曲线影响
图7(a)中各4根ROC曲线,图7(b)中有5根ROC曲线,虚线为参考对角线。图中的ROC曲线是子模型交互层的不同深度的模型在其它参数不变的情况下完成训练后对同一测试集进行测试得到的。3个子模型中都有堆叠相同结构交互层的行为,不同的深度决定了特征的交互程度。根据曲线的AUC值可以看到,当模型交互层层数为4时ROC曲线可以有最大的AUC值,为0.8088。
模型的交互层宽度会影响特征交互时的信息量压缩程度。DNN和AutoInt模型交互层的大小会对数据特征交互造成影响,而CIN模型由于其本身的特性,交互层大小不需要设定。实验测试了交互层节点数量。图8(a)~图8(c)中各有4条ROC曲线,对应不同交互层宽度下模型的预测性能。从不同参数得到的ROC曲线表现可以看出,子模型交互层节点宽度为540时,模型在该数据集下的AUC值指标最好。
实验对比了本文提出的高阶因子交互自交互网络模型与工业界常用的6种模型和xDeepFM模型,实验结果见表2。
表2 实验结果对比
从模型的AUC值和对数损失值两个指标来看,本文提出的模型在误差上更小,在准确率上更高,相对于原始的线性回归模型相比AUC值提升了5%,相对同类型的多并行模型在对数损失值上有1%的降低,AUC指标上有3%左右提升。LR和FM模型并未结合高阶特征,描述特征的能力相较于典型的DNN或其它结合了DNN的模型而言相差较大,达到了4%左右的差距。本文提出的模型结合了高阶特征在元素级和向量级上的交互,充分利用了高阶特征的表达能力,相比于同类结合低阶特征的模型准确率进一步提高。
4 结束语
本文提出了一种基于深度神经网络、压缩交互网络、多重特征自交互网络的高阶因子自交互网络模型,在传统的嵌入层和多层感知器的基础上,通过并行结构将各个子模型组合在一起,针对数据的高阶特征信息进行学习。和其它工业界常用模型进行对比,高阶因子自交互网络的准确率具有更好的效果。模型对数据的高阶特征进行组合提取,并对特征进行显式和隐式的交互。模型在训练过程中受到所有数据的影响相同,模型描述的是全体数据集,并未针对某一用户群体或个体进行特异化训练,如何针对不同用户优化模型参数是该模型下一步的研究方向。