基于TPA-Transformer的机票价格预测

2023-12-24 10:34申志豪李娜尹世豪杜一胡良霖
数据与计算发展前沿 2023年6期
关键词:购票步长航班

申志豪,李娜,尹世豪,杜一,3,胡良霖,3

1.中国科学院计算机网络信息中心,北京 100083

2.中国科学院大学,北京 100049

3.国家基础学科公共科学数据中心,北京 100083

4.中国民航信息网络股份有限公司,北京 101318

5.民航旅客服务智能化应用技术重点实验室,北京 101318

引 言

航空公司越来越倾向于使用复杂的机票价格制定策略来使收益最大化[1],对于相同出发地和目的地,在不同时间通过不同渠道购买的价格差异巨大[2],可能会出现一天内价格多次变动的情况[3],甚至针对时间敏感型、价格敏感型等不同类型乘客[4]、不同座位[5]分别定价。因此,以最低成本购买机票是一项具有挑战性的任务,乘客根据自身经验尽早购票不一定比临期购票更便宜[6],同时,提前购票意味着出行时间上的选择固定以及需要为出行变更承担改签或退票的风险。一般而言,随着起飞日期的临近,机票价格会先降低再升高,呈U形变化[7]。

传统时序预测模型,如ARIMA(Autoregressive Integrated Moving Average model),由于结构简单无法捕获复杂的时间依赖关系,机票价格预测效果往往不尽人意。此外,如变化趋势、周期性等部分模型参数设定需要具有一定的专业知识,无形中提高了其应用难度。

随着机器学习的快速发展和广泛应用,使用多种机器学习对机票价格进行预测得到广泛应用。Li等8]设计并实现了一个结合ARIMA和随机森林的票价预测系统;Liu 等人[9]使用KNN(最近邻算法)、随机森林和贝叶斯,在限定路线上预测出发前可能的最低价格,证明节假日对机票价格有重要影响。与此同时,Tziridis 等人[10]使用并比较了包括多层感知机、线性回归以及随机森林在内的8 个机器学习回归模型进行预测。类似的,Subramanian 等人[11]也选择一组典型特征通过多种机器学习方法进行价格预测。

随着时间序列预测方法的发展,更进一步,Lu等人[12]将机票价格预测作为时序预测任务进行处理,实验表明模型比随机购买策略性能提高61.35%。此外,在将机票价格处理为时序数据的基础上,Du等人[13]提出了一种多层卷积长短时记忆网络模型(Multi-Layer Convolution Long Short-Term Memory,MLC-LSTM)及其一个新的基于时间序列的机票价格预测数据处理方法,将价格作为序列输入特征且不丧失原数据时序性质,模型的性能优于LSTM(长短期记忆网络)等现有模型,证明了该数据处理方法的有效性。

随着注意力机制的广泛应用,机票价格预测领域出现引入注意力机制的研究。张前前[14]使用空间注意力机制对竞争航班之间价格影响进行建模作为空间关系。更进一步,为解决传统模型无法处理在不同时间步长相同特征影响不 同 的 问 题,Zhao 等 人[15]使 用Seq2Seq(Sequence to Sequence)模型向Encoder(编码器)、Decoder(解码器)中添加注意力机制,并通过解码器中的时间注意力机制进行优化,以捕获价格序列中复杂时间依赖性。

近几年,Transformer 在时间序列预测上表现优异[15],但Transformer 本身仍然存在时间复杂度二次增长、Encoder-Decoder 架构固有限制等问题使其直接应用于多步时间序列预测时效果不佳。与此同时,部分时间序列预测研究发现,通过引入外部信息可以有效提高模型性能[16]。

基于以上问题,本文提出TPA-Transformer,从乘客角度出发,进行机票价格预测,模型使用注意力机制引入其他航班价格变化参考信息,并通过多层卷积结构融合多航班不同属性并提取局部特征,提高模型的多步预测性能。

1 TPA-Transformer模型

1.1 模型的提出

当前航班价格通常会受其他航班影响:如同日出发航班存在价格竞争,或多航班受同一因素影响出现相似价格变化波动。例如价格优惠活动可能会引发局部价格战,导致同期航线大量航班价格降低;或目的地举行大型体育赛事,导致同目的地航线普遍价格增长。不同航班价格受相同因素影响时,其他航班在当前序列上的价格变化规律对当前航班的价格变化具有一定的参考意义。因此,本文在Transformer基础上,使用注意力机制引入其他航班价格参考信息,提高模型对价格变化的感知能力;同时,加入多层卷积结构,提取局部特征与多航班不同属性信息融合,最后通过全连接层解码输出。

1.2 模型框架

模型框架如图1 所示,TPA-Transformer 主要包含以下4 个部分:(1)引入其他航班价格参考信息的自注意力模块(Self-Attention Module);(2)提取预测航班信息的堆叠Encoder 模块;(3)航班间信息融合、局部特征提取的多层卷积(Multi-layer Convolutions)模块;(4)解码输出最终预测价格的全连接层(Fully Connected Layer)。

图1 TPA-Transformer结构Fig.1 The architecture of the TPA-Transformer

(1)引入其他航班价格参考信息的自注意力模块(Self-Attention Module)

同期航班的价格变化规律对当前航班的价格波动具有参考意义。为有效衡量竞争与同步变化,引入自注意力机制,增加价格感知模块,引入同期其他航班价格变化参考信息。

为了考虑以上特征对价格的影响,注意力模块的输入为当前预测航班及同日出发,当前预测航班以外的其他11 个航班连续10 天的价格序列向量,p={p0,p1,…,p11},piϵR10,其中p0为当前航班的价格序列,{p1,…,p11} 为其他航班的价格序列。由于需要获得航班机票价格的变化趋势,因此使用价格序列的前向差分形式。输入自注意力模块的价格参考信息维度dattention=12。

(2)提取预测航班信息的堆叠Encoder模块

Encoder 模 块 由6 个 堆 叠 的Encoder 层 组成。Encoder 部分主要学习历史序列信息,并对其进行编码,为后续的解码预测做准备。将36维的当前航班输入向量与上一步经过自注意力价格感知模块处理输出为12维的其他航班价格参考向量进行向量拼接,得到序列长度为10,每个时间节点表示向量维度为48 维的特征向量,输入到Encoder。具体计算过程为:

第一步,对特征向量添加位置编码,位置编码使用三角函数位置编码,且添加位置编码后不改变向量的维度;

第二步,经过多头自注意力机制,此处dmodel=48,因此使用头数为4的多头注意力机制;

第三步,为了更好地优化深度网络,进行残差连接与Layer Normalization,残差连接将强化模型内部信息的流动,而Layer Normalization 将神经网络中隐藏层归一化为标准正态分布,即独立同分布,加快训练速度和加速收敛;

第四步,经过Feed Forward(前馈神经网络),即两个全连接层,其中第一个全连接层包含ReLU激活函数,第二个全连接层不使用激活函数。接下来与第三步相同,进行残差连接与Layer Normalization(层标准化)。重复经过相同的6 个堆叠的Encoder,最终输出维度dmodel=48保持不变。

(3)航班间信息融合、局部特征提取的多层卷积(Multi-layer Convolutions)模块

由于上一步Encoder 的输出向量包含其他航班参考价格信息、本航班价格信息与其他特征信息,因此使用多层卷积结构进行局部特征提取。其中堆栈包含两个卷积层。滑动窗口在每层的特征向量中从头到尾滑动。第一次卷积输出channel=16,第二次卷积输出channel=32。通过这种方式,按时间序列排序的相邻航班的相互影响信息包含在输出矩阵中。

(4)解码输出最终预测价格的全连接层(Fully Connected Layer)

经过多层卷积模块后,解码器使用全连接层。将全连接层放在模型的最后,以解码串联输出,输出为所要预测的机票价格Y。网络深度为2,上一步多层卷积神经网络的输出经过reshape作为输入,其中第一个全连接层包含ReLU激活函数,第二个全连接层不使用激活函数。MSE(均方误差)损失函数计算预测价格与实际价格的相似性,使用梯度下降法进行反向传播,以此反复迭代训练得到最佳网络参数设置。

2 实验数据

2.1 数据来源

实验数据来自中国航信旅客业务系统一定历史时间范围内经过脱敏的民航旅客飞行过程业务活动数据,时间跨度361天,从2017年6月21日至2018年6月16日,往返机场为北京首都国际机场(PEK)与上海虹桥国际机场(SHA)。数据覆盖20个不同航班,共计603,221条飞行记录。

旅客业务数据在记录时已将转机、换乘等多航段情况分拆,所以不需要考虑转机、换乘的多航段情况。与传统数据处理时间序列数据不同,本文将机票价格作为输入向量的一部分,且保证处理后的数据在时间维度上保持不变。

2.2 数据预处理

实验数据为系统结算数据,在系统记录保存过程之中存在少量异常数据,剔除少量离群点、异常值和空值。真实客票数据存在距离起飞时间过早无人订票导致数据稀疏,当输入大段不连续时,时间序列预测模型将丧失部分时间依赖关系,导致预测性能降低。因此选定距离起飞天数20 天到距离起飞天数0 天(当天起飞当天购票)的价格与其他特征作为输入,时间序列步长为1天。

选取6个对机票价格影响较大的主要特征:机票价格、购票日期、起飞日期、起飞时间、降落时间、航班号。鉴于特殊时间节点对价格也有明显影响,因此将是否节假日(1 表示节假日,0表示非节假日)与周几信息(One-Hot,独热编码)作为外部补充信息。

2.3 特征选择与处理

对起飞日期重新排序,将时间戳转为数值,第一天2017年6月21日编号为1,2017年6月22日编号为2,日期依次递增,至最后一天2018 年6月16日编号为361。

将航班预定起飞日期减乘客购票日期得到距离起飞天数,对于每个航班每个起飞日期,得到从20到0(提前20天购票至起飞当天购票)的序列,替代原购票日期,即此时每个出发日期,对应一个长度为21的子序列。

因原始数据时间结构混乱不能直接输入机器学习模型,因此将原始数据按时间序列进行重新排列。对于全部乘客客票数据,存在至少3个时间维度:乘客购票日期、航班预定起飞日期、乘客购票时距离起飞天数。选取起飞日期作为第一时间序列,距离起飞天数作为第二时间序列,将原始数据转换为时间序列数据。此时,机票价格的时间序列数据如图2 所示,上轴为起飞日期,编号从1至361,表示所购机票的起飞日期。下轴为购买机票日期对应的距离起飞天数。每个购票日期对应一个(距离起飞天数)子序列,定义这个长度为21 的子序列为一个周期。Ti,j表示起飞日期为i时,距离起飞天数为j时,对应的价格及其他特征信息。若将多个周期的时间节点重新排列为矩阵形式,如图3 所示,则反对角线上的元素在同一天。

图3 不同距离起飞天数与起飞日期对同一天对应关系Fig.3 Correspondence of the same day of different Days to Departure and Departure Date

如图4 所示,在选择输入输出时,若输入输出属于不同周期,可能会出现用未来的价格来预测现在价格的情况。

图4 错误输入输出示例Fig.4 Error input and output example

例如,使用序列长度为10 的{T2,7,…,T2,0,T3,20,T3,19}作为输入,输出T3,18,其中,T2,7表示2017年6月15号购买2017年6月22号出发的机票数据,T3,18表示2017 年6月5 号购买2017 年6月23 出发的机票数据,此时使用6 月15 号的数据来预测过去2017 年6 月5 号即10 天前的价格,出现矛盾。为避免这种情况出现,在选择同一条输入输出时,长度为11的价格序列(10个输入1 个输出)只能在同一个周期(即起飞日期相同,Ti,j中i相同)进行选择。

如表1所示,本文将价格作为输入向量的一部分,且保证处理后的数据在时间维度上不变。所获取的旅客飞行业务数据在经过预处理基础上,使用以下8个对机票价格有着重要影响的特征:机票价格、起飞日期、购票日期、航班号、是否节假日、周几、起飞时间以及降落时间作为模型的输入特征并将其转换为模型可以输入的形式。其中,机票价格为浮点数,起飞日期转为从1 开始的正整数,节假日、周几转换为One-Hot 形式。由于航班类别较少且不同航班价格变化规律不同,因此将航班号也转换为One-Hot 形式。此外,将起飞时间、降落时间由24H 制改为十进制(例如14.50 表示14:30)。这些特征共同组成一个36维的输入向量。

表1 特征选取与格式转换Table 1 Feature selection and format conversion

为得到适合模型输入的数据,对数据进一步处理。TPA-Transformer输入:同一个周期内,连续10 天的价格加上其他非价格特征,再加注意力模块的其他航班参考价格,输出为接下来一天的价格。其他5 个对比模型的输入不使用其他航班价格参考信息,输出相同。TPA-Transformer的一条输入输出如图5所示。

图5 机票价格预测输入输出Fig.5 Input and output of air ticket price prediction model

在单步预测时,为了检验数据处理效果和模型对比,在原多航班(20 条不同航班)数据集的基础上随机抽取一个航班号为flt_nbr5151 的单航班数据集用于结果对比。同时,为了对机器学习模型进行测试、验证,将所有实验数据按购票日期顺序按7:2:1划分训练集、验证集、测试集,各部分之间没有重叠。

3 评价指标与实验设置

3.1 评价指标

选取MSE、RMSE(均方根误差)、MAE(平均绝对误差)、ACC(准确率)与AMS(Amount of Money Saved,平均省钱额度)作为评价指标。其中ACC由MPPE(平均绝对百分比误差)计算得到:

此外,为直观评价模型对乘客的实际帮助,定义作为模型的评价指标:当前周期(即相同出发日期)的平均价格(即随机购买策略成本),减去乘客在预测最低价格的时间购票时实际购票所花费的真实价格。

设在序列i中,真实价格为yi={yi,1,yi,2,…,yi,n},预测价格为为预测最低价,即,则AMS为:平均价格减去预测价格最低的提前购票天数,对应的实际购票金额,AMS公式如下所示。

3.2 实验设置

输入步长与预测步长之和最大为整个子序列长度(21),在选择最大预测步长时,受限于获取数据的序列长度限制,若预测步长过长,会导致输入序列过短,进而出现模型预测性能下降;若预测步长过短则失去多步预测的意义,不能验证模型的多步预测性能。为了平衡最大预测步长与模型性能,设定输入序列长度为10,并对最长预测步长为10的价格进行预测。所有模型均由PyTorch 实现,所有实验均在一个AMD EPYC 7742 CPU 和8 个NVIDIA A100 GPU 的Liunx 服务器上进行。训练的初始参数设置基于其他研究与测试小数据集经验设置,在此基础上进行调整,每组参数经5次在验证集loss连续10 轮不上升即停止迭代,经对比不同参数实验结果,选取结果最优的一组作为最终参数设置。模型的最优实验参数设置如表2所示。

表2 TPA-Transformer参数设置Table 2 TPA-Transformer parameter setting

多步时间序列预测策略选择递归多步预测,得到步长为10 的多步预测输出。模型经过训练后,使用测试集中的数据进行预测。为验证模型性能,除使用TPA-Transformer 进行多步价格预测,还使用5个对比模型,随机森林、GRU(Gate Recurrent Unit)、LSTM、XGBoost(极端梯度提升)、Transformer进行实验。

4 实验结果与分析

4.1 单步预测结果分析

在预测步长为1 时,问题转换为单步预测,使用5 种评价指标,在单航班、多航班数据集上分别进行试验,各模型实验结果如表3所示。

表3 单步预测实验结果Table 3 One step prediction experimental result

由表3中实验结果可知,不同机器学习模型结果有显著差别。整体而言,深度学习模型由于其较强的依赖关系捕获能力,结果普遍优于集成学习。TPA-Transformer 模型效果最好,Transformer 模型效果次之,RNN(循环神经网络)结构网络模型再次之,集成学习模型最差。此外,单航班数据集由于其时间依赖关系相对简单,各模型在单航班数据集中的表现普遍优于多航班数据集。而多航班数据集除不同航班价格变化规律不同外,相同特征变化情况对不同航班价格影响也不同,因此多航班的价格预测需要模型具有更强的依赖关系捕获能力。

对所选取的5 种模型,随机森林表现最差,作为基于决策树的一种集成学习算法,由于随机森林本身是基于Bagging(引导聚集算法)思想导致其在训练过程中无法对误差进行及时调整,因此随机森林的评价指标在单航班与多航班数据集上均为最低,ACC均低于90%,在多航班情况其ACC最低为88.56%。XGBoost模型是对GBDT(Gradient Boosting Decision Tree)的改进,相比于随机森林,除增加了并行处理提高了训练速度,还加入了正则化处理且使用能对其进行二阶求导的损失函数,提高了模型的准确率和训练速度,其在单航班数据集预测的ACC达到90.05%,相比于随机森林,ACC 提高了约1%。随机森林和XGBoost 作为集成算法,由于树结构本身的局限性,相比于Transformer、RNN结构的LSTM、GRU 在多变量问题下优秀的长时间依赖捕获能力,在5 个评价指标上表现最差。其中,由于错误预测可能会导致序列中节点出现局部AMS 为负,因此随机森林和XGBoost 的AMS 均为最低。LSTM 通过引入遗忘门、输入门、输出门来控制记忆值、输入值、输出值,缓解了RNN 在长时序依赖的梯度消失和梯度爆炸问题,在时间序列预测中表现优于两个集成学习算法,评价指标ACC 在单航班数据集与多航班数据集中分别达到了91.74%与90.63%,相较XGBoost 提高了约1%。类似的,GRU 通过重置门(Reset Gate)控制新传入的状态信息如何与之前的细胞状态相结合,再通过更新门(Update Gate)同时进行遗忘和选择记忆,控制前一个细胞状态的信息传入到当前细胞的程度。GRU 训练速度高于LSTM,结果与LSTM 接近,ACC 在单航班与多航班数据集上结果相近,相差均小于1%,两个模型在其他评价指标的结果同样相近。相比于其他方法,Transformer通过增加模型大小、更好的周期性趋势分解,能更有效地捕获时间依赖关系,基于多头注意力机制的模型结构使得Transformer同时具备建模长期和短期时序特征的能力,从而得到更好的性能,在单航班与多航班数据集中,在5 个评价指标上Transformer均取得了不错的实验结果,其中在单航班数据集上ACC 达到了92.57%,相较于LSTM 提高了约1%,AMS 最高达到了67.05。

无论在单航班价格预测,还是在多航班价格预测上,模型TPA-Transformer 均优于5 个对比模型,使用注意力机制引入其他航班参考价格信息后,通过感知其他航班的价格变化规律,帮助模型提高预测性能。二维卷积模块可以有效帮助模型信息融合与特征提取,不仅提高了模型预测准确率,还加快了模型收敛速度。在单航班预测上,ACC指标达到了最高的93.66%,而在多航班预测上,ACC指标达到92.76%,相较于Transformer提高了约0.72%,在其他评价指标上均优于5个基线模型,说明模型具有较强的泛化能力。

4.2 多步预测结果分析

使用递归多步预测策略在多航班数据集上,对TPA-Transformer 与5 个对比模型分别进行试验,使用ACC 作为评价指标分别对各模型在预测步长为1至10的结果进行预测。

(1)随机抽取两个序列进行模型验证

为验证模型性能并直观展示,随机抽取其中两个时间节点(出发日期为2017年8月1日与2018 年5 月18 日)并对其价格预测情况进行展示,根据历史价格数据对其出发前9天至出发当日价格进行预测,TPA-Transformer 预测结果如图6、图7所示。

图6 TPA-Transformer在2017年8月1日预测结果Fig.6 TPA-Transformer’s forecast results on August 1,2017

图7 TPA-Transformer在2018年5月18日预测结果Fig.7 TPA-Transformer’s forecast results on May 18,2018

对于实验结果进行可视化展示,虽然TPATransformer预测值相较真实值存在一定的滞后性,但在各个时间步上都取得了不错的预测结果,且涨跌趋势基本相符。当预测步长不超过3时,预测价格与真实价格十分接近但在预测步长较长的临起飞前3天仍有一定误差。

(2)实验结果对比展示

由图8 可知,TPA-Transformer 模型在各个时间步上都取得了最优的实验结果,相比其他基线模型评价指标准确率ACC 最高获得了8%的效果提升。尽管模型的预测准确率随着预测步长的增加而降低,但准确率降幅始终保持平稳变动,在预测时间步长为1 天、2 天、3 天时模型准确率下降并不明显。预测步长超过3天时,由于不断迭代造成的累计误差,精度逐渐不断下降,在第10天准确率降为89.13%。

图8 多步机票价格预测结果对比图Fig.8 Comparison chart of multi-step ticket price prediction results

Transformer 依靠多头注意力机制使其可以从时间序列数据中学习复杂的时间依赖关系。其效果仅次于TPA-Transformer,在步长为10时,准确率最终维持在86.94%。此外可以看出,虽然LSTM与GRU随着时间的增加其准确率波动较大,但由于其链式结构和门控结构,仍对时序预测有较强的建模能力,最终在预测步长为10时预测准确率最终降至85%左右。

结果清晰呈现了深度学习模型的准确率明显优于两个集成学习模型(XGBoost 与随机森林),且随着时间步长的增加,准确率下降更为稳定,主要是由于决策树算法对数据之间的依赖建模较为简单,无法模拟数据之间复杂的时序关系和时间依赖。随着预测步长的增加,XGBoost 与随机森林下降速度最快,并在预测步长为10时预测准确率最终降至82%左右。

5 结论与展望

本文首先论述了机票价格预测的研究背景,其后通过数据分析、特征选择与处理得到价格时序数据,然后设计并实现TPA-Transformer价格预测模型。为提高预测准确率,满足乘客不同时间步长价格查询的需求,研究提出TPATransformer,通过增加注意力模块引入其他航班价格参考信息,并通过在Encoder后增加多层卷积模块进行多航班多属性信息融合和局部特征提取,从而提高模型在多步价格预测上的表现性能。随后在5 个回归评价指标(MSE、RMSE、MAE、ACC 以及AMS)上对模型结果进行验证。实验证明,无论在单步还是多步预测上,TPA-Transformer 优于其他5 个对比模型,有效提高了预测准确率。

研究虽然引入了节假日的特征,但不同节假日、同一个节假日不同时间点对价格的影响不同,若能根据不同节假日影响大小甚至同一个节假日内不同时间节点分别计算权重系数,将有助于提高模型性能。此外,在机票价格预测领域,现有模型均为静态模型,即基于一组固定的历史特征和特定数据集。若模型能基于实时数据,例如社交媒体、实时天气预报、晚点情况等,构建动态学习模型,将有助于提高模型的短期预测能力,甚至是实时预测效果。

利益冲突声明

所有作者声明不存在利益冲突。

猜你喜欢
购票步长航班
不同的购票方法
全美航班短暂停飞
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
山航红色定制航班
山航红色定制航班
山航红色定制航班
直击痛点的“候补购票”可多来一些
铁路候补购票服务扩大到全部列车
基于逐维改进的自适应步长布谷鸟搜索算法
一种新型光伏系统MPPT变步长滞环比较P&O法