2010-11-24 56 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」)培訓網絡

相關問題