matlab 回声状态网络ESN的时间序列预测
Posted studyer_domi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 回声状态网络ESN的时间序列预测相关的知识,希望对你有一定的参考价值。
1、内容简介
略
537-可以交流、咨询、答疑
2、内容说明
ESN是Jaeger于2001年提出一种新型递归神经网络,ESN一经提出便成为学术界的热点,并被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测等,尤其是在时间序列预测问题上,取得了较为突出的贡献。Jaeger本人在提出这种神经网络的第二年便在国际知名期刊上发表了关于将ESN网络用于时间序列预测的文章,为后来其发展做出了巨大的贡献。另外,国内大连理工大学的韩敏等人在ESN的使用方面也做出了突出的贡献。
3、仿真分析
%% 建模:ESN模型
inSize = size(x_train,2); % 输入维度,返回x_train的列数
outSize = size(y_train,2); % 输出维度,返回y_train的列数
resSize = 500; % 储备池的尺寸 Reservoir Size
Win = (rand(resSize,inSize)-0.5) .* 1; % 输入矩阵
SD = 0.1; %Sparse Degree 稀疏度
W = sprand(resSize,resSize,SD); % 生成指定稀疏度的稀疏矩阵,100行,100列,密度为sd
W_mask = (W~=0); %若不等,值为1,相等值为0
W(W_mask) = (W(W_mask)-0.5); % 使随机生成的数据落在[-0.5,0.5]之间
rhoW = abs(eigs(W,1)); %row是ρ,eigs是求稀疏矩阵W的广义特征值,返回1个最大特征值,abs求绝对值
SR = 0.2; % 谱半径
W_res = SR.* (W ./ rhoW); % 这里设置的谱半径SR=1
% aa = abs(eigs(W,1))
Y_t = transpose(y_train(initLen+1:end,:));
% 求W_out
lambda = 1e-7; % 惩罚系数,一般取很小的正数
X_T = transpose(X); % 转置
Wout = Y_t*X_T * inv(X*X_T + lambda*eye(inSize+resSize)); % 岭回归
4、参考论文
略
以上是关于matlab 回声状态网络ESN的时间序列预测的主要内容,如果未能解决你的问题,请参考以下文章