如何在Matlab中进行正则化&x27;s神经网络工具箱
我的数据集有150个自变量和10个预测值或响应。问题在于找到输入和输出变量之间的映射。有1000个数据点,其中70%用于培训,30%用于测试。我使用的是一个前馈神经网络,有10个隐藏的神经元,如本文所述。我正在使用命令评估性能如何在Matlab中进行正则化&x27;s神经网络工具箱,matlab,neural-network,deep-learning,regression,prediction,Matlab,Neural Network,Deep Learning,Regression,Prediction,我的数据集有150个自变量和10个预测值或响应。问题在于找到输入和输出变量之间的映射。有1000个数据点,其中70%用于培训,30%用于测试。我使用的是一个前馈神经网络,有10个隐藏的神经元,如本文所述。我正在使用命令评估性能 perf_Train = perform(net,TrainedData',lblTrain') YPred = net(XTest); perf_Test = perform(net,YPred,lblTest') 这基本上给出了训练和测试的实际和预测(估计)响应之
perf_Train = perform(net,TrainedData',lblTrain')
YPred = net(XTest);
perf_Test = perform(net,YPred,lblTest')
这基本上给出了训练和测试的实际和预测(估计)响应之间的均方误差。我的测试数据不能正确地适应经过训练的模型,但是训练数据非常适合
问题1:我的训练成绩总是低于测试成绩,即perf_Train=0.0867
和perf_test=0.567
这件衣服是过合适还是不合适
问题2:如何使测试数据准确拟合?理论上说,为了克服过拟合和欠拟合,我们需要进行正则化。是否有任何参数需要输入到函数中,如正则化,以克服此问题?由于训练误差低于测试误差,这是过度拟合。 我建议为您的培训设置较少的时间(迭代),或者使用较少的培训数据。 我还建议检查训练数据和测试数据是否随机选取 对于调节,可以如下设置:
net.performParam.regularization = 0.5;
性能比取决于模型,0.5只是一个示例
有关更多详细信息,请参阅以下文档。
感谢您提供的信息和文档链接。我没有什么意见,你能澄清一下吗?(1) 当数据集分为训练集、验证集和测试集时,通常根据验证集报告过度拟合或欠拟合。但是,我无法找出过拟合或欠拟合,因为Matlab会自动将序列分割为序列和验证。因此,基于看不见的测试数据报告过拟合或欠拟合是否合法?(2)我认为如果验证错误>训练错误,我们就有过拟合的情况。在我的例子中,testerror>training error,那么过拟合的概念也适用于测试错误集吗?(您提到的是“过盈”或“过盈”,请检查)。对不起,您是对的,执行函数给出了错误,我认为是相反的。正如你所写的,这对你的情况来说是过分的。谢谢你的澄清和纠正。在大多数书籍和教程中,建议将70%的数据用于培训,其余30%用于测试。但你为什么建议少用训练数据,然后用多少?你能解释一下吗?谢谢你的时间和努力。一般来说,70%是好的,但没有规则。你必须试着找到最好的组合。你可以检查你的训练数据,如果有很多类似的数据,你会有很好的表现。