基于时空RBF神经网络的混沌时间序列预测(RBF-NN)

目录

摘要:

主要内容:

普通RBF:

时空RBF结构:

时间序列预测效果:

部分代码:

完整Matlab代码+数据:


摘要:

提出了一种用于混沌时间序列预测的RBF神经网络的时空扩展。该算法利用时空正交性的概念,分别处理了混沌序列的时间动力学和空间非线性(复杂性)。将所提出的RBF体系结构用于Mackey Glass时间序列的预测,并将结果与标准RBF进行了比较。时空RBF通过实现显著降低的估计误差而优于标准RBFNN。

主要内容:

受架构改进的启发,随着时空算法领域的发展,引入了RBF神经网络的扩展。提出了一种RBFNN的时空变体,用于混沌时间序列的预测。该算法利用时空正交性的概念,分别处理了混沌序列的时间信号(动力学)和非线性(复杂性)。主要的创新点为:

1) 针对时间序列预测问题,提出了径向基函数(RBF)神经网络的时空扩展。

2) 对于所提出的体系结构,推导了一种基于随机梯度下降的权重更新规则。

3) 为了显示所提出的时空RBF-NN(STRBF-NN)所实现的性能增益,进行了一百次独立的蒙特卡罗模拟,并将平均结果与类似配置的标准RBF-NN进行了比较。

普通RBF:

RBF神经网络算法是由三层结构组成,输入层至隐层为非线性的空间变换,一般选用径向基函数的高斯函数进行运算;从隐层至输出层为线性空间变换,即矩阵与矩阵之间的变换。

RBF神经网络进行数据运算时需要确认聚类中心点的位置及隐层至输出层的权重。通常,选用K-means聚类算法或最小正交二乘法对数据大量的进行训练得出聚类中心矩阵和权重矩阵。

一般情况下,最小正交二乘法聚类中心点的位置是给定的,因此比较适合分布相对规律的数据。而K-means聚类算法则会自主选取聚类中心,进行无监督分类学习,从而完成空间映射关系。

RBF网络特点

RBF网络能够逼近任意非线性的函数(因为使用的是一个局部的激活函数。在中心点附近有最大的反应;越接近中心点则反应最大,远离反应成指数递减;就相当于每个神经元都对应不同的感知域)。

可以处理系统内难以解析的规律性,具有很好的泛化能力,并且具有较快的学习速度。

有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。

当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致全局逼近网络的学习速度很慢,比如BP网络。

时空RBF结构:

时间序列预测效果:

部分代码:

% 定义 RBF-NN 网络

[m n] = size(P_train);% 查看输入数据格式,m为长度,n为样本数order=2;        % 用于预测未来的历史数据样本个数

n1 = 20;        % 隐含层神经元个数

% 训练参数设置

epoch=10;  % 迭代训练轮数

eta=1e-2;  % 学习率

runs=5;   % 蒙特卡洛模拟次数

Iti=[];    % 初始误差存储

% Graphics/Plot parameters

fsize=13;   % Fontsize

lw=2;       % line width size

%% 训练开始

for run=1:runs % Monte Carlos simulations loop

   

    % spread and centers of the Gaussian kernel   

    [temp, c, beeta] = kmeans(P_train,n1); % K-means clustering

    beeta=4*beeta;                   % Increasing spread of Gaussian kernel

   

    % Initialization of weights and bias

    w=randn(1,n1); % weight

    b=randn();     % bias

   

    for k=1:epoch % simulation rounds loop

       

        I(k)=0;             % reset MSE

        U=zeros(1,order);   % reset input vector

       

        for i1=1:m % Iteration loop

            % sliding window (updating input vector)

            U(1:end-1)=U(2:end);

            U(end)=P_train(i1); % current value of time-series

           

            % Gaussian Kernel

            for i2=1:n1

                phi(i1,i2)=exp((-(norm(U-c(i2,:))^2))/beeta(i2,:).^2);

            end

           

            % Calculate output of the RBF

            y_train(i1)=w*phi(i1,:)'+b;

           

            e(i1)=f_train(i1)-y_train(i1); % instantaneous error in the prediction

           

            % Gradient descent-based weight-update rule

            w=w+eta*e(i1)*phi(i1,:);

            b=b+eta*e(i1);

           

            % Mean square error

            I(i1)=mse(e(1:i1));      % Objective Function

          

        end

        Itti(epoch,:)=I; % MSE for all iterations

    end

    Iti(run,:)=mean(Itti,1); % Mean MSE for all epochs

    disp(run);

end

It=mean(Iti,1); % Mean MSE for all independent runs (Monte Carlo simulations)

完整Matlab代码+数据:

猜你喜欢

转载自blog.csdn.net/widhdbjf/article/details/129724607
今日推荐