任务
使用 MATLAB 系统中的神经网络使用滑动窗口方法预测时间序列。
给定
函数:cos(x - 0.5) * abs(x)
点数:n = 1000
向量X
:linspace(0.001, 10, n)
向量Y
:(cos(X - 0.5) .* abs(X) + rand(size(X)) * 0.2
人性化)
还有一个解决问题的算法,我不太明白(但它是必需的):
- 构建训练样本。为此,基于时间序列,构建 5 个序列,延迟为 1 到 5。要构建延迟为 5 的序列,从 1 到 n-5 个样本元素,延迟为 4,从取 2 到 n-4 个样本元素,延迟 3,从 3 到 n-3 个 bin,延迟 2,取 4 到 n-2 个 bin,延迟 1,5 到 n-1垃圾箱被拿走。
我认为:
x1=X(5:n-1); y1=Y(5:n-1);
x2=X(4:n-2); y2=Y(4:n-2);
x3=X(3:n-3); y3=Y(3:n-3);
x4=X(2:n-4); y4=Y(2:n-4);
x5=X(1:n-5); y5=Y(1:n-5);
- 建立一个测试样本。由于训练样本的长度比原始时间序列的长度少 5 个元素,因此要构建,从第 6 个元素到第 n 个元素。
我认为:
ytest=Y(6:n);
- 时间序列分为两部分:用于网络训练和验证。数组的尺寸应该彼此相关,大约为 3:1。
以下是问题:
1)训练和测试样本是在前面创建的。两个步骤。分成两部分是什么意思?
2)拆分成2部分是什么意思,再加上阵列之间的比例为3:1。 - 构建用于预测的前馈神经网络。层数为2。第一层的激活函数是双曲正切,第二层是线性的。取第一层的神经元数量足以进行满意的预测(10-100),第二层的神经元数量为1。MATLAB中
这样的前馈神经网络可以预测时间序列吗? - 对训练集进行网络训练,带上原始序列和预测序列的图,以及预测误差。
这似乎可以理解。