摘要
已经提出了各种基于因子分解的方法,以利用二阶或更高阶交叉特征来提高预测模型的性能。
它们通常会枚举在预定义的最高阶下的所有交叉特征,然后通过模型训练来识别有用的特征交互,
但存在两个缺点。
首先,它们必须在高阶交叉特征的表达性和计算成本之间进行权衡,导致预测不够优化。
其次,枚举所有交叉特征,包括不相关的特征组合,可能引入噪声特征组合,降低模型性能。
在这项工作中,我们提出了自适应因子分解网络(AFN),这是一种新的模型,可以自适应地从数据中学习任意阶交叉特征。AFN的核心是一个对数变换层,将特征组合中每个特征的幂转化为要学习的系数。
在四个真实数据集上的实验结果表明,AFN相对于最先进的方法具有更好的预测性能。
introduction 介绍
特征工程通常被认为是成功的机器学习任务的核心,例如推荐系统(Lian等人,2017)、计算广告(He等人,2014)和搜索排名(Lian和Xie,2016)。除了利用原始特征,通常还需要找到原始特征的有效转换方式,以提高预测模型的性能。
交叉特征是一种主要类型的特征转换,其中在稀疏原始特征上执行乘法以形成新特征(Cheng等人,2016)。然而,手工制作有用的交叉特征不可避免地昂贵且耗时,并且结果可能无法推广到未见过的特征交互。
为了解决这个问题,提出了因子分解机(FMs)(Rendle,2010;Rendle,2012),通过将交叉特征的权重参数化为原始特征的嵌入向量的内积,来明确建模二阶交叉特征。为了更一般化,原始工作(Rendle,2010)还引入了涉及更高阶特征组合的高阶FMs(HOFMs)。
尽管具有卓越的预测能力,但FMs/HOFMs仍然有两个关键问题需要解决。
首先,我们应该考虑交叉特征的最高阶是多少?尽管较大的阶数能够建模更复杂的特征交互并似乎是有益的,但交叉特征的数量可以随着最高阶的增加呈指数增加,导致计算复杂性很高。一些最近的工作(Blondel等人,2016)关注于降低训练HOFMs的时间复杂性。然而,由于模型规模较大,模型训练和预测的时间成本仍然较高,对于较大的最高阶,限制了更高阶交叉特征的实际使用。
其次,在最高阶下,有哪些有用的交叉特征?重要的是要认识到,并非所有特征都包含了用于估计目标的有用信号,不同的交叉特征通常具有不同的预测能力。不相关特征之间的交互可以视为噪声,对于预测没有贡献,甚至可能降低模型性能。
为了解决这个问题,Xiao等人(2017)提出了关注因子分解机(AFM),通过使用关注分数(Bahdanau、Cho和Bengio,2015)重新加权每个交叉特征来区分因子化交互的重要性。无用的交叉特征的影响可以通过分配较低的权重来抵消。然而,将注意机制应用于复杂的特征组合会显着增加计算成本。因此,AFM旨在仅建模二阶特征交互。
在本文中,我们认为现有的因子分解方法未能适当地回答上述两个问题。
一般来说,它们采用了一种枚举和过滤的方式来建模用于预测的特征交互。典型的过程是预定义最大阶数,枚举在最大阶内的所有交叉特征,然后通过训练来过滤不相关的交叉特征。
这个过程有两个主要缺点。
首先,预定义一个最大阶数(通常很小)限制了模型在找到有区别的交叉特征方面的潜力,因为需要权衡表达力更强的高阶交叉特征和计算复杂性之间的关系。
其次,考虑到所有的交叉特征可能会引入噪声并降低预测性能,因为并非所有无用的交叉特征都可以成功地被过滤掉。
为此,我们提出了自适应因子分解网络(AFN),从数据中自适应地学习任意阶的交叉特征及其权重。
其关键思想是将特征嵌入编码到对数空间中,并将特征的幂转化为与系数相乘。AFN的核心是由多个按向量计算对数的神经元组成的对数神经变换层。每个对数神经元的目的是自动学习可能有用的组合中特征的幂(即阶数)。在对数神经变换层之上,我们应用前馈神经网络来建模逐元素特征交互。与FMs/HOFMs不同,AFN能够自适应地从数据中学习有用的交叉特征,并且最大阶数可以实时传递。我们总结本文的主要贡献如下。
• 据我们所知,我们是第一个引入神经网络中的对数变换结构来建模用于预测的任意阶特征交互的研究。
• 基于提出的对数变换层,我们提出了自适应因子分解网络(AFN),可以从数据中自适应地学习任意阶的交叉特征及其权重。
• 我们展示了FMs/HOFMs可以被解释为AFN的两个特殊情况,而AFN中学到的阶数允许在不同交叉特征中重新缩放特征嵌入。
• 我们在四个公共数据集上进行了大量实验证明,学到的交叉特征的阶数跨越了广泛的范围,我们的方法取得了卓越的预测性能。
自适应因子分解网络
我们首先详细介绍学习自适应阶特征交互的AFN模型,包括优化过程以及与深度神经网络的集成。然后,我们讨论了AFN中学到的特征阶数、模型与FMs/HOFMs的关系以及时间复杂度。AFN的总体结构如图2所示。
模型架构
输入层和嵌入层。AFN的输入层吸收了稀疏的分类特征和数值特征。如在第2节中所描述的,首先将所有原始输入特征转化为在共享的潜在空间中的嵌入。这里我们介绍了两个实施嵌入层的关键技术。
首先,由于我们将在后续层中对特征嵌入进行对数变换,因此需要保持嵌入中的所有值为正。其次,建议在零嵌入中添加一个小的正值(例如1e-7)以避免数值溢出。然后,嵌入层的输出是一组正特征嵌入e = {e1, e2, …, em}。
对数变换层
AFN的核心是对数变换层,该层学习交叉特征中每个特征字段的幂次(即阶数)。这一层由多个按向量计算的对数神经元组成。类似于方程(6),第j个向量对的对数神经元的输出可以表示为:
其中wij是第j个神经元对第i个字段的系数。函数ln(·)和exp(·)以及幂次项wij都在相应向量的元素级别上应用,而 表示元素级别的乘积操作。基于方程(7)的主要观察是每个对数神经元yj的输出能够表示任何交叉特征。例如,当w1j和w2j设置为1,而wij(2 < i < m)设置为0时,我们有yj = e1 e2,这是前两个原始特征字段的二阶交叉特征。因此,我们可以使用多个对数神经元来获得不同阶数的不同特征组合,作为该层的输出。需要注意的是,系数矩阵WLT L ∈ Rm×N(其中N表示该层的对数神经元数量)中的元素是可学习的。
前馈隐藏层和预测。在对数变换层之后,我们堆叠了几个全连接的隐藏层来组合形成的交叉特征。首先,我们将所有交叉特征连接起来作为前馈网络的输入:
z0 = [y1, y2, …, yN ] (8)
其中N是前一层对数神经元的数量,[ ]表示连接操作。然后,我们将z0输入到L个隐藏层中:
z1 = ReLU(W1z0 + b1)
zL = ReLU(WLzL−1 + bL)
其中WL和bL分别表示第L层的权重矩阵和偏置向量。ReLU是修正线性单元激活函数(Nair和Hinton 2010),用于捕捉非线性逐元素特征交互。最后,隐藏层的输出zL转换为最终的预测yˆ:
yˆ = w> zL + bp (10)
其中wp和bp分别表示预测层的权重向量和偏差项。
Optimization
由于AFN从学习自适应阶交叉特征的角度增强了FMs,因此可以应用于各种预测任务,包括分类、回归和排名,其中应该相应选择目标函数。对于生成0或1目标标签的二元分类任务,常见的目标函数是对数损失:
Logloss = - (1/K) Σ (yi log σ(ˆyi) + (1−yi) log(1−σ(ˆyi))) (11)
其中K是训练实例的总数,σ表示Sigmoid函数。对于回归任务,我们可以最小化均方误差损失。
在本工作中,我们专注于二元分类任务,并优化方程(11)中的对数损失。我们使用Adam优化器(Kingma和Ba 2015),这是随机梯度下降的一种变种,它在训练过程中动态调整学习率,从而导致更快的收敛(Sun等人2019)。此外,
我们对对数变换、指数变换以及所有隐藏层的输出执行批归一化(BN)(Ioffe和Szegedy 2015),有两个考虑因素。
首先,特征嵌入e通常被初始化并优化为接近零。经过对数变换后,嵌入倾向于包含大的负值,具有显著的方差,这对于后续层中参数的优化是有害的。由于BN可以缩放和移位输出以获得归一化的值,它对AFN的训练过程至关重要。
其次,我们在对数变换层之后使用多层神经网络。在隐藏层的输出上执行BN有助于减轻协方差漂移问题(Ioffe和Szegedy 2015),从而在经验上实现更快的收敛和更好的模型性能。
实验
在本节中,我们进行实验来回答以下研究问题:
1 | RQ1:我们提出的方法AFN和AFN+与现有最先进方法相比表现如何? |
实验设置
数据集。我们使用四个可公开访问的数据集进行实验,按照以前的工作(Lian等人2018;He and Chua 2017)进行:Criteo1、Avazu2、Movielens3和Frappe4。对于每个数据集,我们将实例随机分为训练、验证和测试,比例为8:1:1。
这四个数据集的详细信息总结在表1中。
(1)Criteo:这是CTR预测的流行行业基准数据集,包含13个数值特征字段和26个分类特征字段。
(2)Avazu:该数据集包含用户对移动广告的点击记录。它具有22个特征字段,包括用户特征和广告属性。
(3)Movielens:该数据集包括用户对电影的标签记录。我们专注于个性化标签推荐,将每个标签记录(用户ID、电影ID、标签)转换为输入的特征向量。目标值表示用户是否将特定标签分配给了电影。
(4)Frappe:该数据集包含来自不同上下文(例如白天、位置)的用户的应用程序使用日志。我们将每个日志记录(用户ID、应用程序ID、上下文特征)转换为输入的特征向量。目标值指示用户是否在上下文中使用了应用程序。
评估指标。我们采用两种指标进行性能评估:AUC(ROC曲线下面积)和Logloss(交叉熵)。
请注意,对于CTR预测等任务,AUC略微增加或Logloss略微下降在0.001级别上被认为是显著的改进(Cheng等人2016;Guo等人2017;Song等人2018)。
比较方法。我们将AFN和AFN+与四类现有方法进行比较:
- (i)一阶方法,线性求和原始特征;
- (ii)基于FM的方法,考虑了二阶交叉特征;
- (iii)高级方法,模拟高阶特征交互;
- (iv)集成模型,包括DNN作为对应部分。我们简要描述以下这些方法。
• 线性回归(LR)。它线性求和原始特征。
• Wide&Deep(Cheng等人2016)。它将LR与DNN集成在一起。注意,为了公平比较,我们省略了手工制作的交叉特征。
• FM(Rendle 2012)。FM使用分解技术模拟第二阶交叉特征进行预测。
• HOFM(Blondel等人2016)。这是FM的高阶版本。
• DeepFM(Guo等人2017)。它是DNN和FM的集成。
• AFM(Xiao等人2017)。它通过注意机制扩展了FM,以区分第二阶交叉特征的重要性。
• CrossNet(Wang等人2017)。它通过计算输入特征向量的外积来明确模拟特征交互。
• Deep&Cross(Wang等人2017)。它是CrossNet和DNN之间的集成。
• NFM(He and Chua 2017)。它通过求和输入特征向量的成对Hadamard乘积,然后是全连接层。
• PNN(Qu等人2019)。它通过连接输入特征向量的成对内积或外积来模拟特征交互。
• CIN(Lian等人2018)。它通过计算不同阶次的特征向量的外积来生成高阶交叉特征。
• xDeepFM(Lian等人2018)。它将CIN与DNN集成在一起。
实现细节。
我们使用Tensorflow5来实现我们的方法。我们采用了学习率为0.001和小批量大小为4096的Adam优化器。
默认情况下,Criteo、Avazu、Movielens和Frappe数据集的对数神经元数量分别设置为1500、1200、800和600。在AFN中,默认情况下使用3个隐藏层和每层400个神经元。
为了避免过拟合,我们根据验证集上的AUC执行提前停止。我们将特征嵌入的秩设置为10,对所有涉及DNN的方法使用相同的神经网络结构(即3层,400-400-400)以进行公平比较。HOFM中的最大阶数设置为3。所有其他超参数都在验证集上进行调优。对于每个实验结果,我们运行了3次实验并报告平均值。
结论
在本文中,我们介绍了自适应因子分解网络(AFN),它能够自适应地从数据中学习任意阶特征交互。与明确建模固定最大阶内的所有交叉特征不同,AFN能够自动生成有区分性的交叉特征以及相应特征的权重。
其关键思想是将特征嵌入转换为对数空间,并将特征组合中每个特征的幂视为要学习的系数。
我们进一步应用前馈神经网络来组合学习到的交叉特征以进行预测。我们还展示了AFN可以以高效的计算方式推广FMs和HOFMs。对四个真实世界数据集的广泛实验证明了与最先进方法相比,AFN具有更优越的预测性能。