2010-11-24 108 views
1

我写了一个代码为神经网络预测...训练好的和坏的预测

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

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

这个zip文件包含2个文件:

1的用于DATAS Excel文件:用于训练的输入线1-4,用于训练输出线5(第6行是输出,但在此代码没有使用),用于测试输入,线11线7-10用于测试输出。

2- MATLAB代码

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

如果有人知道答案,请更改我的代码,并把它再次。

非常感谢。

编辑:

更多描述:

我必须为每个用于...线6(第2输出)这个码具有可接受的结果,但对于第5行没有良好结果2输出和两个码.. 。

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

+0

还有的将是某种限制你的预测准确度你将在哪里接受噪音训练。虽然,你可能还没有击中它。 – 2010-11-24 06:44:32

回答

3

如果你相信问题可能是过度训练,尝试训练他们,直到他们有5%,10%的错误,而不是1%。错误百分比越低,他们的概括就越困难 - 他们只知道要确切地承认你给他们的东西。

+0

5%是好的,但10%是高的...你能指导我获得这个错误吗?...我不能.. – Hossein 2010-11-24 09:29:40

5

当人们提到你很可能过度拟合ANN训练数据。根据数据集的不同,如果训练数据足够长,您可能会得到任意适合的训练数据。另一个问题可能是训练数据不能正确表示问题空间。即测试数据中的输入与您用于训练的数据非常不相似。如果是这样的话,人工神经网络无法充分发挥作用。

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

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

我建议你阅读指南here为人工神经网络的许多方面很好的概述。

祝你好运!

1

如果使用Matlab的尝试与贝叶斯正,而不是默认的Levenberg-Marquardt算法(net.trainFcn =代替trainlm“trainbr”)培训网络

相关问题