1. 引言
航空运输作为当今全球化社会中不可或缺的重要组成部分,其运输效率和服务水平对社会经济发展有着重要的作用。航空公司需要可靠的工具对客运量进行预测,以便更好地调整航班计划、优化资源配置,满足旅客需求。
近年来,为了适应社会经济发展和科技进步的需求,通过预测和数据分析的方法来改进工作在各个领域发挥着重要作用[1]。在研究过程中,有学者通过信号处理方法将客运量时间序列中的线性和非线性成分分离,并探究疫情作为特征对民航客运量需求的影响[2]。也有学者对数据采用EMD进行处理后,结合CNN-LSTM模型进行了客运量的短期预测[3]。同时也有学者发现XGBoost高效,灵活和便携的特点[4]-[6],提出了GWO-XGBoost算法来进行数据预测[7]。部分学者研究发现SVR模型短期网络有着较好的拟合效果[8],通过对比BP神经网络来进行机器学习[9]-[11]。除此之外,学者使用长短期记忆模型(LSTM)、NARX动态神经网络模型等先进算法对客运量进行预测,证实了有较高的预测正确性[12]。较新的研究表明许多学者通过独立使用XGBoost模型进行数据的预测有着良好的效果[13]。这些研究不仅为各行各业提供了重要的数据分析和预测方法,也为机器学习领域的应用提供了丰富的实践案例。
本文旨在利用XGBoost模型和SVR模型,结合时间序列分析方法,深入探讨民航客运量需求的预测方法,以期为相关行业的发展提供更为可靠和高效的预测方案,推动科技与社会经济的融合发展。
2. 模型原理
2.1. XGBoost模型概述
XGBoost (Extreme Gradient Boosting)即极度梯度提升树模型。XGBoost的目标函数由两部分组成,损失函数和正则项。
对于第t颗树,第i个样本的,模型的预测值:
(1)
其中,
是第t次迭代之后样本i的预测结果;
是第t棵树的模型预测结果;
是第
棵树的预测结果;
对于第i个样本,最终的预测值为:
(2)
最终得到原始目标函数:
(3)
其中,第一项是损失函数;第二项是正则项,代表全部t棵树的复杂度。这两项是两个维度的问题,一个是针对所有样本,一个是针对所有树。
2.2. SVR神经网络建模原理
SVR (Support Vector Regression)是一种支持向量机(SVM)的回归变体,它通过在线性函数两侧制造一个“间隔带”来处理回归问题。在SVR中,模型函数也为线性函数,形式为:
(4)
(5)
(6)
但与线性回归模型不同,SVR的目标是找到一个超平面,使得所有落在间隔带内的样本点的损失为零,而间隔带外的样本点的损失则计入总损失。
Figure 1. SVR model structure diagram
图1. SVR模型结构图
如图1所示,SVR模型包含两个松弛变量
和
,它们分别表示样本点
到超平面(间隔带的上下边缘)的距离与该距离与
值的差。当样本点落在间隔带内或边缘上时,
和
为零;当样本点位于间隔带上边缘上方时,
,
;当样本点位于间隔带下边缘下方时,
,
。
SVR在线性函数两侧制造了一个“间隔带”,间距为d (也叫容忍偏差,是一个由人工设定的经验值),对所有落入到间隔带内的样本不计算损失,当且仅当
与y之间的差距的绝对值大于
通过最大化间隔带的宽度与最小化总损失来优化模型。
SVR的最优结果为:
定义误差为loss,则SVR模型问题可表达为
此次时间序列民航客运量数据为二维样本
,模型预测值为
,误差为
,SVR模型中允许最大误差d,当
时,开始计算误差,否则默认为准确预测值。
其中loss表达式为:
,
C为惩罚系数,
为损失函数。
3. 构建模型与预测分析
3.1. 数据来源
选取了中国民航总局官网中2005年1月至2024年1月的民航客运量数据作为研究对象,部分数据见表1。
Table 1. Monthly data of domestic civil aviation passenger volume from 2005 to 2024
表1. 国内民航客运量2005~2024年月度数据
月份 |
2008 |
2009 |
2010 |
2011 |
2012 |
2013 |
2014 |
2015 |
2016 |
2017 |
2018 |
2019 |
2020 |
2021 |
2022 |
2023 |
1 |
1500 |
1748 |
1941 |
2267 |
2567 |
2567 |
3058 |
3246 |
3736 |
4393 |
4647 |
4647 |
4401 |
3004 |
2942 |
3977 |
2 |
1502 |
1702 |
2025 |
2163 |
2349 |
2787 |
3109 |
3493 |
3898 |
4279 |
4843 |
5341 |
729 |
2386 |
3121 |
4320 |
3 |
1581 |
1800 |
2173 |
2282 |
2503 |
2878 |
3025 |
3670 |
3894 |
4431 |
5140 |
5341 |
1664 |
4768 |
1527 |
4569 |
4 |
1659 |
1883 |
2157 |
2437 |
2605 |
2849 |
3142 |
3579 |
4000 |
4402 |
5074 |
5341 |
2573 |
5091 |
1197 |
5000 |
5 |
1536 |
2264 |
2600 |
2758 |
3071 |
3476 |
3730 |
4165 |
4642 |
5046 |
5657 |
5930 |
4598 |
2227 |
2189 |
5170 |
6 |
1417 |
1771 |
2185 |
2325 |
2530 |
2865 |
3061 |
3404 |
3800 |
4374 |
4938 |
5341 |
3060 |
4116 |
2189 |
5312 |
7 |
1718 |
2103 |
2547 |
2660 |
2995 |
3266 |
3580 |
3915 |
4353 |
4860 |
5378 |
5930 |
3894 |
4899 |
3385 |
6243 |
8 |
1596 |
2264 |
2660 |
2758 |
3071 |
3476 |
3730 |
4165 |
4642 |
5046 |
5657 |
5930 |
4598 |
2227 |
3213 |
6396 |
9 |
1641 |
1931 |
2260 |
2501 |
2744 |
3049 |
3315 |
3672 |
4169 |
4655 |
5029 |
5930 |
4775 |
3599 |
1989 |
5349 |
10 |
1834 |
2171 |
2448 |
2638 |
2829 |
3165 |
3488 |
3855 |
4374 |
4883 |
5408 |
5930 |
5014 |
3875 |
1572 |
5605 |
11 |
1700 |
1958 |
2078 |
2371 |
2584 |
2851 |
3240 |
3498 |
3971 |
4646 |
5006 |
5930 |
4425 |
2142 |
1234 |
4899 |
12 |
1567 |
1875 |
2103 |
2300 |
2563 |
2793 |
3193 |
3500 |
4041 |
4666 |
5018 |
5930 |
4216 |
2698 |
1841 |
5059 |
3.2. 构建XGBoost模型
3.2.1. 建模步骤
图2所示为XGBoost模型的详细建模步骤:
1) 对时间序列数据进行预处理,根据模型的特征重要性进行特征选择;
2) 计算趋势特征(斜率、差分等),捕捉时间序列数据中的趋势信息;
3) 将数据时间戳分解为年、月时间特征;
4) 创建滞后特征,将过去部分时间点的观测值作为特征输入到模型中;
5) 使用移动平均和移动总和特征来平滑数据并捕捉趋势;
6) 对时间序列数据进行滑动窗口交叉验证,确保模型对未来数据的泛化能力;
7) 通过交叉验证调整超参数,提升模型性能和泛化能力。
Figure 2. Flowchart for building the XGBoost model
图2. 构建XGBoost模型的流程图
3.2.2. 数据展示
由图3可知数据在2019年之前呈现整体上升的趋势,但在2019年之后,因疫情影响,整体客运量数据波动幅度剧增并持续至最新数据。因此在数据使用时要考虑疫情期间的影响,必要时则需将其排除在外。
Figure 3. Time series chart of raw data on civil aviation passenger volume from 2005 to 2023
图3. 民航客运量2005~2023年原始数据时序图
3.2.3. 特征可视化
观察图4,可以看出在滞后一天和两天的曲线lag1和lag2对模型特征重要可视化影响较小,mouth即月份对模型特征重要性可视化的影响也较小,但year即年份对模型特征重要性可视化的影响较大。
Figure 4. Visualization of feature importance
图4. 特征重要性可视化
观察图5,可以看出模型训练集曲线的纵坐标接近于1,代表模型的学习能力很好,但测试集曲线的纵坐标只在0.85以下,表示模型的泛化能力较弱,并且测试集与训练集相差较大,代表模型过拟合,重新调整训练模型。
Figure 5. Cross validation
图5. 交叉验证
观察图6,可以看出参数学习曲线在横坐标大约50~100时曲线大幅上升,但在超过100之后曲线逐渐恢复平稳,可以得出树的数量对模型表现是有极限的,因此树的棵树为100时模型能力最佳。
观察图7,其中两条红色虚线表示方差线,中间黑色曲线表示R2线,可以看出树的数量在超过100之后曲线一直保持平稳。
Figure 6. Parameter learning curve
图6. 参数学习曲线
Figure 7. Variance and generalization error
图7. 方差与泛化误差
3.2.4 模型的预测
在图8中,蓝色、橘色曲线分别表示真实、预测数据曲线。从数据的拟合情况可以看出,大部分预测数据和真实数据相差不大,有些月份预测误差较大,但整体预测效果较好,在几个跳跃点上模型也能够及时作出正确的判断,预测曲线能够较好地拟合原数据曲线。
Figure 8. XGBoost model prediction diagram
图8. XGBoost模型预测图
3.3. 构建SVR模型
3.3.1. 建模步骤
图9所示为SVR模型的构建流程,首先进行原始数据平稳性检验,其次进行特征提取并划分训练集和测试集,然后对模型参数进行训练调优,最后得到模型结果。
Figure 9. SVR model construction process diagram
图9. SVR模型构建流程图
3.3.2. 数据预处理
由图10可知,原始数据时序图存在不平稳性和周期性,差分法可以剔除周期性因素。数据进行一阶差分之后观察发现时序还存在不平稳性,从而需要进行二阶差分处理,最终二阶差分处理后的数据呈现周期性,说明数据已经具有平稳性。
Figure 10. Stability test of passenger volume
图10. 客运量平稳检验
3.3.3. 模型的训练
C参数控制了正则化的强度,它的值越大,正则化效果越弱。选择合适的C可以避免模型过拟合或欠拟合,这里通过交叉验证来调整C的值,从图11可以看出C取值为1时,预测效果最佳。
Figure 11. Observation of SVR model parameter C
图11. SVR模型参数C观察
Gamma参数是RBF核函数的一个参数,它控制了数据点的影响范围。较小gamma值表示影响范围较大,较大的gamma值表示影响范围较小,这里通过交叉验证来调整,从图12中可以看出gamma取值为1时模型预测效果最佳。
Figure 12. Observation of gamma parameters in SVR model
图12. SVR模型参数gamma观察
3.3.4. 模型的预测
选取SVR模型对预处理的民航客运量数据进行部分月份的预测分析。从图13中可以看出,个别点民航客运量是增长还是降低存在误判的情况,但是总体的趋势预判较为合理。其中,蓝色曲线表示原始数据曲线,橙色曲线表示SVR模型预测的曲线。
Figure 13. SVR model prediction diagram
图13. SVR模型预测图
3.4. 预测结果对比分析
为了验证模型的有效性,将构建的XGBoost模型与SVR模型的实验预测结果进行对比。虽然它们很有用,而且被广泛用于比较同一数据集上的不同方法,但在这里,表达相对于我们试图预测的时间序列的大小的误差会更有用。为了更加清楚直观地对比,对两个模型进行均方根误差RMSE、平均绝对百分比误差MAPE和平均绝对误差MAE的对比分析。各指标数据对比见表2。评判指标的计算公式如下:
(7)
RMSE均方根误差,范围
,当预测值与真实值的差值越接近0,表示模型越完美;误差越大,该值越大。
(8)
MAPE平均绝对百分比误差,范围
,MAPE的值越接近0%表示模型越完美,MAPE大于100%则表示劣质模型。
(9)
MAE平均绝对误差,是绝对误差的平均值,平均绝对误差能更好地反映预测值误差的实际情况。范围
,当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。
图14所示为四种模型的预测结果,从表2中不难看出XGBoost模型,SVR模型预测结果均比较理想,但是XGBoost模型的各项指标均优于SVR模型。SVR预测模型虽然也可以较好地对时序数据进行预测,但拟合效果不如XGBoost模型表现出色。
Table 2. Comparison of model prediction error results
表2. 模型预测结果误差对比
预测模型 |
RMSE |
MAE |
MAPE(%) |
XGBoost模型 |
0.97 |
0.89 |
8.36% |
SVR模型 |
0.99 |
0.97 |
8.74% |
随机森林模型 |
1.06 |
1.39 |
11.73% |
线性回归模型 |
1.36 |
1.49 |
25.74% |
Figure 14. Error in prediction results of each model
图14. 各模型预测结果误差
本文主要使用XGBoost模型描述时间序列数据的变化,SVR模型模拟数据的非线性规律,可以很好的处理非线性问题和不确定性问题。
4. 结论
机器学习技术在时间序列预测方面取得了较大的发展与成功应用。选取民航客运量时间序列数据,对其进行分析和处理后,构建XGBoost模型,SVR模型,提取时间序列特征对民航航线的客运量进行预测。与其他模型相比,XGBoost模型和SVR模型具有运算速度快、精度高、泛化能力强等优点。民航客运量预测工作数据量大,分布规律呈现非线性函数关系,因此采用XGBoost模型和SVR模型解决该问题。将决策树模型与向量回归模型进行对比分析,试图找出更符合实际情况的模型。通过对基于时间序列民航客运量的预测,对比两类方法,得出结论:相较于SVR模型,XGBoost模型均能表现出更加优秀的预测精度,XGBoost模型在学习与预测时间序列能力方面更为优秀,实验数据的预测效果更好。
基金项目
学生科技基金(XSB2024-009) + 青年基金项目(QJ2023-037)。
NOTES
*通讯作者。