郭旭萍,刘小芳,姚 蕊
(四川轻化工大学 计算机科学与工程学院,四川 宜宾 644000)
景区客流量预测常见的一种方式是利用差分自回归移动平均模型(ARIMA)进行预测,吴祥彬等[1]建立的ARIMA 模型预测了某城市地铁客流量变化的趋势。然而,这种方法只适用于处理平稳时间序列,对于非平稳的景区客流量时间序列,ARIMA 在预测时会受到一些限制,尤其在处理非线性因素、异常值、长期趋势以及复杂季节性等方面。随着技术的不断发展,基于机器学习的时间序列预测方法逐渐兴起。陈昆等[2]提出一种ARIMA 与支持向量机(SVM)的组合模型对道路断面交通流量进行预测。然而,机器学习方法需要手动设计和选择适当的特征,而且在捕捉时间序列数据中的长期依赖关系方面存在一定困难。
基于深度学习的时间序列预测模型应运而生。这些模型中,循环神经网络(Recurrent Neural Network,RNN)发挥了重要作用,特别是其变体--长短期记忆神经网络(Long Short-Term Memory,LSTM)[3],在处理传统RNN 中的梯度消失与梯度爆炸问题方面表现出色。Bi 等[4]提出基于LSTM 的方法并用于黄山等旅游景区的客流量预测。然而,单一的LSTM 单元可能会面临梯度消失问题。卷积神经网络(Convolutional Neural Network,CNN)能够通过不同大小的卷积核捕获多尺度的特征,从而减少梯度消失的情况,与LSTM 结合后能够应用于许多场景,例如,在情感分析、实体识别和行为预测等领域[5-7]。在时间序列预测领域,应用范围更加广泛。张文栋等[8]提出了一种综合CNNLSTM 模型,用于提取与电力、空调和供暖等耦合特性相关的特征,提高了预测整体能源生成系统中负荷的准确性。
但CNN 与LSTM 融合后,仍然存在一些问题。例如,模型对原始数据特征的提取不够精细。为了解决这些问题,引入了时空归一化模块(Spatial and Temporal Normalization,ST-Norm)[9]。该模块的引入能够对客流量数据的高频分量与局部分量进行细化,加强数据特征的提取,同时更好地捕捉过去时间频次对客流量的影响。通过将深度学习中的双向长短期记忆网络(Bidirectional Long Short-Term Memory,BILSTM)[10]与CNN 相结合,并且引入注意力机制(AM)以提升预测精度,建立了一种新的景区客流量预测模型SCBANet,后续通过实验验证了模型的有效性。
SCBANet 模型包含ST-Norm、CNN、BILSTM、AM机制,模型框架结构如图1 所示。
ST-Norm 是一种新颖的时间归一化和空间归一化方法,可以从原始时间序列数据中提取高频分量和局部分量,以此作为特征输入到模型中,增强模型对序列数据的理解和泛化能力。CNN 有很好的特征提取能力,在特征提取中一直得到广泛应用。BILSTM 能够全面捕捉上下文信息,在时间序列预测中得到了广泛应用。AM 能够把时间序列数据过去的特征状态加入到输出结果中,更好地调整BILSTM 预测后的结果。综上,本文建立了SCBANet 客流量预测模型。
时空归一化机制包含时间归一化与空间归一化机制。时间归一化(Time Normalization,TN)的目的是从输入的客流量数据中准确提取其高频分量,景区客流量数据的高频分量指的是客流量数据中包含的变化频率较高的部分,它表示了客流量数据中快速变动的部分,通常对应于较短时间尺度上的波动或噪声。客流量数据的高频分量计算如下:
式中,Zi,t表示全局与局部高低频分量的乘积;表示在时间t 下第i 个样本的输入特征;表示在时间t 下第i 个样本的局部低频特征;E 表示取均值;σ表示标准差;是一个保持数值稳定性的小常数;与分别是针对高频分量的可学习参数,用于对客流量数据的高频分量进行缩放和偏移,以便更好地保留和表达高频特征。
空间归一化(Spatial Normalization,SN)的目标是细化景区客流量数据的局部分量,客流量数据的局部分量指的是客流量特定时间段内的局部特征或属性,它是对客流量数据在不同时间段的局部变化进行描述和分析的方法。通过分析局部分量,可以更好地理解客流量数据在不同时间段内的趋势、周期性、季节性以及其他特征。客流量数据的局部分量计算如下:
卷积神经网络是包含卷积运算的一种特殊前馈神经网络。卷积神经网络一般由卷积层、池化层和全连接层构成。前一层的输出是后一层的输入,前面几层每一层进行卷积(convolution)运算或者池化(pooling)运算,卷积实现特征检测,池化实现特征选择。最后几层是全连接的前馈神经网络,进行回归预测,经过多次实验后,使用1D-CNN 的卷积层与池化层来提取景区客流量的局部特征信息。
卷积层通过应用一系列可学习的滤波器(也称为卷积核)对输入数据进行卷积操作,从而提取输入数据的局部特征,其卷积运算过程如下:
式中,Ct是卷积后的输出值,f 是激活函数,这里使用ReLU 作为激活函数,Xt是输入向量,Wt是卷积核的权重矩阵,bt为卷积核的偏置。
池化层用于减少特征映射的空间尺寸,并保留重要的特征信息,选用最大池化方法,其公式表示为
LSTM 是一种特殊的循环神经网络,具有记忆能力和门控机制且适用于处理序列数据。传统的RNN 在处理长序列时容易出现梯度消失或梯度爆炸问题,导致难以捕捉长期依赖关系,而LSTM 通过引入门控机制,可以有效地维护和更新记忆状态,从而更好地处理长期依赖问题,并且LSTM 可以对输入和输出的门控进行控制,使得模型能够更灵活地控制信息的传递,适应不同任务的需求,所以LSTM 在处理复杂序列时比传统的RNN 表现更优,其单元结构如图2 所示。LSTM 的门控结构组成具体包括遗忘门、输入门和输出门。
图2 LSTM 单元结构图
LSTM 单元细胞更新过程如下:
1)决定从细胞状态中丢弃哪些信息。这个决定是由一个称为“遗忘门层”的sigmoid 层做出的,会输出一个介于0 和1 之间的数字,1 表示“完全保留此内容”,0 表示“完全遗忘此内容”,遗忘门的输出结果由
所得式中,xt为t 时刻的输入值;ht−1为t-1 时刻的细胞单元状态;bf为偏置项;Wf为参数矩阵。
2)决定将在单元格状态中存储哪些新信息。分为两部分:首先,输入门中的sigmoid 层决定将更新哪些it;接下来,tanh 层创建一个新候选值的向量并添加到状态中。过程如下:
3)更新旧的细胞状态Ct−1,进入新的单元格状态Ct,式中:ft与it分别表示遗忘门与输入门的计算结果,计算公式为
4)基于单元格状态决定输出什么,输出门的sigmoid 层决定输出部分ot,然后把ot乘tanh(Ct),即可得到输出ht,即
BILSTM 结构是LSTM 的一种变种,它在LSTM 的基础上增加了一个关键的特性,即双向信息传递,从而可以更好地捕捉景区客流量数据的上下文信息,使得预测更精准。
注意力机制是一种用于增强神经网络模型在处理序列数据时的能力的技术[11],其思想类似于人类在处理信息时的注意力机制:对于复杂的任务,会更加关注与当前任务相关的信息,而忽略无关紧要的信息。在神经网络中,注意力机制允许模型自动学习对于当前时刻最重要的输入信息,使其能够更有针对性地处理序列数据。AM 的计算过程分为三个阶段:
1)计算查询(输出特征)与键(输入特征)的相关性,公式为
式中,t={1,2,…,N},Wh是注意力机制的权重,ht是输入向量,bh是注意力机制的偏置项,其中Wh和bh在每层中都共享权重。
2)将上式结果归一化,并使用Softmax 函数转换成注意力得分at,
式中v 为可学习的参数向量,一般长度固定。
3)对at值加权后得到最终关注值s,
首先,将获取到的有关九寨沟景区2020 年上半年至2023 年上半年近三年的景区季节、温度、风速、客流量等数据进行预处理[12],编码后使用本模型进行预测;其次,使用不同的主流模型进行实验;最后通过评价指标来验证本论文所提出模型的优越性。
实验所需的日客流量数据采集自九寨沟景区官网每日公布的进沟人数。采集的影响因素数据包括季节、星期、最高温度、最低温度、天气以及风速。由于影响因素数据为文本数据,不可直接输入到深度学习模型中,因此对这些数据做量化处理,例如天气数据:晴天和多云编码为1,阴天和小雨编码为2,中雨和中雪则编码为3,大暴雨和大暴雪等恶劣天气编码为4。之后创建一个包含历史客流量和相应影响因素的数据集,这个数据集可以用于训练和测试预测模型。
将时间步长设置为1,滑动窗口设置为7 来进行样本的提取,并按照8:1:1 将九寨沟景区客流量数据数据划分为训练集、验证集与测试集。实验是基于Python3.6 实现的,使用Tensorflow 库中的Keras 模块,模块构建方式为顺序逻辑。将训练的epoch 设置为10,batch_size 设置为24,模型的优化器使用Adam,模型的损失函数使用MSE,
评价标准对于理解模型的表现、对比不同模型或算法的效果,以及优化模型的重要性至关重要。实验使用3 个评价指标,下面各式中:表示客流量预测值,yi表示客流量实际观测值,n 表示客流量样本数量。
(1)均方根误差(RMSE)是预测值与真实值之间差异的平方和的平均值的平方根,用于衡量预测值与真实值之间的整体误差,公式为
(2)平均绝对误差(MAE)是预测值与真实值之间差异的绝对值的平均值,用于衡量预测值与真实值之间的平均误差,公式为
(3)平均绝对百分比误差(MAPE)是预测值与真实值之间差异的绝对百分比的平均值。它用于衡量预测值与真实值之间的平均百分比误差,公式为
为了找到最佳的模型参数组合,在实验中对相关参数进行了调整和选择。
(1)LSTM 层的单元数
LSTM 层是模型的核心组件之一,它负责捕捉序列中的时间依赖关系。为了研究LSTM 层单元数对模型性能的影响,分别尝试了不同的单元数,包括32、64和128。其中,较小的单元数能够减少模型的复杂性,而较大的单元数能够增加模型的记忆容量。
(2)Dropout 率
Dropout 率是一种用于防止过拟合的正则化技术,通过随机地将一部分神经元输出置为0 来降低模型复杂性[13]。在实验中,尝试使用不同的Dropout 率,包括0.2、0.3 和0.4,以研究Dropout 率对模型泛化能力的影响。
(3)卷积层参数
卷积层用于对输入数据进行初步特征提取,它的参数包括滤波器数目和卷积核大小。在实验中,尝试了不同的滤波器数目和卷积核大小,例如滤波器数目为32 和64,卷积核大小为1 和3,以研究卷积层参数对模型性能的影响。
(4)学习率
学习率是控制模型参数更新的步长,较小的学习率可以使模型收敛得更稳定,但训练时间可能较长。在实验中,尝试使用不同的学习率,包括0.001、0.01 和0.1,以寻找最佳的学习率。
(5)注意力机制参数
注意力机制在模型中起到了重要作用,它能够自动学习序列中不同时间步之间的重要性。在实验中,对注意力机制的参数进行了调整,包括注意力层中的神经元数目和激活函数的选择。
综上考虑,使用网格搜索的方法,通过指定参数的取值范围,在给定的参数组合中进行穷举搜索,计算每组参数的损失函数值,最后选择具有最佳性能的参数组合作为最优模型。最终的模型参数选择如表1 所示。
表1 模型参数
SCBANet 模型训练流程如图3 所示,主要包含5个步骤:
图3 SCBANet 模型训练流程图
1)对输入的时间序列进行时空归一化,对数据进行预处理步骤,以便输入到后续的网络模型。
2)经过归一化后,时间序列被输入到卷积神经网络中提取空间上的特征,捕捉时间序列中的局部模式和重要特征。
3)CNN 的输出被输入到BILSTM 中,通过前向和反向两个LSTM 层,捕捉时间序列中的长期依赖关系和时间相关性。
4)在BILSTM 的输出上,引入注意力机制来进一步提升预测性能。
5)经过注意力机制的处理,得到的特征被输入到输出层进行景区客流量的预测。
通过以上步骤,SCBANet 模型可以高效地从输入的时间序列中提取特征,并通过双向LSTM 和注意力机制进行有效的预测。这使得该模型在客流量预测任务中表现出色。
为验证SCBANet 模型的有效性,进行了一系列实验来比较其性能。在性能比较方面,选择了一组基准模型,包括ARIMA、SVM、RNN 和LSTM。此外,还进行了消融实验,通过与其他模型,如CNN、BILSTM、CNN+BILSTM 和CNN+BILSTM+AM 对比,来验证SCBANet模型中每个组成部分的有效性。
在基准模型对比实验中,将SCBANet 模型与经典的线性模型ARIMA、机器学习方法SVM、以及深度学习方法RNN、LSTM 进行对比,可以充分验证其有效性。本实验将采用3.2 节所述均方根误差(RMSE)、平均绝对误差(MAE)、平均绝对百分比误差(MAPE)评价指标来评估SCBANet 模型性能。基准模型实验对比如表2 所示。
表2 基准模型实验对比
表2 显示了3 种不同历史时间窗口的基准模型预测结果,将每个时间窗口的最优结果加粗突出显示。ARIMA 和SVM 受到线性关系的限制,无法捕捉到数据中的复杂非线性模式,从而导致预测的不准确性,所以误差与其他模型相比是最大的。RNN 和LSTM 都是循环神经网络模型,但是其性能随着回溯窗口大小的增加而恶化或保持稳定,而SCBANet 模型可以通过各个组件的综合能力来获取学习特征并且更好地进行预测。从表2 中可以看到:SCBANet 模型表现的性能最好,并且随着回溯窗口的增大,预测结果更好。在3 个评价指标中,MAPE 的变化最为明显,在预测未来一个月的周期中,SCBANet 比ARIMA(16.7 比1.01)下降93.95%,比SVM(31.4 比1.01)下降96.78%,比RNN(17.4 比1.01)下 降95.23%,比LSTM(42.5 比1.01)下 降97.63%。
消融实验通过逐步剔除或削弱系统中的组件或特性,评估它们对整体性能的影响,并揭示关键因素与系统工作原理。在人工智能领域,该方法常用于评估模型性能与鲁棒性,帮助确认重要组件并优化系统设计。将SCBANet 模型的预测结果分别与CNN、BILSTM、CNN+BILSTM、CNN+BILSTM+AM 进行比较,验证每一部分的有效性。消融实验结果对比如表3 所示。
表3 消融实验结果对比
从表3 中可以看到:CNN 的误差结果最大,SCBANet 模型的各种误差结果最小。在这5 种方法中,SCBANet 模型的性能表现最好,其RMSE 为0.270,MAE 为0.194,MAPE 为2.01,与引入AM 机制的CNN-BILSTM 相比,RMSE 下降了45.2%,MAE 下降了47.6%,MAPE 下降了34.5%。因此,在这5 种方法中,SCBANet 模型最能精准预测九寨沟景区短期客流量,为景区管理者做出正确的决策提供参考。
将九寨沟一个月的历史客流量数据输入到SCBANet 模型中,取得了令人满意的预测效果。未来一周预测客流量的MAPE 值如图4 所示。由图4 可知,MAPE 值稳定保持在4%以下,表明SCBANet 预测模型能够准确地预测景区的客流量变化。
图4 预测客流量的MAPE
同时,将预测未来一周的客流量绘制出来,如图5所示。从图5 中可以较明显地看出:预测结果与实际观测值非常吻合,拟合效果非常出色,这进一步证实了SCBANet 模型在九寨沟景区客流量短期预测方面的优越性。
图5 预测未来一周的客流量
综上所述,提出的基于SCBANet 模型的九寨沟景区客流量短期预测模型,巧妙地综合了ST-Norm、CNN、BILSTM 和AM,以实现更高效的模型性能。该模型的核心流程包括数据预处理、时空归一化、CNN 特征融合、BILSTM 长期依赖捕捉以及注意力机制。在九寨沟景区客流量数据上,对SCBANet 模型进行了详细验证。结果表明,本模型在各项评价指标中均表现出色,其中最小RMSE 为0.211,最小MAE 为0.187,而最小MAPE 仅为1.01。与其他模型相比,本模型的误差下降幅度高达97.63%。对未来一周客流量进行预测,其MAPE 值均保持在4%以下。这些结果充分表明,SCBANet 模型能高度准确地预测景区的短期客流量,在实际中能提高九寨沟景区管理的科学性和效率,有助于改善游客体验,保障景区生态环境,提高安全性,为九寨沟的可持续发展和管理提供了有力支持,同时也为客流量预测方法的研究和应用提供了有益的示范。未来,还将进一步探索更多的融合方式,以进一步提升预测精度。