2010-11-24 4 views
1

J'ai écrit un code pour la prédiction dans le réseau de neurones ...bon dans la formation et mauvaise dans la prédiction

l'erreur dans la formation est bonne (moins de 1%), mais pour la prédiction de l'erreur est élevée (environ 20%) ... Je pense que mon réseau est surentraîné mais je ne connais pas un moyen de résoudre ce problème ... J'ai changé le nombre de couches, le nombre de neurones et la fonction d'entraînement mais le résultat n'a pas changé ...

donc je mis mon code dans ce forum et nous espérons obtenir une réponse pour elle: link text

ce fichier zip contient 2 fichiers:-un fichier Excel pour les données: lignes 1-4 pour l'entrée d'apprentissage, ligne 5 pour la sortie d'apprentissage (la ligne 6 est sortie mais n'a pas utilisé dans ce code), ligne 7-10 pour l'entrée d'essai, ligne 11 pour tester la sortie.

Code 2 Matlab

après l'exécution du programme graphique de 4 apparaissent: la première ligne est pour les données formées et deuxième ligne pour données testées.

Si quelqu'un connaît la réponse, s'il vous plaît changer mon code et le mettre à nouveau.

merci beaucoup.

EDIT:

plus Description:

J'ai 2 sortie et code à deux pour chaque ... pour la ligne 6 (deuxième sortie), ce code a des résultats acceptables, mais pour la ligne 5 pas bon résultat .. S'il vous plaît changer mon code et appliquer vos suggestions là-dessus et le mettre ici si vous pensez que votre suggestion est utile ... J'ai reçu quelques suggestions dans d'autres forums qui sont des solutions générales sans influence sur les résultats ...

+0

Il va être une sorte de limite à votre précision de la prédiction où vous allez vous entraîner sur le bruit. Bien que vous ne l'ayez pas encore touché. –

Répondre

3

Si vous croire que le problème pourrait être surentraînement, essayez de les former jusqu'à ce qu'ils aient 5%, 10% d'erreur au lieu de 1%. Plus votre pourcentage d'erreur est faible, plus il leur sera difficile de généraliser - ils sauront juste reconnaître EXACTEMENT ce que vous leur avez donné.

+0

5% est bon mais 10% est élevé ... pouvez-vous me guider pour gagner cette erreur? ... Je ne peux pas .. – Hossein

+0

Cela dépend largement du domaine du problème .. il n'y a pas de règles strictes. C'est la partie difficile des réseaux neuronaux ... mais la réponse de Sloper est plutôt sur place. –

5

Comme les personnes l'ont mentionné, vous êtes probablement en train de surajouter l'ANN aux données d'entraînement. Selon l'ensemble de données, vous pouvez obtenir un ajustement arbitraire des données d'entraînement si vous vous entraînez assez longtemps. Un autre problème pourrait être que les données d'entraînement ne représentent pas correctement l'espace du problème. C'est à dire. il y a des entrées dans les données de test qui sont très différentes des données que vous avez utilisées pour la formation. Si tel est le cas, le RNA ne peut pas fonctionner correctement.

Afin de surmonter le surajustement, essayez ceci. Diviser les données en 3 ensembles; formation, validation et test. Pendant la formation, l'ANN calcule également l'erreur sur l'ensemble de validation. Si le jeu de validation ne s'améliore pas pour, disons, 5 époques (vous pouvez toujours le configurer) puis arrêtez l'entraînement.

En outre, en tant que point général. Je n'ai pas eu l'occasion d'examiner vos données et votre code source, mais n'oubliez pas que vous aurez besoin d'une quantité importante de données pour obtenir de bons résultats. Si vous n'avez que quelques points de données, il sera très difficile/impossible d'obtenir de bons résultats.

Je recommande de lire le guide here pour un bon aperçu de nombreux aspects des ANNs.

Bonne chance!

1

Si vous utilisez Matlab essayer la formation de votre réseau avec régularisation bayésienne au lieu de défaut algorithme Levenberg-Marquardt (net.trainFcn = « trainbr » au lieu de trainlm)

Questions connexes