本章以一道多自变量的例题来表述如何用调用matlab的包进行神经网络预测
一、问题提出
如图所示,现在有401个x变量共同决定y的取值,但是我们现在只有50个样本,传统的预测模型无法处理自变量如此庞大的数据,因此我们这里选择神经网络预测
二、训练集,验证集和测试集
训练集(Training set)——用于模型拟合的数据样本。
验证集(Validation set)——是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。在神经网络中,我们用验证数据集去寻找最优的网络深度,或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量;
测试集(Testing set)——用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
三、使用神经网络进行训练
1.导入数据
设置好行和列,此处我们选择观测值为行。这里的相应值为因变量y,预测值变量为x。(你没有看错)
2.选择训练方法
训练集、测试集的数据百分比默认即可,还有隐藏层的个数一般也不用调整。此处我们选择训练方法即可
四、结果解读
1.性能图
其中,横轴代表迭代的次数,圆圈处代表均方误差达到最小值的点
2.回归图
将拟合值对真实值回归,拟合优度越高,说明拟合的的效果越好。
3.训练方法比较
我们可以通过尝试不同的训练方法,找出预测效果最好的模型。选择性能图上方显示的均方误差最低的模型即可
4.保存结果
APP里面可以保存函数,提供给我们放到压缩包的支撑文件中。此处,我们需要关注的是导出模型。导出模型之后,会在matlab工作区保存一个数据结构变量,我们会用到这个数据结构变量进行预测
五、进行预测
我们已经将模型保存到了工作区这个result变量中,这个变量里面存着两个结构体,其中results.Network是我们的预测模型,我们要调用这个模型进行预测
sim(results.Network, new_X(1,:)')
sim函数是仿真函数,输入第一个参数是我们的模型,第二个参数是自变量x,这里的x必须为列向量
之后经过循环,得到我们的预测值