基于图神经网络的民航旅客隐式交互特征挖掘与航班推荐模型
2023-08-10丁建立
丁建立 张 莉
(中国民航大学计算机科学与技术学院 天津 300300)
0 引 言
随着人们生活水平的提高,飞机出行越来越普遍,大量的交互数据为个性化推荐奠定了基石。高速磁浮列车等新兴出行工具在科技发展的洪流中应运而生,这对航空公司的收益带来了冲击。互联网为旅客选择航空产品提供更多便利,然而过于丰富的信息也为旅客带来了幸福的烦恼——信息过载。挖掘交互数据中的潜在特征,细化旅客偏好,能够为旅客提供更加精细的个性化服务,从而提升航空公司业务效益。在民航领域中,个性化推荐系统[7]可以帮助旅客完成信息筛选,从而节约时间,提升旅客体验。近年来,个性化推荐系统已经在民航领域有所应用。民航个性化推荐领域涵盖附加服务推荐、座位推荐和航线推荐等。充分利用大数据时代下的海量数据为旅客提供航班推荐服务在民航领域有巨大的潜在价值。
近年来基于图结构[9,11]的神经网络发展迅速,学习图结构嵌入表征的框架称为图神经网络[4-6],因在推荐系统中,旅客商品之间的交互以及旅客对商品的评价是典型的图结构数据,近来很多研究者利用图神经网络的优势[1,3]解决推荐领域问题且取得了良好的效果。文献[9]提出了随机游走神经网络学习图中节点信息,GraphRec[8]融合了图结构的社交关系实现个性化推荐,NGCF[11]通过高阶排序学习高阶节点信息以提高推荐的精准度。尽管这些模型在处理图结构数据上都取得了良好的效果,但是考虑到民航航班推荐领域的特殊性,本文提出了一种细粒度隐式交互特征挖掘建模。然而构建基于图神经网络的民航旅客隐式交互特征挖掘的航班推荐模型仍面临挑战,主要包括:① 考虑到民航领域中,航班号一般固定,且登记序列也不被人们关注,对乘客而言,更关注航班的属性,如航空公司、起飞时间、票价折扣和主舱位;② 航空数据无显式评分;③ 信息提取及融合的模型框架搭建。针对以上问题,对航班采用航班细粒度建模并设计评分规则,构建基于图神经网络的民航旅客隐式交互特征挖掘的航班推荐模型挖掘旅客和细粒度属性间的隐式交互特征,丰富旅客和细粒度航班属性项目的潜在表征,提高旅客对未交互项目的评分精准度,最后综合细粒度属性评分生成航班推荐,提升个性化推荐的准确度。
1 图神经网络及相关概念
1.1 图神经网络
图神经网络(Graph Neural Network,GNN)是一种处理图结构数据的新型神经网络,旨在学习图网络中节点及其连接关系的潜在表征向量,提取结构化输入数据间的拓扑关系。GNN模型设计主要包含两个部分:局部集成函数f和局部输出函数g。f与g均由多层神经网络实现,局部集成函数f旨在集成当前节点邻域节点信息并生成状态嵌入向量,局部输出函数g旨在将该状态嵌入向量映射成等维的向量表示,数学表示如下:
hn=f(en,eco[n],hne[n],ene[n])
(1)
on=g(hn,en)
(2)
式中:hn为顶点n融合了该点邻域信息的状态向量;en表示顶点n的特征向量;eco[n]表示该点邻边的特征向量;hne[n]表示该点邻近顶点的状态向量;ene[n]表示该点邻接节点的特征向量。
通过大量训练,不断地更新神经网络参数,使得模型结果最大化地接近目标值。研究表明,GNN在处理图结构数据上具有强大的数据建模体系。在民航旅客航班推荐中,旅客和航班之间的交互关系构成了图结构数据,因此GNN对民航旅客航班推荐具有良好适应性。
1.2 旅客-商品交互图
旅客-商品交互图的顶点全集代表所有旅客与商品,每个旅客或商品对应一个点,旅客和商品之间对应的无向边的权值为旅客对商品的打分。未产生交互的旅客和商品之间没有连边。因交互关系仅在旅客和商品之间,也称该旅客-商品交互图为无向有权二部图。如图1所示,左侧节点是旅客,右侧节点是商品,左侧与右侧有灰色连边代表旅客与商品有交互,连边上的权重表示相关旅客对对应商品的打分。连边上标有“?”处是本文所构建模型的目标,即预测旅客对未交互商品的打分,从而实现对旅客的推荐。
图1 旅客-商品二部图
2 模型构建
通常情况下,推荐系统通过预测旅客对未打过分的商品的评分实现个性化推荐。但考虑到民航领域中,航班号的固定性以及登记序列对旅客选择航班影响的无效性。对乘客而言,航班属性如航空公司、起飞时间、票价折扣和主舱位对其选择出行航班更具有影响力。因此,本文研究的图结构旅客-项目交互图中的项目为航班属性,通过实现对旅客未交互过的项目进行评分预测,计算最终航班的评分,最终实现航班的个性化推荐,整体流程框架如图2所示。
图2 模型流程
2.1 细粒度建模及评分规则
为得到旅客对不同航空公司的评分,首先统计航空公司的数量。本文研究数据由中航信提供,通过统计,存在部分航空公司很少有旅客选择其航班,因此过滤掉这部分航空公司。最终航空公司的数量为20个,因此只考虑旅客对这20个航空公司的偏好。对于起飞时间属性,本文以4个小时为一个时间段,将一天划分为6个时间段,即00:00—04:00,04:00—08:00,08:00—12:00,12:00—16:00,16:00—20:00,20:00—00:00,本文模型挖掘旅客对6个时间段的偏好。折扣属性主要有3折以下、3折、4折、5折、6折、7折、8折、9折和全价这九种。至于主舱位属性,统计发现有C、F、W和Y这四种类型,因此只需对这四种舱位进行建模。
按照属性占比计算具体得分,评分标准如表1所示。
表1 评分标准
例如,旅客A购买了10张机票,其中有5张是ID为110的航空公司,3张是ID为129的航空公司,1张是ID为138的航空公司,1张是ID为220的航空公司。110航空公司占比50%,则旅客A对110航空公司评分为3分;129航空公司占比30%,则旅客A对129航空公司评分为2分;138航空公司、220航空公司各占比10%,则旅客A对138航空公司评分为1分,对220航空公司评分为1分。同样的方法可计算旅客A对舱位、折扣以及出行时间的评分。将原始的航班订票数据处理成<旅客ID,项目ID,评分>的形式,本文研究的项目包含航空公司、起飞时间、票价折扣和主舱位。本文中项目ID为1-20表示20个航空公司;21-26表示六种出行时间;27-35表示九种票价折扣;36-39表示四种舱位。按照评分计算法则,计算出旅客对项目的评分。得到<旅客ID,项目ID,评分>的形式作为模型的初始输入数据。
2.2 GNN隐式交互特征挖掘建模
2.2.1旅客特征建模
在描述具体模型之前,先给出相关符号及其含义,如表2所示。
表2 符号属性
旅客特征建模需要融合旅客交互过的项目特征,如图3所示。本文的旅客潜在表征融合了旅客ID嵌入表征、交互过的项目ID嵌入表征以及交互过的项目ID的评分嵌入表征,模型架构如图4所示,旅客模型构建的数学表示如下:
图3 旅客-项目交互图
图4 集成邻接节点特征的神经网络图
hi=σ(W·[Xagg_i⊙eu]+b)
(3)
式中:eu是旅客ID嵌入表征向量;W、b是神经网络中的权重和偏置量;⊙是矩阵元素层级的矩阵操作,Xagg_i是融合了该旅客交互过的项目的潜在因子向量,其表示如下:
式中:N(i)是旅客i交互过的项目集合,如图3所示,即旅客u1需要集成其交互过的项目特征及该旅客对交互项目的评分,αia是旅客i和交互项目a的权重因子,本文视旅客i和其交互项目之间的权重值相等且都等于1/|N(i)|。Xia表示旅客i交互过的项目a的潜在表征向量和该旅客对该项目的评分潜在表征向量的交互潜在表征。神经网络框架如图5所示,其数学表示如下:
图5 旅客潜在表征神经网络图
Xia=f([ea⊕er]
(5)
式中:⊕是矩阵拼接操作,函数f是用于融合项目潜在因子ea和旅客i对该项目的评价潜在因子er的多层感知机。
2.2.2项目特征建模
与旅客建模相似,本文的项目潜在表征融合了项目ID嵌入表征、被交互过的旅客嵌入表征以及产生交互关系的旅客对该项目的评分嵌入表征,项目模型构建的表征公式如下:
hj=σ(W·[Yagg_u⊙ej]+b)
(6)
式中:ej是项目ID嵌入表征向量;W、b是神经网络中的权重和偏置量;⊙是矩阵元素层级的矩阵操作;Yagg_u是融合了该项目被交互过的旅客潜在因子向量。
式中:N(j)是项目j被交互过的旅客集合;βjb是项目j和被交互旅客b的权重因子,本文视项目j和被交互旅客b之间的权重值相等且都等于1/|N(j)|。Yjb表示项目j被交互过的旅客b的潜在表征向量和该旅客对该项目的评分潜在表征向量的交互潜在表征,其数学表示如下:
Yjb=g([eb⊕er])
(8)
式中:⊕是矩阵拼接操作,函数g是用于融合旅客潜在因子eb和该旅客b对该项目的评价潜在因子er的多层感知机。
2.2.3评分预测
图6 评分预测神经网络图
2.2.4模型训练及调参
为优化模型参数,提高评分预测的准确率,本文采用的目标损失函数为:
式中:|Θ|表示评分的个数,ri,j表示真实评分。采用mini-batch提升训练速度。为优化目标函数并且使得梯度下降得更平缓,本文采用RMSprop优化函数来更新神经网络中的权值和偏置量。模型涉及的超参数有学习率lr、向量嵌入维度emb_size、mini-batch的大小batch_size。为更好地表示向量表征之间的相关性,向量初始化不采用传统的one-hot方式,选择嵌入映射模式,嵌入维度大小的选择对模型精准度影响也至关重要,向量嵌入维度参数调整范围为[32,64,128]。batch_size的大小影响模型的收敛速度和最终模型的精准度,每次迭代更新权值和偏置值时均以当前批次数据为依据,批次数据越大越接近整体数据特征,但batch_size过大会使得模型训练时间过长,而过小则会导致模型震荡收敛甚至偏离最优值,因此需要选择合适的batch_size,调整范围为[64,128,512]。学习率参数初步调整范围[0.1,0.05,0.01,0.005,0.001,0.000 5],实验发现学习率为0.005时,损失函数最小,因此进行局部调整,调整范围为[0.004,0.005,0.006]。
算法思路如下:
算法1更新权值和偏置量的算法
输入:
用户集合:U={ui|1≤i≤m}
项目集合:T={tj|1≤j≤n}
用户项目评分矩阵:R(m×n)
输出:
更新权值和偏置量的神经网络
执行过程:
1: 以批为单位训练数据集
2: Fort=1,2,…,batch_num:
3: 基于批次X(t)进行神经网络前向传播:
4:Z[1]=W[1]X{t}+t[1]
5:A[1]=g[1](Z[1])
6: …
7: …
8:A[l]=g[l](Z[l])
10: 基于损失函数反向传播计算梯度:
13: 更新权值和偏置量
15:END FOR
2.3 产生推荐
通过模型优化以及对超参数的调节,得到了适应本文研究的准确度最高的模型,进而预测旅客未交互的项目评分,得到一个user_num×item_num的评分矩阵,计算旅客未购买的航班对应的属性项目的评分累加和并按照从高到低的顺序排序,进而实现对旅客的航班个性化推荐。
3 实 验
3.1 实验数据及评价指标
本文使用中航信提供的PNR数据,根据模型需要筛选出113 756条旅客订票数据,筛选出模型所需属性列:订票旅客ID、航空公司、起飞时间、折扣率和主舱位。根据前面提到的评分计算法则对数据进行初步处理,得到<旅客ID,项目ID,评分>形式的数据。选取实验数据的80%作为训练集,10%作为验证集,10%作为测试集。
模型采用均方根误差(Root Mean Square Error,RMSE)来衡量模型的准确性。一般情况下RMSE越小说明模型预测评分越准确。
实验环境:处理器2.7 GHz Intel Core i5,内存16 GB DDR3 1867 MHz,编程语言Python。
3.2 实验结果及分析
为得到适配模型的最优超参数,选取不同值对模型进行训练。
3.2.1不同学习率对算法的影响
实验条件:向量嵌入维度emb_size为64,指数加权因子β为0.99,batch_size为128,学习率衰减因子lr_decay为0.1。迭代停止条件:最大循环次数epoch_num=30。变化条件:不同的循环次数epoch_num。对比实验:不同的学习率。
由图7可知,当lr=0.005时算法预测的准确度较高,在相同的迭代次数下,RMSE值较低且收敛速度也较快。同一学习率下,算法精确度随着迭代次数的增加而增加,在迭代次数为15之前,精确度增加的较快,之后变化不大慢慢趋于平稳。实验结论:学习率过小对导致收敛速度太慢,训练时间太长;学习率太高对使得梯度不稳定,甚至导致无法收敛。因此要选择适合本文模型的学习率。
图7 不同学习率对算法的影响
3.2.2不同向量嵌入维度对算法的影响
实验条件:学习率lr为0.005,指数加权因子β为0.99,batch_size为128,学习率衰减因子lr_decay为0.1。迭代停止条件:最大循环次数epoch_num=30。变化条件:不同的循环次数epoch_num。对比实验:不同的向量嵌入维度。
由图8可知,随着迭代次数的增加,RMSE值逐渐降低。对比看来,emb_size=64时,RMSE的最低点对应值最小,收敛速度最快。实验结论:向量嵌入维度影响模型收敛速度和最终模型准确度,本文算法中选取嵌入维度64可使得模型达到最优。
图8 不同嵌入向量维度对算法的影响
3.2.3不同批次大小对算法的影响
实验条件:学习率lr为0.05,指数加权因子β为0.99,学习率衰减因子lr_decay为0.1。迭代停止条件:最大循环次数epoch_num=30。变化条件:不同的循环次数epoch_num。对比实验:不同的批次大小。
由图9可知,批次大小越小,训练的速度越快。观察得,在batch_size为128时,训练速度相对较快,最低点处的RMSE值最低,准确度最高。
图9 不同批次大小对算法的影响
4 结 语
民航领域航班个性化推荐研究不足,结合航班特色,推荐模型的构建应当考虑细粒度建模研究。为实现个性化精准推荐,旅客航班之间的潜在交互特征应当被充分挖掘。本文构建的基于图神经网络的民航旅客隐式交互特征挖掘航班推荐模型充分挖掘了旅客隐式交互特征和航班的隐式交互特征,提升了航班推荐的精准度。但是不同类型的项目对旅客选择航班的影响不同,未来在构建隐式交互特征时将考虑引入注意力机制来进一步提升模型精准度。