如何在Matlab的NN工具箱中进行正则化

时间:2019-05-07 21:00:47

标签: matlab neural-network deep-learning regression prediction

我的数据集包含150个独立变量和10个预测变量或响应。问题是要找到输入和输出变量之间的映射。有1000个数据点,其中70%我用于培训,30%用于测试。我正在使用具有10个隐藏神经元的前馈神经网络,如本Matlab document中所述。我正在使用

命令评估性能
perf_Train = perform(net,TrainedData',lblTrain')

YPred = net(XTest);
perf_Test = perform(net,YPred,lblTest')

基本上给出了训练和测试的实际和预测(估计)响应之间的均方误差。我的测试数据无法正确拟合训练后的模型,但是训练数据非常合适。

问题1 :我的训练成绩始终低于测试成绩指标,即perf_Train = 0.0867perf_Test = 0.567

这是过度拟合还是不足?

问题2 :如何使测试数据正确拟合?理论上说,要克服过度拟合和拟合不足,我们需要进行正则化。是否有任何参数需要输入到函数中,例如正则化以克服此问题?

1 个答案:

答案 0 :(得分:1)

由于训练误差小于测试误差,因此过拟合。 我建议为您的训练设置更少的纪元(迭代)或使用更少的训练数据。 我还建议检查一下随机抽取的训练数据和测试数据。

对于调节,可以这样设置:

net.performParam.regularization = 0.5;

性能比取决于型号,0.5仅是示例。

有关更多详细信息,请参阅下面的文档。 https://www.mathworks.com/help/deeplearning/ug/improve-neural-network-generalization-and-avoid-overfitting.html#bss4gz0-38