APP下载

后疫情时代基于XGBoost 的铁路客运站客流量预测研究

2022-02-19吴文波马毅华宗智诚

铁路计算机应用 2022年1期
关键词:上海站客流量样本

王 平,吴文波,马毅华,许 江,宗智诚

(上海申铁信息工程有限公司,上海 200071)

客流量是铁路客运组织的依据,准确预测客流量能够辅助客运部门合理规划与管理客运运营,更好地满足旅客出行需求和提升客服质量,对于增加铁路客运收益和降低运营风险具有重要意义。新冠肺炎疫情爆发以来,国家铁路正常运营遭受严重影响,对铁路客运运营的短期影响尤为显著[1],2020 年上半年全国铁路发送旅客8.18 亿人次,同比下降53.9%[2]。随着我国进入“后疫情时期”,铁路客流正逐步回升,但也呈现出较大波动,面对铁路提质增效的任务,准确预测客流量显得愈发重要。

目前,国内关于铁路客流量预测已有不少的研究,采用的方法主要包括:灰色预测法[3-4]、支持向量回归机[5-6]、组合预测法[7]等。这些铁路客流量方法各有优势,针对的预测对象也有所不同,但在样本数据集选择方面,极少有研究使用新冠肺炎疫情期间铁路客流数据进行预测。此外,新冠肺炎疫情期间,铁路客流存在较大的波动性和随机性,加大了准确预测客流量的难度,亟需探索新的客流量预测方法。

本文尝试采用极端梯度提升(XGBoost,eXtreme Gradient Boosting)模型,以上海站为例,选用包含新冠肺炎疫情期间的样本数据,研究将XGBoost 模型应用于铁路大型客运站客流量的预测。

1 铁路客流量影响因素分析与特征选取

1.1 疫情因素对客流量的影响

新冠肺炎疫情爆发前,铁路客流量呈现一定的周期性波动,新冠肺炎疫情在国内爆发后,铁路客流量出现断崖式下跌。以上海站为例,2016 年—2021 年客流量总体变化趋势如图1 所示。结合图2,黄色曲线为新冠肺炎疫情本土确诊人数曲线,蓝色曲线为客流量曲线,红色竖线是客流量出现断崖式下跌的时间点,对应日期为2020 年1 月23 日,正是新冠肺炎疫情在国内爆发的时间。此后,客流量虽有一定回升,但整体仍低于新冠肺炎疫情前的同期客流量。为此,考虑将新冠肺炎疫情本土新增确诊人数和本土现存确诊人数作为反映疫情因素的特征,以期提高预测的敏感度与准确性。

图1 2016 年—2021 年上海站客流量总体变化趋势

图2 新冠肺炎疫情本土确诊人数和客流量关系曲线

1.2 天气因素对客流量的影响

观察图3,夏季8 月份的客流量略高于其它月份,而冬季2 月份的客流量略低于其它月份。

图3 上海站1 年内客流量变化(1 月—12 月)

出现这种现象的主要原因是:

(1)温暖天气相较于寒冷天气更适宜出行;

(2)8 月份正值我国铁路暑运期间,铁路客流以学生暑假返家、开学返校为主。

天气温暖和寒冷可以采用气温进行量化,以便于算法处理。春运时间为每年农历腊月十五—次年正月廿五,暑运时间为每年7 月初—9 月初。如图4所示,1 月和2 月气温最低,对应春运的时间区间,7 月和8 月气温最高,对应暑运的时间区间,即春运和暑运与气温高低强相关。为此,本文选取气温(包括当日最高气温和当日最低气温)作为天气特征纳入预测模型。

图4 上海市1 年内气温变化(1 月—12 月)

1.3 日期属性对客流量的影响

以1 个星期为单位,对2016 年1 月1 日—2021年5 月17 日上海站的客流量进行分析,如图5 所示。星期六客流量在1 个星期中为最高,星期五其次,其它日无显著差异。

图5 上海站1 个星期内客流量变化(2016 年1 月1 日—2021 年5 月17 日)

进一步分析同一时期内节假日对上海站客流量的影响,如图6 所示。

由图6 可知,节假日相比工作日客流量有明显的增加,节假日前1 天客流量不仅显著高于工作日客流量,并且略高于假期平均客流量,而假期中第2 天的客流量与工作日无明显差异。

图6 上海站节假日客流量变化(2016 年1 月1 日—2021 年5 月17 日)

为此,细化日期属性,法定节假日和周末统称为假期,将月份、星期、当天是否为假期、前1 天是否为假期、第2 天是否为假期作为日期特征纳入预测模型。

2 基于XGBoost 的铁路客流量预测方法

2.1 XGBoost 模型概述

XGBoost 是由陈天奇等人[8]提出的一种改进的梯度提升决策树(GDBT,Gradient Boosting Decision Tree)算法。

对于一个给定n个样本的数据集D={(xi,yi)}(i=1,2,···,n),xi表示第i个样本的特征值集合,yi表示第i个样本的标签值,则基于数据集D训练得到的具有K个基学习器的XGBoost 预测模型为

XGBoost 模型的目标函数L包含2 部分:

在寻找最佳fk(xi)的过程中,通过不断迭代来最小化目标函数,第t次迭代的目标函数可改写为

对式(4)进行二阶泰勒近似展开,去掉常数项,其中,gi和hi分别是损失函数l的一阶导数和二阶导数,即有

对式(5)进行优化,定义Ij={i|q(xi)=j}为落入叶子节点j的样本集合,可计算出最优权重和相应的最优值为

相比于传统的GDBT 算法,XGBoost 模型利用了损失函数的二阶导数信息,能加快算法收敛,并且在目标函数中增加了正则惩罚项,可降低模型复杂度,从而防止模型过拟合。

2.2 基于XGBoost 的铁路客流量预测方法

基于XGBoost 的铁路客流量预测方法是一种综合多因素方法,考虑疫情、天气、日期等因素对铁路客流量的影响,具体步骤为:

(1)收集客流数据以及影响客流量的主要因素的历史数据,进行数据预处理,生成用于XGBoost模型的样本数据;

(2)将样本数据划分为训练数据集和测试数据集2 部分;

(3)运用k折交叉验证将训练数据集划分为k份,每次选择其中k-1 份作为训练集,另外一份作为验证集,对XGBoost 模型进行训练,并使用网格搜索(Grid Search)进行参数优化,得到最佳预测模型;

(4)使用训练好的XGBoost 模型对测试数据集进行预测。

3 实例分析

3.1 数据采集与预处理

从铁路客票系统中抽取上海站2016 年1 月1 日—2021 年5 月17 日的共计1965 天的客流量数据,另从互联网上收集同一时间段内新冠肺炎疫情本土新增确诊人数和本土现存确诊人数、上海市每日最高与最低温度,以及假期日期。将前85%数据(即2016 年 1 月 1 日—2020 年 7 月 27 日的客流量数据)作为训练样本和验证样本,后15%数据(即2020 年7 月 28 日—2021 年 5 月 17 日的客流量数据)作为测试样本,进行如下处理:

(1)对日期特征进行预处理,对月、星期进行One-hot 编码,对假期进行哑编码,将编码后的数据转化为有监督的数据集;

(2)考虑到当日客流量除受到同期因素的影响,还可能与前期值有关,采用客流量的滞后变量作为特征;

(3)为了消除预测的随机波动,利用简单移动平均法,生成前5 天平均客流量和前10 天平均客流量作为客流量特征。

预处理后的有监督数据集输入列数为36 列,输出列数为1 列。考虑到样本容量较小,在模型训练阶段,采用k 折交叉验证(k=5)进行训练,以提升模型性能。

3.2 实验与结果分析

建模软件选用Python 3.8,将预处理后的数据输入XGBoost 模型,使用Grid Search 进行参数搜索,寻找模型最优参数。XGBoost 模型的学习率设置为0.02,叶子节点训练样本最小数量设置为50,迭代算法为GDBT。

图7 为上海站实际客流量与XGBoost 模型预测结果对比,红色曲线为实际客流量,绿色曲线为使用XGBoost 模型经1 685 次迭代计算后得到上海站客流量预测结果。

图7 上海站实际客流量与XGBoost 预测结果(2020 年7 月28 日—2021 年5 月17 日)

使用拟合度R2对XGBoost 模型的预测误差进行量化分析,拟合度R2的计算方法为

将测试样本的真实值和预测值代入公式(10),计算得到R2=0.812;由图7 和R2可知,XGBoost 模型的总体预测效果较好,但预测的峰谷值偏差较大,究其原因可能是新冠肺炎疫情导致的“报复性”出游,使得节假日旅客出行规模相较于以往同期呈现出更强的波动性和随机性,例如:2021 年5 月1 日上海站客流量是2020 年同期的1.76 倍,在最近的6年间仅次于2019 年5 月1 日客流量,如表1 所示。

表1 2016—2021 年上海站客流量(从大到小排序)

4 结束语

基于XGBoost 模型,选取新冠肺炎疫情、天气、日期等影响铁路客流量的主要因素为特征,以上海站为例,对后疫情时期近一年的铁路客流量进行预测,预测拟合度R2=0.812,总体预测效果较好,但预测的峰谷值偏差较大。

后续将考虑更为精准地选取影响铁路客流量的相关因素,通过优化预测模型的特征集,以进一步提高客流量预测的准确性。比如:新冠肺炎疫情数据仅依靠本土新增确诊人数与本土现存确诊人数无法反映对铁路客流量的影响,可加入疫情防控应急响应等级等因素;目前的预测模型以气温代替春运和暑运的因素,后续可考虑在XGBoost 预测模型中增加春运和暑运具体日期因素。

猜你喜欢

上海站客流量样本
基于数据挖掘的景区客流量预测模型研究
用样本估计总体复习点拨
2020 CEDIA/CIT培训上海站圆满结束
地铁开,玩起来
ACME打造色彩斑斓的狂欢舞台
规划·样本
基于灰色预测理论在交通枢纽客流量的实际应用
基于灰色预测理论在交通枢纽客流量的实际应用
随机微分方程的样本Lyapunov二次型估计
2016 House of Vans上海站完美落幕