APP下载

铁路客运需求分析与短期客流预测

2022-04-06肖尧刘斌杨浩

科学技术与工程 2022年9期
关键词:客流向量铁路

肖尧, 刘斌*, 杨浩

(1.兰州交通大学交通运输学院,兰州 730070;2.中铁第一勘察设计院集团有限公司, 西安 710043)

随着中国高速铁路网络的逐渐完善以及运输市场竞争的日益激烈,掌握客运需求规律、科学优化资源配置对于铁路企业进行精细化的运营管理极为重要。列车开行方案优化、客车票额合理分配、客票收益管理研究等都需要铁路企业对自身客流的历史需求规律进行合理剖析和对未来需求做到准确把握。为此,铁路企业亟须科学准确的客运需求分析与短期客流量预测的方法,以充分利用客票系统积累的海量数据,对客运市场变化及客流波动快速做出反应。

当下国内外对于铁路客运需求分析的研究主要围绕宏观上分析区域内影响客运需求的主要因素展开[1],这一类研究可以为铁路企业掌握整个客运市场的体量作为参考,但对既有铁路精确到日常的生产而言很难发挥指导作用。由于现今城际列车每日的高频开行以及铁路票价的常年稳定,旅客对于铁路客运的需求也处于相对稳定的状态且具有一定规律,因此对于各个区间客运需求的分析完全可以通过挖掘历史数据得知。为此,寻找一个可以有效处理客流历史数据,从而在复杂庞大的数据中分析各时间区段下客运需求规律的方法是一个策要的研究目标。

铁路短期客流预测是一种典型的时间序列预测。传统时序预测方法主要是以灰色预测模型,自回归滑动平均模型(autoregressive moving average model,ARMA)[2],差分整合移动平均自回归模型(autoregressive integrated moving average model,ARIMA)[3]及这些模型的变体[4]等为代表的以统计学理论为基础的参数模型,这类传统方法能够在一定范围内刻画时序数据的周期性与季节性的变化,在处理平稳的、非白噪声的时间序列数据上表现良好,然而在处理铁路客流量这种随日期具有很大波动的数据时往往预测效果欠佳。随着机器学习的快速发展,非参数类方法可以较为出色地解决铁路客流数据这种非稳态时序数据分析的难题。这些方法主要包括传统机器学习,如支持向量机[5-6]、贝叶斯网络[7]和各种基于引导聚集(bootstrap aggregating,bagging)算法[8]、boosting[9]的集成算法及在这些模型基础上的优化改进等,还包括深度学习,如传统的反向传播(back propagation,BP)神经网络[10-12]、长短期记忆网络[13-15]、门控循环单元[16]、迁移学习[17]等。在处理铁路短期客流预测的问题时,这类算法需要将时间序列数据处理成监督学习数据,这样操作通常会造成模型只能获取相对固定的、较短的上下文依赖,因此模型算法能否充分拟合铁路客流数据的特点就显得尤为重要。

基于此,现将从数据驱动的角度出发,针对切合铁路客流特点的客运需求量分析模型和短期预测模型展开研究,旨在为铁路企业进行精细化的运营管理提供决策依据。

1 基于Prophet模型的铁路客运量需求分析

1.1 Prophet模型

随着中国高速铁路的成网运营及人们出行需求的日益稳定,铁路客流需求在时间上的分布特征逐渐呈现出规律。铁路客流依据不同的时间尺度可分为年、月、周客流。其中,年客流随着铁路的发展逐年呈现一定趋势,月客流随季节淡旺规律明显,周客流有明显固定的高低峰日。同时,不同类型的节假日还会引起客流呈现出不同程度的骤增骤减。

Prophet是由Taylor等[18]提出的一种基于加法模型的时间序列分解模型,模型整体将时间序列拆解成趋势项、季节项、节假日项以及误差项4个部分进行拟合,表达式为

y(t)=g(t)+s(t)+h(t)+εt

(1)

式(1)中:趋势项g(t)、季节项s(t)分别对时间序列数据的非周期性变化部分与周期性变化部分进行了建模;节假日项h(t)对数据在节假日期间的异常突变进行了量化;误差项εt表示任何不适应模型的特有变化。

Prophet模型非常适用于铁路客流这种具有强烈季节性影响与节假日影响的时间序列,它的趋势项、季节项与节假日项可以很好地在大数据的环境下对铁路的年客流、月周客流与节假日客流特征进行建模量化,有助于铁路企业利用海量历史售票数据提取分析各区间的旅客在不同时间内的出行需求以及进行短期客流预测,从而进一步提升铁路旅客运输组织的效率。

1.2 基于Prophet模型的铁路客流时间分布特征分析

综上所述,铁路客流的时间分布类型[19]与Prophet模型分解项之间的对应关系如表1所示。

表1 客流时间分布类型与Prophet模型对应关系

Prophet在趋势项上提供了两种模型,分别是基于逻辑回归的饱和增长模型和线性分段模型,即

(2)

g(t)=[k+a(t)Tδ]t+m+a(t)Tγ

(3)

(4)

(5)

式中:C(t)为t日某区间的最大运能;k为曲线增长率;m为曲线偏移量;Sj为增长率发生变化时对应的点;a(t)为由aj(t)组成的列向量;aj(t)为t日时某个变点Sj是否已经发生;δ为增长率变化量组成的列向量;γ为修正因子组成的列向量,用作变点处的平滑处理以保证曲线的连续可微性。

Prophet在季节项上使用傅里叶级数模拟时间序列的周期性,表达式为

(6)

式(6)中:N为总输入天数;P为周期天数;an、bn为平滑参数,假设an、bn的先验分布服从正态分布。

Prophet在节假日项的计算上使用一个用户预设的节假日列表,并假设每种类型节假日的影响在该时间区段内是一个定值。

h(t)=Z(t)κ

(7)

式(7)中:Z(t)为t日在其所对应类型的节假日集合中所处的位置矢量;κ为此类型假期集合中每日对应的影响参数所组成的列向量,假设κ的先验分布服从正态分布。

2 基于Seq2Seq-Prophet非线性组合模型的短期客流预测

2.1 Seq2Seq-Attention网络

铁路日客流以星期为单位的周期波动是其最显著的特征之一,以星期的倍数作为模型的输入输出长度并使模型进一步捕捉到输入输出数据间的软连接,可以使模型更易抓住数据周期波动这一信息。传统机器学习和长短期记忆网络在进行客流预测时都存在只能输出固定长度序列数据的限制,故使用可自定义输入输出长度的Seq2Seq网络[20]进行预测。

图1为Seq2Seq网络的基本网络结构,这种结构又称Encoder-Decoder模型,Encoder将输入序列编码成一个固定长度的语义向量C,Decoder将向量解码成指定长度的序列进行输出,从而达到灵活输出序列长度的目的。使用善于处理时间序列数据的LSTM网络构建编-解码器。

xt、yt分别为模型的输入与输出;A为神经网络的一个单元;C为语义向量

LSTM网络是RNN网络的变体,其改善了RNN中存在的无法解决数据长期依赖的问题。图2为LSTM单元的结构,LSTM的单元内存在4个不同的全连接层,全连接层的每一个结点都与上一层的所有结点相连,其主要用途是把模型提取到的特征综合起来。主层是输出为gt的层,它的基本作用是分析当前输入xt和前一个隐状态ht-1。其他3个层是门限控制器,分别是:由ft控制的忘记门限,控制着哪些记忆状态应该被丢弃;由it控制的输入门限,控制着gt的哪些部分会被加入记忆状态;由ot控制的输出门限,控制着哪些记忆状态应该在这个时间迭代被读取和输出。随着记忆状态ct-1从左到右贯穿网络,它首先经过一个忘记门限丢弃一些记忆,然后通过输入门限选择添加一些新的记忆。所以,在每个时间迭代中,一些记忆被丢弃,同时一些记忆被增加。此外,经过额外操作,记忆状态被复制并传入tanh函数,然后其结果被输出门限过滤,从而产生了新的隐状态ht。LSTM就是在这样的循环之下,学习哪些记忆需要储存,哪些记忆需要丢弃,以及从哪些记忆中去读取,从而结合输入变量去预测输出变量的。其中it、ft、ot、gt、ht、ct的计算表达式为

xt、ct、ht分别为模型的输入向量、记忆状态和隐层状态;gt为模型主层结构;ft、it、ot分别为模型的忘记、输入和输出门限;σ、tanh为sigmoid与tanh函数

(8)

(9)

(10)

(11)

ct=ftct-1+itgt

(12)

ht=ottanh(ct)

(13)

式中:σ为sigmoid函数;Wxi、Wxf、Wxo、Wxg为每一层连接到输入向量xt的权重矩阵;Whi、Whf、Who、Whg为每一层连接到前一个隐状态ht-1的权重矩阵;bi、bf、bo、bg为每一层的偏置项。

然而,简单的Seq2Seq网络在进行预测时也存在一些问题。在编码输入序列时,模型需要压缩所有的信息在一个固定长度的向量中,这就会使该模型在面对长序列时会产生信息超载的问题,随着序列的增长,序列前面的信息就可能会发生丢失;同时,解码器每次的输出仅与上一个输出元素以及当前的隐状态有关,输入序列元素与输出序列元素之间没有关联。对于铁路客流来说,学习输入序列和输出序列之间的软连接有助于提高模型对于客流周期性的运用,从而进一步提高预测精度。为此在Seq2Seq的基础上引入注意力(Attention)机制[21],Attention可以利用有限的注意力资源从大量信息中快速关注重点目标区域,这种机制有助于模型关注序列中隐藏的关键联系。构建Attention的流程如下。

步骤1选择使用双向长短时记忆网络(bi-directional long short-term memory,Bi-LSTM)构建编码器部分,使其每个单元的隐状态包括正向与逆向输入的两部分,这可以使模型对输入序列有更好的表达,不易丢失数据。

(14)

步骤2将编码器的所有隐状态加权编码进向量,生成动态向量Ci。

(15)

(16)

eij=D(si,hj)

(17)

式中:aij为权重参数;hi为编码器第i个单元的隐状态向量;si为解码器第i个单元的隐状态向量;n为编解码器隐状态的数量;D()用于计算两向量的相关性。

步骤3使解码器每一步的输出依赖于上一个单元的隐状态si以及该步对应权重下的动态向量Ci。

si+1=LSTM(si,Ci)

(18)

综上所述,选择使用一个Bi-LSTM构建Encoder模型,使用LSTM构建Decoder模型,引入Attention机制进行动态向量的计算并参与最终输出,整体示意图如图3所示。

hi为编码器第i个单元的隐状态向量;si为解码器第i个单元的隐状态向量;Ci为动态向量;每个LSTM表示LSTM网络的一个单元

2.2 基于BP神经网络的Seq2Seq-Prophet组合预测模型

不同的时序预测模型对于数据信息的利用角度不同,将不同的模型合理组合起来有助于不同模型间的优势互补,从而避免单一模型的固有缺点,充分挖掘数据各方面信息,以达到进一步提升预测精度的目的。从模型特点上来看,Prophet模型的预测基于全局数据,在数据特征稳定时即便数据规模不大,预测效果也会很稳定,但铁路客流往往会由于政策、自然环境等因素发生脱离其原有特征的突变,Prophet模型的机制使其无法适应这种情况,甚至会造成对整体趋势与周期的误判;Seq2Seq-Attention模型由于其庞大的参数数量使得模型极其灵活,可以很好适应数据的变化,但当数据规模不够时,模型将无法得到充分训练。组合这两种本就切合铁路特点的模型,可以进一步互补双方优势,提升预测的精度。

传统的赋权组合模型通常是根据单模型的预测精度按比例给单模型一个固定的权重进行加权预测。然而,随着数据集的规模、复杂度、噪声的不同,固定的赋权方式无法使组合模型很好地适应不同特征的数据,同时线性相加的赋权模型往往对于复杂环境的动态变化反应不够及时。因此选择使用BP神经网络将Seq2Seq网络与Prophet模型非线性组合起来,根据两个模型在当前数据上的拟合情况训练权值参数,使得模型尽可能地在不同的数据上发挥各自优势。使用该组合模型进行客流预测的过程如下。

步骤1将客票历史数据进行预处理,提取出需要进行预测的时间序列并进行数据清洗。

步骤2将数据分为训练集和验证集,使用处理好的训练集分别训练Prophet模型和Seq2Seq-Attention网络,并通过验证集在优化模型超参数同时防止过拟合。

步骤3将整个数据集输入训练好的两模型,输出模型在数据集上的拟合结果以及模型在目标天数内的预测值。将Prophet模型的拟合序列P和原始客流的时间序列Y重新组织成与Seq2Seq拟合矩阵S相同维度的n列数据矩阵,合并构建新的监督学习矩阵[P1,P2,…,Pn,S1,S2,…,Sn,Y1,Y2,…,Yn],并划分训练集和验证集。

步骤4使用训练集训练一个深度神经网络,通过模型在训练集和验证集的拟合情况确定网络层数并优化模型超参数,训练完成后将两个单模型的预测结果按同样方法组合起来输入这个训练好的模型预测未来多日客流量。

3 算例分析

3.1 数据分析及预处理

数据包含某条客运专线上的某个区段(ZD111站—ZD190站)2015年1月1日—2016年3月20日,共计445 d内每天在此区段下行方向上运行过的所有列车的旅客列车梯形密度表。每张表中的数据包含某趟单列车当日的停站方案、客座率以及各起讫点(origin and destination,OD)区间的旅客数量。以G01次列车在2015年1月1日的列车梯形密度表为例,G01次列车于8:05由始发站出发,于19:05到达终到站,途经19个车站,共计包含210个OD区间,其示意图如表2所示。

表2 旅客列车梯形密度表

提取每日由ZD111站出发至ZD190站的旅客人数并进行简单数据清洗。根据统计得出,该OD区间的乘车人数于2016年2月26日达到峰值,但行驶于两站的直达列车中仍存在客座率低于60%的列车,故认为该区段的运力完全满足该区段旅客的日出行需求,区段里每日的乘车人数可以大致表示当日人们对该区段铁路运输的全部需求。将最后14 d的客流作为未知量来对客流预测结果进行评价。

3.2 铁路客运需求分析

使用Facebook的fbprophet框架进行模型构建,首先将数据包含时间段内的所有节假日进行整合分类并设置节假日时间窗,如表3所示。

表3 数据包含节假日时间窗

将节假日大致归为春节、劳动节、国庆节以及普通节日四类,由于两年春节客流变化差异较大,且没有第三年做对照组,因此将两年的春节分为两类进行处理。使用网络搜索进行超参数优化,最终选择线性模型进行趋势拟合,将seasonality_mode设置additive,即将周期性变化表现成加法模型,这样有助于铁路企业根据直观的客流数据变化优化旅客运输组织。

图4为模型拟合客流与真实客流的对比图,其中蓝线为真实客流,绿线为模型拟合的客流。模型在整个数据上的拟合平均误差为271.69,平均相对误差为6.68%,拟合精度良好。红线为模型训练后得到的趋势项,可见该OD间的年客流量随时间呈微弱下降的趋势。

图4 Prophet模型拟合曲线与趋势项

图5、图6分别为该OD间的月周客流。在一年当中,12月底至次年2月初属于运输淡季,此时该OD间的日客流量要在整体客流趋势的基础上少1 000多人次;客流量从7月中旬至9月初达到全年的最高峰,每日客流要在整体客流趋势上多1 100~1 200人次。在一周当中,该OD客流在周五达到周中峰值,在周一达到周中客流的最低值。

图5 Prophet模型拟合月客流量

图6 Prophet模型拟合周客流量

图7为节假日效应下的客流突变,可以看出,该OD间的客流在除春节以外的各种节假日下都发生了不同程度的骤增,其中在国庆期间骤增最为明显,但在两年的春节前后客流都发生骤减。

图7 Prophet模型拟合节假日项

由以上结果可以说明,该区段的客流主要以商务客流和旅游客流为主,因此客流需求在普通节假日期间呈现上升趋势,在春运期间呈现下降趋势。由此铁路企业可以根据不同季度的客流情况合理削减部分列车开行方案,甚至可以根据周客流的波动情况开展“一日一图”的动态开行方案。铁路企业还可以根据分析出的客流组成情况调整管内列车发车时间、优化列车不同等级席位的占比,从而最大化地合理使用运能,同时增加铁路对旅客的吸引力,最终达到提升铁路旅客运输收益的目的。

3.3 短期客流预测

选择使用前431 d的客流数据训练模型,预测后14 d的客流量并与真实数据做对比评价模型性能。使用均方根误差(root mean squared error,RMSE)以及平均绝对百分比误差(mean absolute percentage error,MAPE)作为评价模型表现的指标。

(19)

(20)

首先,使用训练好的Prophet模型直接计算后14 d的客流量,同时将模型在整个数据集上的拟合结果重新组织成供神经网络监督学习的数据矩阵并进行输出。

其次,使用Keras构建Seq2Seq-Attention的模型。先将时间序列数据归一化处理并转化成供模型监督学习矩阵,然后使用网络搜索进行参数优化。最终确定模型的最佳输入序列长度为28,输出序列长度为14,即使用过去28 d的客流量预测未来14 d的客流量,hidden_dim为16,Encoder和Decoder的深度均设置为1。确定损失函数为MAPE,使用自适应性矩估计算法(adaptive moment estimation, Adam)作为模型优化器,batch size为16,epoch为500。由于Seq2Seq的输出长度覆盖了实例要求计算的全部未来天数,因此直接将最后28 d的客流序列输入网络得到预测结果。将模型在整个数据上的拟合结果和预测结果进行反归一化还原后输出。

最后,使用Tensoflow构建BP神经网络,选择relu作为激活函数,经过调参后确定最终构建一个四层神经网络,batch size为1,epoch为50。同时尝试使用了随机森林(random forest,RF)、梯度下降树(gradient descent decision tree,GBDT)、LSTM进行预测作为参照,预测结果评价如表4所示。

表4 各算法在实例数据预测上的表现

评价结果表明,Seq2Seq-Prophet模型在此数据集上的预测误差均低于其他模型。在与既有方法的比较中,该组合模型与表现最佳的GBDT模型相比预测误差降低了3.434%;在与单独使用Prophet模型和Seq2Seq-Attention网络相比,组合模型在此数据集上的预测误差分别降低了3.465%和0.617%。结果表明,Seq2Seq与Prophet模型都在铁路客流数据的预测上拥有更好的精度和泛化能力,且其组合模型也可以进一步的提升模型预测精度。

整合提取该区段内的铁路客运需求总量,使用引入Attention机制的Seq2Seq-Prophet模型对最后14 d的客流需求进行预测,再次验证模型精度。预测结果与实际客流对比如图8所示。

图8 区段内的路客运需求总量预测

结果表明,引入Attention机制的Seq2Seq-Prophet模型在此次预测中的平均相对误差为9.55%,与上文OD区间的预测评价结果相似,证明模型拥有很稳定的预测效果。同时模型很好地预测了两周内的实际客流走势,具有很好的预测精度。

4 结论

首先,对Prophet模型的分解项与不同时间分布类型的铁路客流之间的联系进行了分析,提出了使用Prophet模型从客流的时间序列数据中计算并分别提取年、月、周客流量以及节假日效应下的客流变化,通过实例验证表明,该方法可以很好地在多年数据中拟合量化以上类型的客流,对于铁路企业分析客流需求的时间分布特征、优化旅客运输组织有着重要意义。

其次,分析了Seq2Seq-Attention网络和Prophet模型在铁路客流需求预测上的优越性,指出了两个模型在不同规模数据上存在优劣互补,因此提出使用深度神经网络将Prophet模型与Seq2Seq-Attention网络非线性组合起来以进一步增加模型对于数据的信息利用以及泛化能力。最后,通过实例证明了该组合模型相比其他模型在数据上具有更好的精度,同时对比单模型取得了更好的表现,其预测精度对于铁路企业开展精细化的运营管理有一定的实用价值。

猜你喜欢

客流向量铁路
客流增多
向量的分解
城市轨道交通节假日期间大客流行车组织思考与实践
聚焦“向量与三角”创新题
沿着中老铁路一路向南
一路欢声一路歌 中老铁路看点多
铁路通信线路维护体制改革探索与实践
向量垂直在解析几何中的应用
基于自学习补偿的室内定位及在客流分析中的应用
向量五种“变身” 玩转圆锥曲线