RBF神经网络混沌时间序列预测与仿真系统
本项目也是一个基于MATLAB开发的仿真系统,旨在解决非线性混沌系统的短时预测问题。系统核心采用了径向基函数(Radial Basis Function, RBF)神经网络,针对Lorenz混沌系统生成的时间序列数据进行相空间重构与预测建模。该代码不依赖MATLAB自带的RBF工具箱函数(如newrb),而是底层实现了RBF网络的完整训练流程,包括无监督的K-means聚类算法确定隐含层中心,以及有监督的最小二乘法求解输出权重。
核心功能特性
- 混沌数据生成:使用高精度的四阶Runge-Kutta数值积分法生成Lorenz混沌系统的时间序列。
- 相空间重构:基于Takens嵌入定理,将一维时间序列重构为高维特征矩阵,支持自定义嵌入维数和延迟时间。
- 底层算法实现:
* 手动实现K-means聚类算法以确定RBF神经元的中心。
* 基于聚类中心的最大距离启发式算法确定基函数的宽度(Sigma)。
* 使用伪逆(Pseudo-inverse)求解线性方程组,快速获得输出层最优权重。
- 全流程标准化:包含数据的归一化处理及预测后的反归一化还原,确保数值计算的稳定性。
- 多维度可视化:提供三维吸引子相图、时间序列对比图(含局部放大)、误差分布分析图及二维相平面轨迹重构图。
- 量化评估:输出RMSE、MAE、MAPE和决定系数R²等多项指标,全面评估模型性能。
系统环境与要求
* Statistics and Machine Learning Toolbox (用于
pdist2 距离计算)
* Deep Learning Toolbox (仅用于
mapminmax 归一化与反归一化函数)
- 随机性控制:内置随机种子设定 (
rng(42)),确保实验结果完全可复现。
使用方法
- 在MATLAB中打开主脚本文件。
- 直接运行脚本,程序将自动执行以下流程:
* 生成Lorenz混沌数据。
* 划分训练集与测试集(默认70%训练,30%测试)。
* 执行K-means聚类与RBF网络权重计算。
* 在命令行窗口输出训练进度与最终评价指标(RMSE, MAE等)。
* 弹出4个可视化窗口展示分析结果。
- 如需调整网络性能,可修改代码顶部的参数(如隐含层节点数、嵌入维数等)。
详细算法与实现逻辑
本项目的主程序脚本严格遵循以下逻辑流程进行实现:
1. 数据生成阶段
程序首先初始化系统参数(Sigma=10, Beta=8/3, Rho=28),通过四阶Runge-Kutta法(RK4)以0.01的时间步长迭代求解Lorenz微分方程组。
- 生成总长为100秒的数据,为了消除初始条件的瞬态效应,代码显式去除了前2000个数据点。
- 最终选取状态变量 x 作为观测时间序列进行后续分析。
2. 相空间重构 (Phase Space Reconstruction)
采用滑动窗口法构建输入输出数据集。
- 输入 (Input):根据嵌入维数 $m=6$ 和延迟时间 $tau=5$,构建历史向量 $[x(t-(m-1)tau), ..., x(t-tau), x(t)]$。
- 输出 (Target):对应的下一时刻值 $x(t+1)$,实现单步预测任务。
- 数据集按70%:30%的比例划分为训练集和测试集。
3. 数据预处理
使用
mapminmax 函数将训练集输入和输出数据归一化至 $[0, 1]$ 区间。关键在于,测试集的数据归一化严格使用了训练集生成的映射参数,保证了数据处理的一致性,避免未来信息泄露。
4. RBF神经网络设计与训练
这是系统的核心部分,采用混合学习策略设计RBF网络,包含50个隐含层神经元。
* 代码未调用现成函数,而是通过循环手动实现了
K-means聚类算法。
* 算法通过最大迭代次数(100次)或中心移动距离阈值(1e-6)控制收敛。
* 最终的聚类中心即为RBF神经元的中心向量。
* 采用启发式策略:计算所有中心点之间的最大欧氏距离,除以 $sqrt{2 times n_hidden}$。
* 所有隐含层神经元设定为相同的宽度(Sigma)。
* 基于高斯径向基函数计算训练集样本与各中心的距离,构建基函数响应矩阵 $Phi$。
* 公式:$ phi(r) = exp(-r^2 / (2sigma^2)) $。
* 构建增广矩阵 $[Phi, 1]$,引入偏置项(Bias)。
* 利用最小二乘原理,通过伪逆矩阵(
pinv)直接求解输出权重向量 $W$。
* 公式:$ W = (Phi^T Phi)^{-1} Phi^T Y $。
5. 预测与性能评估
- 前向计算:利用训练好的中心、宽度和权重,计算测试集的网络输出。
- 反归一化:将网络输出的 $[0, 1]$ 归一化值还原为原始物理量级。
- 误差计算:计算模型在测试集上的预测值与真实值之差。
- 指标统计:
*
RMSE:均方根误差,衡量预测值的离散程度。
*
MAE:平均绝对误差,反映预测值的平均偏差。
*
MAPE:平均绝对百分比误差,反映相对误差水平。
*
R²:决定系数,衡量模型对数据变异性的解释能力。
可视化分析模块
程序执行完毕后生成四幅图表:
- Lorenz系统相空间:绘制去除瞬态后的 $x, y, z$ 三维轨迹,展示混沌系统的蝴蝶吸引子结构。
- 时间序列预测对比:在同一坐标轴下绘制测试集的实际值曲线和RBF预测值曲线,并附带局部放大插图,清晰展示模型对波峰波谷的拟合细节。
- 预测误差分析:
* 上子图:逐点误差曲线,观察误差随时间的演变。
* 下子图:误差分布直方图,检查误差是否服从以零为中心的分布。
- 相空间轨迹重构对比:通过绘制 $x(t)$ 与 $x(t+1)$ 的二维关系图,对比实际动力学轨迹与预测轨迹的重合度,验证模型是否成功学习到了系统的动力学特征。