训练好,预测不好

时间:2010-11-24 06:20:19

标签: neural-network

我在神经网络中编写了预测代码......

训练中的错误是好的(低于1%)但是对于预测错误很高(大约20%)...我认为我的网络过度训练但我不知道解决这个问题的方法..我已经改变了层数,神经元数量和训练功能,但结果没有改变......

所以我把我的代码放在这个论坛中,希望能得到答案: link text

此zip文件包含2个文件:

1-数据的Excel文件:训练输入的第1-4行,训练输出的第5行(输出第6行但在此代码中未使用),第7-10行用于测试输入,第11行用于测试输出。

2-matlab代码

运行程序4图表出现后:第一行用于训练数据,第二行用于测试数据。

如果有人知道答案,请更改我的代码并重新输入。

非常感谢。

编辑:

更多说明:

我有2个输出和2个代码...对于第6行(第二个输出),此代码具有可接受的结果,但对于第5行没有好的结果......

如果您认为您的建议有用,请更改我的代码并应用您的建议并将其放在此处...我在其他论坛中收到了一些建议,这些建议是一般解决方案,对结果没有影响......

3 个答案:

答案 0 :(得分:5)

正如人们所提到的,你可能会过度拟合人工神经网络对训练数据的影响。根据数据集,如果您训练的时间足够长,您可能会获得任意良好的训练数据。另一个问题可能是训练数据无法正确表示问题空间。即测试数据中的输入与您用于训练的数据非常不同。如果是这种情况,人工神经网络就无法充分发挥作用。

为了克服过度拟合,试试这个。将数据拆分为3组;培训,验证和测试。训练ANN时也会计算验证集上的误差。如果验证集没有改进,比方说,5个时期(你总是可以配置它)然后停止训练。

另外,作为一般观点。我没有机会查看您的数据和源代码,但请记住,您需要大量数据才能获得良好的结果。如果你只有一些数据点,那么很难/不可能取得好成绩。

我建议阅读指南here,以便对人工神经网络的许多方面进行全面了解。

祝你好运!

答案 1 :(得分:3)

如果您认为问题可能是过度训练,请尝试训练它们,直到它们有5%,10%的误差而不是1%。你的错误百分比越低,他们就越难以概括 - 他们只知道你完全认出你给他们的东西。

答案 2 :(得分:1)

如果您正在使用Matlab,请尝试使用贝叶斯正则化训练您的网络,而不是默认的Levenberg-Marquardt算法(net.trainFcn ='trainbr'而不是trainlm)