欢迎光临
我们一直在努力

基于RBF与LSTM神经网络的水位预测方法对比研究,MATLAB代码

基于RBF与LSTM神经网络的水位预测方法对比研究

当深度学习遇上水文预报:两种主流神经网络在水位时序预测中的实战对决


1 研究背景

水位预测是水文预报领域的核心课题之一,直接关系到防洪减灾、水资源调度和水利工程安全。传统水位预测方法(如回归分析、ARIMA时间序列模型)依赖于人工构建的线性假设,难以捕捉水文系统中复杂的非线性动态特征。

近年来,随着人工智能技术的快速发展,神经网络凭借其强大的非线性拟合能力,在水文时序预测中展现出显著优势。本文聚焦两种代表性神经网络——RBF(径向基函数)神经网络与LSTM(长短期记忆)神经网络,基于连续三年的实测水位数据,系统对比两者在水位预测任务中的表现。


2 主要功能

本研究的核心功能包括:

  • 数据预处理:对原始水位观测数据进行清洗、滑动窗口构造和归一化处理
  • RBF神经网络建模:基于径向基函数构建前馈神经网络,实现水位时间序列预测
  • LSTM神经网络建模:构建多层LSTM递归网络,充分利用水位数据的时间依赖性
  • 模型性能评估:采用MAE、MAPE、MSE、RMSE四项指标量化对比两模型预测精度
  • 可视化分析:生成预测曲线、误差分布图及相对误差对比图,直观展示模型表现

3 技术路线

本研究的完整技术路线如下:
在这里插入图片描述

原始水位数据


数据预处理(滑动窗口构造,窗口大小=7天)

├─────────────────────┬─────────────────────┐
▼ ▼ ▼
训练集(前90%) 测试集(后10%) 归一化(mapminmax)
│ │
▼ │
RBF网络训练 │
│ newrb() │
│ goal=1e-5 │
│ spread=49 │
│ max neurons=343 │
│ │
├─────────────────────┤
│ │
▼ ▼
LSTM网络训练 模型预测
│ 3层LSTM │ sim() / predictAndUpdateState()
│ Adam优化器 │
│ 400 epochs │
│ │
▼ ▼
性能评估(MAE, MAPE, MSE, RMSE)


结果可视化与对比分析


4 算法步骤

4.1 数据预处理

采用滑动窗口法构造监督学习样本。以连续7天水位数据作为输入特征 X=[xt−6,xt−5,…,xt]X = [x_{t-6}, x_{t-5}, …, x_t]X=[xt6,xt5,,xt],预测第8天的水位值 y=xt+1y = x_{t+1}y=xt+1

Xi=[xixi+1xi+2xi+3xi+4xi+5xi+6]T,yi=xi+7X_i = \\begin{bmatrix} x_i & x_{i+1} & x_{i+2} & x_{i+3} & x_{i+4} & x_{i+5} & x_{i+6} \\end{bmatrix}^T, \\quad y_i = x_{i+7}Xi=[xixi+1xi+2xi+3xi+4xi+5xi+6]T,yi=xi+7

将全部数据按 9:1 比例划分为训练集和测试集,并使用 mapminmax 函数对输入输出数据进行 [-1, 1] 区间归一化,消除量纲影响,加速网络收敛。

4.2 RBF神经网络训练

RBF网络是一种三层前馈网络,由输入层、隐含层(径向基层)和输出层组成。其核心思想是用径向基函数作为隐层神经元的激活函数,将低维输入映射到高维空间,使得在原空间中线性不可分的问题在高维空间中变得线性可分。

训练过程采用MATLAB的 newrb() 函数,该函数从0个隐层神经元开始,逐步增加神经元直至满足误差容限,实现了自适应网络结构构建。

4.3 LSTM神经网络训练

LSTM是一种特殊的循环神经网络,通过引入遗忘门、输入门和输出门三个门控机制,有效解决了传统RNN的梯度消失和长期依赖问题。

本研究构建了一个三层LSTM结构:

  • 第一层(hidden1):40个LSTM单元 + Dropout(0.2)
  • 第二层(hidden2):180个LSTM单元 + Dropout(0.3),输出完整序列
  • 第三层(hidden3):10个LSTM单元 + Dropout(0.2)

采用 Adam优化器训练400个epoch,配合分段学习率衰减策略(每160个epoch衰减至原来的0.8倍),既保证了前期快速收敛,又提升了后期的参数微调精度。


5 公式原理

5.1 RBF神经网络

RBF网络隐含层第 jjj 个神经元的输出为高斯径向基函数:

ϕj(X)=exp⁡(−∥X−Cj∥22σj2)\\phi_j(X) = \\exp\\left(-\\frac{\\|X – C_j\\|^2}{2\\sigma_j^2}\\right)ϕj(X)=exp(2σj2XCj2)

其中:

  • XXX 为输入向量(7维水位序列)
  • CjC_jCj 为第 jjj 个RBF中心向量
  • σj\\sigma_jσj 为扩散因子(spread),控制基函数的宽度

网络输出为隐层输出的线性加权组合:

y^=∑j=1Nwj⋅ϕj(X)+b\\hat{y} = \\sum_{j=1}^{N} w_j \\cdot \\phi_j(X) + by^=j=1Nwjϕj(X)+b

其中 wjw_jwj 为连接权重,bbb 为偏置项,NNN 为隐层神经元数量。

5.2 LSTM神经网络

LSTM单元的核心是其三个门控机制:

遗忘门:决定丢弃哪些历史信息

ft=σ(Wf⋅[ht−1,xt]+bf)f_t = \\sigma(W_f \\cdot [h_{t-1}, x_t] + b_f)ft=σ(Wf[ht1,xt]+bf)

输入门:决定将哪些新信息存入细胞状态

it=σ(Wi⋅[ht−1,xt]+bi)i_t = \\sigma(W_i \\cdot [h_{t-1}, x_t] + b_i)it=σ(Wi[ht1,xt]+bi)
C~t=tanh⁡(WC⋅[ht−1,xt]+bC)\\tilde{C}_t = \\tanh(W_C \\cdot [h_{t-1}, x_t] + b_C)C~t=tanh(WC[ht1,xt]+bC)

细胞状态更新:

Ct=ft⊙Ct−1+it⊙C~tC_t = f_t \\odot C_{t-1} + i_t \\odot \\tilde{C}_tCt=ftCt1+itC~t

输出门:决定输出哪些信息

ot=σ(Wo⋅[ht−1,xt]+bo)o_t = \\sigma(W_o \\cdot [h_{t-1}, x_t] + b_o)ot=σ(Wo[ht1,xt]+bo)
ht=ot⊙tanh⁡(Ct)h_t = o_t \\odot \\tanh(C_t)ht=ottanh(Ct)

其中 σ\\sigmaσ 为sigmoid函数,tanh⁡\\tanhtanh 为双曲正切函数,⊙\\odot 表示逐元素乘法。

5.3 评估指标

指标公式含义
MAE $\\frac{1}{n}\\sum_{i=1}^{n} y_i – \\hat{y}_i
MAPE $\\frac{1}{n}\\sum_{i=1}^{n}\\left \\frac{y_i – \\hat{y}_i}{y_i}\\right
MSE 1n∑i=1n(yi−y^i)2\\frac{1}{n}\\sum_{i=1}^{n}(y_i – \\hat{y}_i)^2n1i=1n(yiy^i)2 均方误差
RMSE 1n∑i=1n(yi−y^i)2\\sqrt{\\frac{1}{n}\\sum_{i=1}^{n}(y_i – \\hat{y}_i)^2}n1i=1n(yiy^i)2 均方根误差

6 参数设定

6.1 数据参数

参数设定值说明
数据时间范围 2013.01.01 ~ 2015.12.31 连续三年日水位观测数据
滑动窗口大小 7天 用前7天预测第8天
训练集比例 90% 前90%数据用于训练
测试集比例 10% 后10%数据用于测试

6.2 RBF网络参数

参数设定值说明
目标误差(goal) 1×10−51 \\times 10^{-5}1×105 MSE训练容限
扩散因子(spread) 494949(即 727^272 控制高斯核宽度
最大神经元数(N) 343343343(即 737^373 隐层神经元上限
实际达到神经元数 300 训练收敛时的神经元数

RBF训练过程中误差变化:

NEWRB, neurons = 0, MSE = 0.4392 → neurons = 300, MSE ≈ 0.0005

从初始MSE约0.44下降到约0.0005,训练误差收敛约3个数量级,表明RBF网络对训练数据的拟合能力极强。

6.3 LSTM网络参数

参数设定值说明
第一层LSTM单元数 40 捕捉短期时序模式
第二层LSTM单元数 180 深层特征提取
第三层LSTM单元数 10 特征压缩与抽象
Dropout率 0.2 / 0.3 / 0.2 防止过拟合
优化器 Adam 自适应矩估计优化
初始学习率 0.005 学习步长
最大训练轮数 400 遍历样本总次数
学习率衰减策略 piecewise 分段衰减
衰减周期 160 epochs 每160轮衰减一次
衰减因子 0.8 学习率乘以0.8
梯度阈值 1 防止梯度爆炸
运行环境 GPU 加速训练

7 实验结果

7.1 模型性能对比

评估指标RBF神经网络LSTM神经网络优胜模型
MAE(平均绝对误差) 0.1871 0.4064 ✅ RBF
MAPE(平均绝对百分比误差) 0.0012 0.0026 ✅ RBF
MSE(均方误差) 0.1038 0.2767 ✅ RBF
RMSE(均方根误差) 0.3222 0.6113 ✅ RBF

7.2 结果分析

RBF网络在所有四项评估指标上均优于LSTM网络,具体表现为:

  • RBF的MAE(0.1871m)约为LSTM(0.4064m)的 46%,预测偏差更小
  • RBF的MAPE仅0.12%,说明平均情况下预测值与真实值的偏差不超过千分之二
  • RBF的MSE(0.1038)约为LSTM(0.2767)的 38%,整体误差分布更集中

RBF表现更优的可能原因:

  • 数据规模适中:三年日尺度水位数据(约1095个样本)更适合RBF这类参数规模相对紧凑的模型
  • 局部逼近优势:RBF的高斯核函数天然擅长局部插值,而水位变化在短期内具有较强的局部趋势性
  • 训练收敛稳定:RBF的逐神经元增加策略保证了训练过程的确定性,避免了LSTM随机梯度优化的波动
  • 值得注意的是,LSTM在数据量更大、长周期依赖更显著的场景中通常更有优势,本实验的结论需要在特定数据条件下理解。


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    8 运行环境

    环境项要求/版本
    操作系统 Windows 10/11
    MATLAB版本 R2018b 及以上
    必需工具箱 Deep Learning Toolbox(LSTM训练)
    GPU支持 推荐(LSTM训练为GPU模式)
    依赖函数 newrb(RBF)、trainNetwork(LSTM)、mapminmax(归一化)
    数据格式 .mat 文件(MATLAB自有格式)

    若无可用的GPU环境,可将LSTM训练选项中的 'ExecutionEnvironment' 从 'gpu' 修改为 'cpu',训练时间会相应增加。


    9 应用场景

    本研究的RBF与LSTM水位预测方法可广泛应用于以下场景:

    9.1 防洪减灾预警

    基于历史水位数据训练的预测模型,可对未来1~7天的水位变化进行滚动预报,为防汛部门提供决策支撑,提前制定人员转移和物资调配方案。

    9.2 水库优化调度

    结合水位预测结果,水库管理单位可以动态调整蓄水与泄洪策略,在保障安全的前提下最大化水资源利用效率。

    9.3 城市内涝监测

    在城市排水系统中部署水位传感器,利用实时数据驱动预测模型,提前预判排水管网超负荷风险点,实现内涝风险的主动防控。

    9.4 航运安全保障

    内河航道水位直接影响船舶通航安全,通过水位预测可为航运部门提供航道水深预报,辅助通航管理和船舶装载决策。

    9.5 生态流量管理

    对于生态敏感水域,水位预测有助于维持最小生态流量,平衡人类用水需求与水生生态保护。


    10 总结与展望

    本文基于MATLAB平台,分别采用RBF和LSTM两种神经网络对实测水位时序数据进行了建模预测。实验结果表明,在当前数据条件下,RBF神经网络以显著的精度优势胜出,四项核心指标(MAE、MAPE、MSE、RMSE)均优于LSTM,展现了RBF在中小规模时序预测任务中的实用价值。

    未来改进方向:

    • 引入多源数据融合(降雨量、蒸发量、上游来水量等气象水文因子),提升模型对复杂水文过程的表达能力
    • 探索混合模型策略,如利用LSTM提取时序特征后由RBF进行局部回归
    • 将研究方法扩展到多站点联合预测,构建流域尺度的水位预报体系
    • 引入注意力机制增强模型对关键时间节点的感知能力

    💡 技术交流:欢迎读者在评论区分享水文预测领域的实践经验与心得体会,共同推动智能水文预报技术的发展与应用。


    本文涉及的数据、代码及可视化图表均为实际运行产出,可复现验证。如需获取完整代码与数据,欢迎在后台留言交流。

    完整源码私信回复基于RBF与LSTM神经网络的水位预测方法对比研究,MATLAB代码

    赞(0)
    未经允许不得转载:171主机测评 » 基于RBF与LSTM神经网络的水位预测方法对比研究,MATLAB代码
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址