浅层神经网络时序预测和建模
动态神经网络擅长时序预测。要查看在开环形式、闭环形式和开环/闭环多步预测中应用 NARX 网络的示例,请参阅Multistep Neural Network Prediction。
提示
有关时序数据的深度学习,请参阅使用深度学习进行序列分类。
例如,假设您有 pH 中和过程的数据。您想要设计一个网络,该网络可以根据过去的 pH 值和过去的酸值以及流入水槽的液体的基本流速来预测水槽内溶液的 pH 值。总共有 2001 个时间步,您有它们的序列。
您可以用两种方法解决此问题:
通常最好从 GUI 开始,然后使用 GUI 自动生成命令行脚本。使用上述任一方法之前,第一步都是通过选择数据集来定义问题。每个 GUI 都可以访问许多样本数据集,您可以使用这些数据集来试验工具箱。如果您有要解决的特定问题,可以将您自己的数据加载到工作区中。下一节介绍数据格式。定义问题
要为工具箱定义时序问题,请将一组 TS 输入向量排列为一个元胞数组中的列。然后,将另一组 TS 目标向量(每个输入向量的正确输出向量)排列到另一个元胞数组中(有关静态和时序数据的数据格式的详细说明,请参阅数据结构)。但是,在有些情况下只需要有一个目标数据集。例如,您可以定义以下时序问题,在其中使用先前的序列值预测下一个值:
targets = {1 2 3 4 5};
下一节说明如何使用 Neural Network Time Series (ntstool) 来训练用于拟合时序数据集的网络。此示例使用工具箱附带的 pH 中和数据集。使用 Neural Network Time Series
如果需要,使用以下命令打开 Neural Network Start GUI:
nnstart
点击 Time Series App 打开 Neural Network Time Series。(您也可以使用命令 ntstool。)
请注意,该开始窗格不同于其他 GUI 的开始窗格。这是因为 ntstool 可用于解决三种不同类型的时序问题。
在第一类时序问题中,您要根据时序 y(t) 的过去值和另一个时序 x(t) 的过去值来预测前者的将来值。这种预测形式称为外因(外部)输入非线性自回归或 NARX(请参阅 NARX 网络(narxnet,closeloop)),可以写作如下形式:
y(t) = f(y(t – 1), ..., y(t – d), x(t – 1), ..., (t – d))
此模型可用于根据失业率、GDP 等经济变量预测股票或债券的将来值。它还可用于系统识别,其中模型表示动态系统,例如化工工艺、制造系统、机器人、航空航天器等。
在第二类时序问题中,只涉及一个序列。时序 y(t) 的将来值仅根据该时序的过去值进行预测。这种预测形式称为非线性自回归(或 NAR),可以写作如下形式:
y(t) = f(y(t – 1), ..., y(t – d))
此模型也可用于预测金融工具,但不使用伴随序列。
第三类时序问题类似于第一类,它也涉及两个序列:一个输入序列 x(t) 和一个输出/目标序列 y(t)。这里您想要根据 x(t) 的先前值预测 y(t) 的值,但不知道 y(t) 的先前值。该输入/输出模型可以写作如下形式:
y(t) = f(x(t – 1), ..., x(t – d))
NARX 模型将提供比该输入-输出模型更好的预测,因为它使用包含在 y(t) 的先前值中的附加信息。但是,在某些应用中,y(t) 的先前值不可用。只有在这种情况下,才会使用输入-输出模型,而不是 NARX 模型。
对于此示例,选择 NARX 模型,然后点击 Next 继续。
在 Select Data 窗口中点击 Load Example Data Set。将打开 Time Series Data Set Chooser 窗口。
注意
当您需要从 MATLAB® 工作区加载数据时,请使用 Select Data 窗口中的 Inputs 和 Targets 选项。
选择 pH Neutralization Process,然后点击 Import。这将返回 Select Data 窗口。
点击 Next 以打开 Validation and Test Data 窗口,如下图所示。
验证和测试数据集均设置为原始数据的 15%。
通过这些设置,输入向量和目标向量将随机分成如下三