国际核心期刊咨询网

当前位置:首页>>经济管理 > 正文

基于GA-XGBoost的宁波港物流需求预测

发布时间:2021-12-07

  摘要:通过灰色关联法,分析宁波港物流需求同腹地经济的相关度,建立宁波港物流需求预测指标集,提出一种基于遗传算法优化的极限梯度提升树模型。实验结果表明:这种港口物流需求预测模型取得的平均绝对误差和平均绝对百分比误差分别为21.62和1.05%,优于近年来的港口物流需求预测模型。

基于GA-XGBoost的宁波港物流需求预测

  关键词:港口物流;需求预测;极限梯度提升树;遗传算法

  0引言

  随着经济全球化的迅猛发展,港口作为与世界贸易交流的窗口也变得日趋重要。因此,通过历史数据对港口物流需求量进行准确预测,为港口的建设、规划提供一个数据支持,成为近年来国内外研究的一个热点。随着大数据信息时代的发展,与港口相关的统计数据也越来越详细丰富,这对港口物流需求预测建模提供了极大的便利。港口是一个复杂的大规模非线性系统,受到各种因素的影响与制约,如国家政策、港口腹地经济、地理位置和集疏运系统等。港口物流需求量往往以港口货物吞吐量或者集装箱吞吐量作为衡量指标,并且已被证实同腹地经济呈联动发展的趋势[1]。

  王景敏等[2]利用三次指数平滑法(CubicExponentialSmoothing,CES)预测广西北部湾港口物流需求量,把港口吞吐量当作港口物流需求目标,使用2000至2009年的港口吞吐量数据建立模型,预测2010至2012年的港口吞吐量。但是,港口是一个受到众多因素制约的复杂系统,而指数平滑法仅能进行单序列预测,没有考虑各种因素对模型预测的影响,所以这种港口物流需求预测方法存在一定的缺陷。王炳丹等[3]采用支持向量机预测广州港集装箱吞吐量,取得4.8%到8.0%的相对误差。支持向量机模型的预测结果虽然比较稳定,也考虑到影响港口物流需求量的因素,但容易出现过拟合问题,会降低在测试样本上的预测精度。李洪磊等[4]使用灰色模型GM(1,1)预测大连港物流需求规模,使用2006至2013年的吞吐量数据建立模型,对2014至2018年的吞吐量进行预测,取得平均误差为1.14%的预测结果。然而灰色模型GM(1,1)和指数平滑法一样仅能进行单序列预测,忽略了港口物流需求的各种影响因素,存在一定的弊端。魏辉等[5]以港口吞吐量作为港口物流需求指标,并以大连港为例,采用2009至2016年的指标数据作为训练样本,以2017至2018年的数据作为测试样本,并考虑到港口是一个受众多因素影响的非线性系统,利用具有非线性预测特点的BP神经网络建立港口物流需求预测模型。然而BP神经网络在训练过程中会随机更新权重参数,容易陷入局部最优解以及出现欠拟合、过拟合的问题,从而会导致模型每次预测的结果存在一定的偏差,降低模型的预测精度。

  针对以上研究的不足,本文引入正则化项的极限梯度提升树模型,进行建模并预测宁波港物流需求量,以防止过拟合问题,并摒弃单序列模型忽略港口物流需求影响因素的缺点;然后采用遗传算法(GeneticAlgorithm,GA)进行极限梯度提升树(eXtremeGradientBoosting,XGBoost)模型的参数寻优,进一步提高模型的预测精度;最后采用平均绝对误差(MeanAbsoluteError,MAE)和平均绝对百分比误差(MeanAbsolutePercentageError,MAPE)作为衡量模型精度的评估指标,并将构建的预测模型与其他港口物流需求预测模型进行比较。

  1模型介绍

  XGBoost算法是一种并行集成式机器学习算法,在梯度提升决策树的基础上增加了对目标函数的二阶泰勒展开和引入正则化项。本文将采用XGBoost算法建立宁波港物流需求预测模型。下面是对XGBoost算法原理的介绍。

  2基于遗传算法的XGBoost模型参数寻优

  遗传算法是一种受生物有机体的遗传过程启发而被提出的启发式智能进化算法。遗传算法可以采用多种编码方式进行编码,比较常用的是二进制编码。二进制遗传算法中的每个染色体都包含多个具有二进制值的基因。用0和1来确定每个个体的属性。一个种群由一组染色体组成。使用适应度函数评估每个染色体的优点来选择适合的染色体,从而产生新的染色体。在该过程中,选择两个合适的染色体,并通过交叉步骤进行合并,以产生新的后代。最后,对种群进行变异操作,来增加个体的随机性,从而减小陷入局部最优的可能性[6]。

  3实验数据

  3.1数据的收集

  对于港口物流需求指标,以往大部分研究都是选择集装箱吞吐量或者货物吞吐量作为衡量指标。本文继承以往的研究,选择集装箱吞吐量作为宁波港物流需求指标。对于港口物流需求影响因素指标,需要结合腹地经济进行选择;而国家政策、港口地理环境等影响因素短期内不易变化,所以不予考虑。宁波港的直接经济腹地包括浙江省的11个地级市[7],如图2所示。宁波港以宁波市为依托,进而辐射整个浙江省。因为港城联动发展的紧密关系[8],所以在选取宁波港物流需求影响因素时,除了考虑宁波港的直接腹地(浙江省)经济指标,同时也重点考虑了宁波港依托城市(宁波市)经济指标。为了科学地选取物流需求的影响指标,需要遵循高度相关性、全面性以及可获取性的原则。指标须涵盖经济腹地GDP、腹地经济产业结构、对外贸易水平、交通运输状况、居民消费水平等,最终在选取指标上按照港口所在省份和港口所在城市划分。港口所在省份的输入指标有:X1生产总值(亿元)、X2第一产业(亿元)、X3第二产业(亿元)、X4第三产业(亿元)、X5进出口贸易总额(亿美元)、X6社会消费品零售总额(亿元)、X7公路通车里程(万公里)、X8铁路营业长度(万公里)、X9货运周转量(亿吨公里)。港口所在城市的输入指标有:X10生产总值(亿元)、X11口岸进出口总额(亿美元)、X12社会消费品零售总额(亿元)、X13城市人均可支配收入(亿元)、X14城市人均消费支出(亿元)、X15农村人均可支配收入(亿元)、X16农村人均消费支出(亿元)、X17固定资产投资总额(亿元)、X18货运量(万吨)。以上指标均来自浙江省统计年鉴和宁波市统计年鉴,时间范围在1990年到2018年。

  3.2灰色关联法筛选指标

  初选的输入变量有18个,将利用灰色关联法计算这些输入指标同输出指标(宁波港集装箱吞吐量)之间的相关度。

  4实验与结果分析

  4.1GA-XGBoost预测集装箱吞吐量

  本文基于Python遗传算法工具箱Geatpy来实现优化XGBoost模型的参数。该工具箱操作简单、方便,非常适合遗传算法的优化问题。实现遗传算法优化XGBoost参数用到的Python库和函数如表1所示。

  首先进行数据预处理即归一化,消除量纲差异。然后将1990年至2013年的数据作为训练集,将2014年至2018年的数据作为测试集。实现遗传算法优化XGBoost模型的具体步骤如下:

  ⑴设置XGBoost初始参数。XGBoost参数有很多,主要优化三个较为重要的参数,它们分别是树的最大深度max_depth、学习率learning_rate和迭代器数量n_estimators。结合样本的数量,设置参数的初始范围。max_depth的初始范围为[1,10],类型为整型,它可以有效防止过拟合;learning_rate的初始范围为(0,0.3),类型为浮点型,它可以减少每一步的权重,提高模型的鲁棒性;n_estimators的初始范围为[1,50],类型为整型,该参数是最大迭代次数。其他初始参数都设为默认值。

  相关知识推荐:收录物流管理专业论文的期刊

  ⑵设置遗传算法参数。在Geatpy工具箱中遗传算法的染色体有三种最基础的编码方式,分别是BG(二进制/格雷编码)、RI(实数整数混合编码)以及P(排列编码);但是一条染色体只能是这三种编码方式的一种。这里采用编码方式BG,初始种群NIND设为20,最大迭代次数MAXGEN为100,进化停滞判断阈值TrappedValue设为1e-6,进化停滞计数器最大上限值maxTrappedCount设为10。选择算子并设置为dup(基于适应度排序的直接复制选择),交叉概率PC设为0.95,变异概率PM设为0.05。

  ⑶适应度函数选择平均绝对误差MAE,即以此最小值来作为遗传算法求解的最优解。

  经过步骤⑴、⑵、⑶之后开始训练模型:model=xgboost.XGBRegressor(max_depth=m,n_estimators=n,learning_rate=lr).fit(x_train,y_train),输出拟合值predict_value=model.predict(x_train),然后计算适应度obj=mean_absolute_error(y_train,predict_value)。得到最优的适应度MAE为0.0035;得到最优的控制变量值为:树的最大深度max_depth=5、学习率learning_rate=0.1941、迭代器数量n_estimators=30。有效进化代数100,最优的一代是第74代,适应度曲线如图3所示,拟合效果如图4所示。由此可见GA-XGBoost模型具有很好的拟合效果。

  4.2模型预测结果分析

  采用平均绝对误差MAE和平均绝对百分比误差MAPE作为回归预测的误差指标。具体公式分别如(16)和(17)所示。其中N为要预测的样本个数,yTrue和yPredict分别是真实值和预测值。

  将测试样本输入到已经获取最优参数的GA-XGBoost模型中进行预测:predict_y=model.predict(x_test),然后将预测结果进行反归一化处理scaler.inverse_transform(predict_y),得到2014年至2018年的集装箱吞吐量。同时,将提出的GA-XGBoost模型与近年来的港口物流需求预测模型做对比,实验结果如表2所示。采用公式(16)和(17)计算预测误差,结果如表3所示。从预测结果看,本文所建立模型的预测效果要优于三次指数平滑法、灰色模型GM(1,1)、支持向量机SVM和BP神经网络模型。出现这种结果的主要原因在于:XGBoost模型在目标函数表3模型的预测误差上采用了二阶泰勒展开,使训练过程挖掘到更深的信息;引入了正则化项,有效地防止了过拟合问题;基于遗传算法的参数寻优进一步提高了XGBoost模型的预测精度。

  5结语

  通过灰色关联法分析港口物流需求和其影响指标之间的关联度,发现对外贸易经济水平、腹地产业结构、交通运输、居民经济消费水平等对宁波港物流需求量有很大影响;建立的GAXGBoost港口物流需求预测模型取得的MAE和MAPE误差分别为21.62和1.05%,要优于三次指数平滑法、支持向量机、灰色模型和BP神经网络。下一步的工作应探究不同的优化算法,进一步提高港口物流需求预测模型的精度。——论文作者:李顺1,李君1,吴鑫1,梅碧舟2

回到顶部