执行Matlab脚本,读取input(x),output(y)数据
命令窗口执行 ntstool
选择 第一类时序问题(NARX),点击 Next
选取对应的训练样本变量,time series format 选择为 Matrix row(因为Matlab神经网络训练样本默认为行向量,而我们准备的数据为列向量,需转置),点击 Next
默认设置的含义是,原始数据将会被随机分为三组
(1) 70% 的数据将被用于人工神经网络的训练
(2) 15% 的数据将用来验证网络是否正在范化,并在此之前停止训练
(3) 15% 的数据将用作外部验证
保持默认, 点击 Next
如图所示,标准的NARX为双层前馈型神经网络,其中,隐含层传递函数为S形函数(Sigmoid,如图所示),输出层传递函数为线性函数。
隐含层神经元的默认数量设置为 10,默认延迟数为 2。由于本案例解决空气质量预测问题,个人认为2天之前的数据对未来数据影响较小,故保持默认,点击 Next
选择训练算法,然后点击 Train。对于大多数问题,推荐使用 Levenberg-Marquardt (trainlm),不过,对于一些含噪小型问题,贝叶斯正则化 (trainbr) 虽然可能需要更长的时间,但会获得更好的解。但是,对于大型问题,推荐使用量化共轭梯度 (trainscg),因为它使用的梯度计算比其他两种算法使用的 Jacobian 矩阵计算更节省内存。由于样本数据特性,此处选择贝叶斯正则化(Bayesian Regularization)。
如图所示,神经网络训练完毕,可通过 Plots 下的各个选项来评价网络的性能
(1)Performance 使用折线图来展示算法的收敛情况,评价指标:均方误差(MSE)
(2)Error Histogram 使用直方图来展示训练/测试样本的误差分布情况,评价指标:绝对误差(真值-预测值)
(3)Regression 使用散点图+拟合线的方式展示训练/测试样本的相关性,评价指标:相关系数(R)
(4)Time-Series Response 使用折线图展示训练/测试样本在时间序列上的真实分布情况,评价指标:绝对误差(真值-预测值)
(5)Error Autocorrelation 使用柱形图展示预测误差在时间上是如何关联的,评价指标:相关性
(6)Input-Error Cross-correlation 使用柱形图展示误差如何与输入序列 x(t) 相关,评价指标:相关性
注: (5)对于完美的预测模型,自相关函数应该只有一个非零值,并且应在零滞后时出现。(这是均方误差。)这表示预测误差彼此完全不相关(白噪声)。如果预测误差中存在显著相关性,则应该可以改进预测,这可以通过增加抽头延迟线中的延迟数量来实现。(6) 对于完美的预测模型,所有相关性都应为零。如果输入与误差相关,则应该可以改进预测,这可以通过增加抽头延迟线中的延迟数量来实现。
单击Next以评估网络
若不满意网络对原始数据或新数据的性能,在这一页面,可以执行以下任一操作:
(1)重新训练网络。
(2)增加神经元的数量和/或延迟的数量。
(3)获取更大的训练数据集。
如果你对这次设计/训练的模型满意,点击 Next
该页面可用于生成该神经网络的Matlab函数或 Simulink图,若要进行下一步,单击Next
可通过单击 Simple Script 或 Advanced Script 创建 MATLAB 脚本,该脚本可重现之前的所有步骤。若要保存结果数据,单击 Save Result
创建脚本/保存结果后,单击 Finsh
【参考资料】