一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于特征选择与交互模型的点击率预测方法

2022-12-07 08:09:07 来源:中国专利 TAG:


1.本发明涉及点击率预测的技术领域,尤其是指一种基于特征选择与交互模型的点击率预测方法。


背景技术:

2.目前ctr领域提出了许多模型,如逻辑回归(lr)、多项式-2(poly2)、基于树的模型、基于张量的模型、贝叶斯模型和基于因子分解机的模型。随着深度学习在计算机视觉和自然语言处理等许多研究领域的巨大成功,近年来提出了许多基于深度学习的ctr模型。因此,对ctr预测的深度学习也成为该领域的研究趋势,一些基于神经网络的模型已经被提出并取得了成功,如因子分解机支持的神经网络(fnn)、注意力因子分解机(afm)、deepfm、xdeepfm等。同时,不同的特征对目标任务具有不同的重要性,但许多相关工作以简单的方式计算特征交互,如哈达玛积和内积,该种方式并不能使特征进行充分的交互,因此特征交互是ctr预测领域的一个关键挑战。


技术实现要素:

3.本发明的目的在于为解决现有技术中的不足,提供了一种基于特征选择与交互模型的点击率预测方法,以细粒度的方式动态学习特征和特征交互的重要性,以此来提高点击率预测的准确率。
4.本发明通过下述技术方案实现:一种基于特征选择与交互模型的点击率预测方法,包括以下步骤:
5.1)构建特征选择与交互模型,所述特征选择与交互模型包括:
6.稀疏输入层,用于对所输入的特征向量采用稀疏表示;
7.嵌入层,用于将特征向量嵌入到稠密向量中,得到嵌入向量;
8.senet层,用于将嵌入向量转换为类senet嵌入向量;
9.双线性交互层,用于对嵌入向量和类senet嵌入向量上的二阶特征交互进行建模;
10.组合层,用于合并双线性交互层的输出,得到交叉特征;
11.多隐藏层,用于将交叉特征输入到深度网络中,生成密集实值特征向量;
12.输出层,用于将密集实值特征向量输入到点击率预测函数中,最终输出点击率预测得分;
13.2)将特征向量输入到特征选择与交互模型中,特征选择与交互模型最终输出点击率预测得分。
14.进一步,所述嵌入层输出的嵌入向量为e=[e1,e2,
···
,ei,
··ef
],其中f表示特征个数,ei表示第i个特征的嵌入,且ei∈rk,rk代表k维空间上所有的点,k表示嵌入层的维数。
[0015]
进一步,所述senet层包括以下步骤:
[0016]
1.1)压缩
[0017]
将嵌入向量e=[e1,
···
,ef]压缩为统计向量z=[z1,
···
,zi,
···
,zf],其中i∈[1,
···
,f],zi为标量值,表示关于第i个特征所表示的全局信息,zi的计算公式如公式(1)所示:
[0018][0019]
其中,fsq表示压缩函数,k表示嵌入层的维数,e
i(t)
表示第i个向量中的第t个值,t表示ei向量一列值的第t个值;
[0020]
1.2)激励
[0021]
用于基于统计向量z学习每个特征嵌入的权重,使用两个完全连接层来学习权重,第一个连接层是具有参数w1的维度缩减层,参数w1具有缩减比r,第二个连接层通过参数w2增加维数,计算公式如公式(2)所示:
[0022]
a=f
ex
(z)=σ2(w2σ1(w1z))
ꢀꢀ
(2);
[0023]
其中,a为权重向量,且a∈rf,σ1和σ2均为激活函数,学习参数为r为还原比,f为特征个数;
[0024]
1.3)重新加权
[0025]
将嵌入向量e和权重向量a中对应的值相乘,输出类senet嵌入向量v={v1,
···
,vi,
···
,vf},类senet嵌入向量v如公式(3)所示:
[0026]
v=f
reweight
(a,e)=[a1·
e1,

,af·ef
]=[v1,

,vf]
ꢀꢀ
(3);
[0027]
其中ai∈r,ei∈rk,vi∈rk,k表示嵌入层的维数,senet层使用了两个完全连接层动态学习特征的重要性。
[0028]
进一步,所述双线性交互层包括共用域、独享域和交互域;
[0029]
所述共用域对特征交互p
ij
的结果计算如公式(4):
[0030]
p
ij
=vi·w·
vjꢀꢀ
(4);
[0031]
其中,w∈rk×k,vi和vj为第i个和第j个类senet嵌入向量,且vi∈rk,vj∈rk,1≤i≤f,i≤j≤f,参数矩阵w在所有(vi,vj)域相互作用对之间共享,并且在双线性交互层中有k
×
k个参数;
[0032]
所述独享域对特征交互p
ij
的结果计算如公式(5):
[0033]
p
ij
=vi·
wi·
vjꢀꢀ
(5);
[0034]
其中wi∈rk×k,vi和vj为第i个和第j个类senet嵌入向量,且vi∈rk,vj∈rk,1≤i≤f,i≤j≤f,wi是第i个域的相应参数矩阵,双线性交互层中有f
×k×
k个参数,总共有f个不同的域与矩阵;
[0035]
所述交互域对特征交互p
ij
的结果计算如公式(6):
[0036]
p
ij
=vi·wij
·
vjꢀꢀ
(6);
[0037]
其中w
ij
是嵌入i与嵌入j之间相互作用的相应参数矩阵,且w
ij
∈rk×k,1≤i≤f,i≤j≤f,该层中的学习参数总数为n
×k×
k,n是相互作用域的数量,总数为
[0038]
双线性交互层输出来自嵌入向量e的相互作用向量p=[p1,

,pi,

,pn],以及来
自类senet嵌入向量v的类senet相互作用向量q=[q1,

,qi,

,q
n]
,其中pi和qi是向量,且pi,qi∈rk。
[0039]
进一步,所述组合层将交互向量p和q连接起来,并将连接的向量,即交叉向量c馈送到特征选择与交互模型的多隐藏层,表示为以下公式(7):
[0040]
c=f
concat
(p,q)=[p1,

,pn,q1,

,qn]=[c1,

,c
2n
]
ꢀꢀ
(7);
[0041]
其中,来自嵌入向量e的相互作用向量为p=[p1,

,pi,

,pn],以及来自类senet嵌入向量v的类senet相互作用向量为q=[q1,

,qi,

,q
n]
,对向量c中的每个元素求和,然后使用sigmoid函数输出预测值,我们就得到了一个浅层模型,将该浅层模型与经典深度神经网络(dnn)合并为一个深度模型。
[0042]
进一步,所述多隐藏层包括以下步骤:
[0043]
设a
(0)
=c=[c1,c2,
···
,c
2n
]表示组合层的输出,其中ci∈rk,n是相互作用域的数量,将a
(0)
馈入深度神经网络,前馈过程为:
[0044]a(l)
=σ(w
(l)a(l-1)
b
(l)
)
ꢀꢀ
(8);
[0045]
其中,l是深度,σ是激活函数,w
(l)
是第l层的模型权重,b
(l)
是第l层的模型偏置,a
(l)
是第l层的模型输出,生成一个密集实值特征向量,该密集实值特征向量最终被输入到用于ctr预测的sigmoid函数中:yd=σ(w
|l| 1a|l|
b
|l| 1
),其中|l|是dnn的深度。
[0046]
进一步,所述输出层包括以下步骤:
[0047]
输出层的总体公式(9)为:
[0048][0049]
其中是点击率预测得分,且σ为sigmoid函数,m是特征规模,xi为输入,ωi是线性部分的第i个权重,ω0为mlp网络层的学习到的初始向量,模型的参数为wi表示第i层的参数矩阵,学习过程旨在最小化以下目标函数(10):
[0050][0051]
其中,yi是第i个实例的真实点击率,是预测点击率,n是样本的总大小。
[0052]
本发明与现有技术相比,具有如下优点与有益效果:
[0053]
1)对于点击率预测任务,senet层可以动态学习特征的重要性。它提高了重要特征的权重,并抑制了不重要特征的权重;
[0054]
2)引入了三种类型的双线性交互层来学习特征交互,使特征间的交互更加充分;
[0055]
3)在浅层模型中,将senet机制与双线性特征交互相结合,其效果优于其它浅层模型;
[0056]
4)将经典的深度神经网络(dnn)组件与浅层模型相结合,以形成深度模型,其性能优于其它现有的深度模型。
附图说明
[0057]
图1为本发明的架构图。
[0058]
图2为senet层的架构图。
[0059]
图3为双线性交互层的架构图之一。
[0060]
图4为双线性交互层的架构图之二。
[0061]
图5为双线性交互层的架构图之三。
[0062]
图6为criteo和avazu数据集上浅层模型的总体性能对比表。
[0063]
图7为criteo和avazu数据集上深层模型的总体性能对比表。
[0064]
图8为双线性交互层中双线性和哈达玛函数的不同组合的性能对比表。
[0065]
图9为双线性交互层中不同域类型的性能对比表。
[0066]
图10为不同规模的嵌入在criteo和avazu数据集上的性能对比表。
[0067]
图11为深度神经网络dnn不同层数性能折线图。
[0068]
图12为深度神经网络dnn不同数量神经元性能折线图。
[0069]
图13为特征选择与交互模型中不同组件的性能对比表。
具体实施方式
[0070]
下面结合具体实施例对本发明作进一步说明。
[0071]
实施例1
[0072]
参见图1至图5所示,为本实施例所提供的基于特征选择与交互模型的点击率预测方法,包括以下步骤:
[0073]
1)构建特征选择与交互模型
[0074]
采用criteo数据集随机分成两部分:90%用于特征选择与交互模型的训练,其余用于特征选择与交互模型的测试,它包含4500万数据实例的点击日志。criteo数据集中有26个匿名分类字段和13个连续特征字段;
[0075]
所述特征选择与交互模型包括:
[0076]
稀疏输入层1,用于对所输入的特征向量采用稀疏表示;
[0077]
嵌入层2,用于将特征向量嵌入到稠密向量中,得到嵌入向量,所述嵌入层输出的嵌入向量为e=[e1,e2,
···
,ei,
··ef
],其中f表示特征个数,ei表示第i个特征的嵌入,且ei∈rk,k表示嵌入层的维数。
[0078]
senet层,用于将嵌入向量转换为类senet嵌入向量,包括以下步骤:
[0079]
1.1)压缩
[0080]
将嵌入向量e=[e1,
···
,ef]压缩为统计向量z=[z1,
···
,zi,
···
,zf],其中i∈[1,
···
,f],zi为标量值,表示关于第i个特征所表示的全局信息,zi的计算公式如公式(1)所示:
[0081][0082]
其中,fsq表示压缩函数,k表示嵌入层的维数,ei(t)表示第i个向量中的第t个值,t表示ei向量一列值的第t个值;
[0083]
1.2)激励
[0084]
用于基于统计向量z学习每个特征嵌入的权重,使用两个完全连接层来学习权重,第一个连接层是具有参数w1的维度缩减层,参数w1具有缩减比r,第二个连接层通过参数w2增加维数,计算公式如公式(2)所示:
[0085]
a=f
ex
(z)=σ2(w2σ1(w1z))
ꢀꢀ
(2);
[0086]
其中,a为权重向量,且a∈rf,σ1和σ2均为激活函数,学习参数为r为还原比,f为特征个数;
[0087]
1.3)重新加权
[0088]
将嵌入向量e和权重向量a中对应的值相乘,输出类senet嵌入向量v={v1,
···
,vi,
···
,vf},类senet嵌入向量v如公式(3)所示:
[0089]
v=f
reweight
(a,e)=[a1·
e1,

,af·ef
]=[v1,

,vf]
ꢀꢀ
(3);
[0090]
其中ai∈r,ei∈rk,vi∈rk,k表示嵌入层的维数,senet层使用了两个完全连接层动态学习特征的重要性。
[0091]
双线性交互层3,用于对嵌入向量和类senet嵌入向量上的二阶特征交互进行建模,其中所述双线性交互层包括共用域、独享域和交互域;
[0092]
所述共用域对特征交互p
ij
的结果计算如公式(4):
[0093]
p
ij
=vi·w·
vjꢀꢀ
(4);
[0094]
其中,w∈rk×k,vi和vj为第i个和第j个类senet嵌入向量,且vi∈rk,vj∈rk,1≤i≤f,i≤j≤f,参数矩阵w在所有(vi,vj)域相互作用对之间共享,并且在双线性交互层中有k
×
k个参数;
[0095]
所述独享域对特征交互p
ij
的结果计算如公式(5):
[0096]
p
ij
=vi·
wi·
vjꢀꢀ
(5);
[0097]
其中wi∈rk×k,vi和vj为第i个和第j个类senet嵌入向量,且vi∈rk,vj∈rk,1≤i≤f,i≤j≤f,wi是第i个域的相应参数矩阵,双线性交互层中有f
×k×
k个参数,总共有f个不同的域与矩阵;
[0098]
所述交互域对特征交互p
ij
的结果计算如公式(6):
[0099]
p
ij
=vi·wij
·
vjꢀꢀ
(6);
[0100]
其中w
ij
是嵌入i与嵌入j之间相互作用的相应参数矩阵,且w
ij
∈rk×k,1≤i≤f,i≤j≤f,该层中的学习参数总数为n
×k×
k,n是相互作用域的数量,总数为
[0101]
双线性交互层输出来自嵌入向量e的相互作用向量p=[p1,

,pi,

,pn],以及来自类senet嵌入向量v的类senet相互作用向量q=[q1,

,qi,

,qn]到组合层中,至此从浅层网络进入深度网络,其中pi,qi∈rk是向量。
[0102]
组合层4,用于合并双线性交互层的输出,得到交叉特征,包括以下步骤:
[0103]
所述组合层将交互向量p和q连接起来,并将连接的向量,即交叉向量c馈送到特征选择与交互模型的多隐藏层,表示为以下公式(7):
[0104]
c=f
concat
(p,q)=[p1,

,pn,q1,

,qn]=[c1,

,c
2n
]
ꢀꢀ
(7);
[0105]
对向量c中的每个元素求和,然后使用sigmoid函数输出预测值,我们就得到了一
个浅层模型,将该浅层模型与经典深度神经网络(dnn)合并为一个深度模型;
[0106]
为了验证浅层模型和深度模型中senet层与双线性交互层结合的效率,将基线模型分为两部分:浅层基线模型和深度基线模型。浅层基线模型包括lr(逻辑回归)、fm、ffm、afm,深度基线模型包括fnn、dcn、deepfm、xdeepfm。
[0107]
多隐藏层5,用于将交叉特征输入到深度网络中,生成密集实值特征向量,包括以下步骤:
[0108]
设a
(0)
=c=[c1,c2,
···
,c
2n
]表示组合层的输出,其中ci∈rk,n是相互作用域的数量,将a
(0)
馈入深度神经网络,前馈过程为:
[0109]a(l)
=σ(w
(l)a(l-1)
b
(l)
)
ꢀꢀ
(8);
[0110]
其中,l是深度,σ是激活函数,w
(l)
是第l层的模型权重,b
(l)
是第l层的模型偏置,a
(l)
是第l层的模型输出,生成一个密集实值特征向量,该密集实值特征向量最终被输入到用于ctr预测的sigmoid函数中:yd=σ(w
|l| 1a|l|
b
|l| 1
),其中|l|是dnn的深度。
[0111]
输出层6,用于将密集实值特征向量输入到点击率预测函数中,最终输出点击率预测得分,包括以下步骤:
[0112]
输出层的总体公式(9)为:
[0113][0114]
其中是点击率预测得分,且σ为sigmoid函数,m是特征规模,xi为输入,ωi是线性部分的第i个权重ω0为mlp网络层的学习到的初始向量,模型的参数为wi表示第i层的参数矩阵,学习过程旨在最小化以下目标函数(10):
[0115][0116]
其中,yi是第i个实例的真实点击率,是预测点击率,n是样本的总大小。
[0117]
使用tensorflow4实现了特征选择与交互模型,对于嵌入层,criteo数据集的嵌入层维度设置为10。对于优化方法,本发明使用adam,criteo数据集的最小批量为1000,学习率设置为0.0001。对于所有深度模型,层深度设置为3,所有激活函数均为relu,criteo的每层神经元数为400,退出率设置为0.5。对于senet层,两个完全连接层中的激活函数均为relu函数,还原比设置为3。
[0118]
2)将特征向量输入到特征选择与交互模型中,特征选择与交互模型最终输出点击率预测得分。
[0119]
实施例2
[0120]
与实施例1不同的是,本实施例采用avazu数据集,该数据集由按时间顺序排列的数天的广告点击数据组成,它包含4000万数据实例的点击日志,将其随机分为两部分:80%用于训练,其余用于测试。
[0121]
使用tensorflow4实现了特征选择与交互模型,对于嵌入层,avazu数据集为50。对于优化方法,本发明使用adam,avazu数据集的小批量为500,学习率设置为0.0001。对于所有深度模型,层深度设置为3,所有激活函数均为relu,avazu的每层神经元数为2000,退出率设置为0.5。对于senet部分,两个完全连接层中的激活函数均为relu函数,还原比设置为3。
[0122]
实施结果
[0123]
参见图6所示,显示了在criteo和avazu数据集中的浅层模型总体性能对比,se-fm-all表示具有双线性交互层中共用域的浅层模型。
[0124]
可以看出,本发明的se-fm-all浅层模型始终优于其他模型,如fm、ffm、afm等。一方面,结果表明,将senet机制与稀疏特征上的双线性相互作用相结合是适用于许多真实数据集的有效方法;另一方面,对于经典的浅层模型,最先进的模型是ffm,它受大内存需求的限制,并且不容易在互联网公司中使用。我们的浅层模式参数较少,但性能仍优于ffm。
[0125]
参见图7所示,显示了在criteo和avazu数据集中的深层模型总体性能对比,deepse-fm-all表示具有双线性交互层中共用域的深度模型。
[0126]
为了进一步提高性能,我们将浅层模型和dnn结合到深度模型中,可以看出:将浅层部分和dnn组合成一个统一的模型,浅层模型可以获得进一步的性能改进。从结果推断,隐式高阶特征交互有助于浅层模型获得更大的表达能力。在所有比较的方法中,本发明提出的特征选择与交互模型实现了最佳性能。在criteo和avazu数据集上,本发明的深度模型在auc方面优于fnn0.571%和0.386%(在对数损失方面分别为0.918%和0.4%)。结果表明,将senet机制与dnn中的双线性相互作用相结合进行预测是有效的。一方面,senet本质上引入了以输入为条件的动态特性,有助于提高特征可辨别性;另一方面,与内积或哈达玛积等其他方法相比,双线性函数是建模特征交互的有效方法。
[0127]
参见图8所示,使用0和1表示双线性交互层中使用的函数。“1”表示使用双线性函数,而0表示使用哈达玛积。第一个数字表示用于原始嵌入的特征交互方法,第二个数字表示在类senet嵌入中使用的特征交互方法。例如,“10”表示原始嵌入使用双线性函数的特征交互方法,而类senet嵌入使用哈达玛积的特性交互方法。同样对浅层和深度模型进行了实验,双线性交互层的域类型设置为独享域,可以看出:在criteo数据集上,组合“11”优于浅层模型中的其他类型组合。但在深度模型中表现最差,深度模型中的首选组合应为“01”。这种组合意味着双线性函数仅适用于类senet嵌入层,这有利于在模型中设计有效的网络架构。
[0128]
参见图9所示,研究了双线性交互层的不同域类型(共用域、独享域和交互域)的影响,首先确定双线性交互层中使用双线性函数和哈达玛乘积的组合。对于深度模型,双线性交互层的组合设置为“01”,对于浅层模型,设置为“11”,可以得知:
[0129]
在浅层模型中,相较于图6所示的浅层模型的共用域类型,交互域类型在criteo数据集上的auc方面可获得0.382%的改进。
[0130]
在深度模型中,相较于图7所示的深度模型的共用域类型,criteo数据集的交互域类型和avazu数据集的独享域类型分别都有获得一些改进,不同数据集中,不同类型的双线性交互层的性能也有所不同。在criteo数据集上,交互域类型的性能最好,独享域类型次之,共用域类型最差。
[0131]
参见图10所示,关注特征选择与交互模型中以下两个组件中的超参数:嵌入部分和dnn部分。具体而言,改变了以下超参数:(1)嵌入的维数;(3)dnn中每层神经元的数量;(4)dnn的深度。
[0132]
嵌入部分:将嵌入规模从10逐步增加至50,可以观察到:随着规模从10扩展到50,特征选择与交互模型能够在avazu数据集上获得实质性改进,当增加criteo数据集的嵌入大小时,性能会下降。增大嵌入规模会增加嵌入层和dnn部分的参数数量。与avazu数据集相比,criteo数据集中更多的特征可能会导致优化困难。
[0133]
dnn部分:在深度层,改变每层神经元的数量、dnn的深度、激活函数和删除比率。本发明只研究了每层不同神经单元和dnn部分不同深度的影响。事实上,增加层的数量会增加模型的复杂性。我们可以从图11中观察到,增加层的数量可以在一开始提高模型性能。然而,如果层数不断增加,性能会下降。这是因为过于复杂的模型很容易过拟合。对于avazu数据集和criteo数据集,隐藏层的数量设置为3较为合适。同样,增加每层神经元的数量也会带来复杂性。在图12中,可以观察到,criteo数据集中的每个层设置400个神经元,avazu数据集的每个层设置2000个神经元的效果最好。
[0134]
参见图13所示,在特征选择与交互模型上进行部分组件切除实验,以更好地理解其相对重要性。将“deepse-fm-interaction”设置为基本模型,再设置以下模型:

no-bi:从特征选择与交互模型中移除双线性交互层

no-se:从特征选择与交互模型中移除senet层。如果去掉senet层和双线性交互层,我们的浅层特征选择与交互模型和深度特征选择与交互模型将降级为fm和fnn,可以发现:双线性交互层和senet层都能够提高特征选择与交互模型的性能。当我们移除任何组件时,性能会明显下降。
[0135]
以上所述之实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献