IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Réseaux de neurones : problème de prédiction de séries temporelles et de simulation


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Réseaux de neurones : problème de prédiction de séries temporelles et de simulation
    Bonjour,

    Je m'intéresse depuis quelques temps aux réseaux de neurones et plus particulièrement à la prédiction de séries temporelles.
    Je précise que je suis totalement novice en codage (étudiant en droit), je suis cependant assez "geek" donc je peux apprendre si on m'en donne le temps. Je me suis renseigné sur la théorie des réseaux de neurones que je pense comprendre dans les grandes lignes, même si les subtilités mathématiques m'échappent souvent.

    Je m'adresse à vous car je n'arrive pas à utiliser le Neural Network Tool de Matlab et Simulink pour arriver à mon but. J'ai fouillé dans la base "Help" de Matlab, du NNT, et de Simulink, mais il y a tellement d'informations que ça m'a plus embrouillé qu'autre chose. J'ai cru comprendre qu'on pouvait effectuer la même action de plusieurs façons, mais il y en a tellement que je ne sais pas par quel bout prendre le problème. J'ai également cherché inlassablement sur Google et sur Youtube mais je crois que j'ai épuisé tous les articles ou posts de forum qui auraient pu résoudre mon problème.

    Voici mon problème :

    Imaginons la ville de Trifouilli-La-Coquine, qui est très pluvieuse. Je souhaiterais prévoir les niveaux de précipitation de 2016 et 2017 sur la base des niveaux de précipitation des années 1990-2014.

    Je vous écris les données (créées de toutes pièces) que j'essaie d'utiliser (en input et en target) dans le NNT :

    INPUT :
    1990 700
    1991 714.5
    1992 750
    1993 680
    1994 756.8
    1995 710
    1996 713
    1997 715
    1998 718
    1999 680
    2000 520
    2001 700
    2002 716
    2003 719
    2004 721
    2005 699
    2007 702.5
    2008 703.5
    2009 705.6
    2010 708
    2011 719
    2012 704
    2013 708

    TARGET :
    2014 709
    2015 713


    Le plus simple pour moi serait de savoir ce que quelqu'un d'expérimenté ferait à partir de ces données pour entraîner le réseau de neurones à produire les données TARGET à partir des données INPUT ? (pas besoin que la prédiction soit réaliste, je veux juste comprendre comment je peux lui faire prédire quelque chose)



    Je détaille tous les problèmes auxquels j'ai été confronté :


    * Jusqu'ici j'ai rentré ces données en utilisant le "Time Series App" (ce qui semble correspondre à mon problème). Je ne sais pas trop avec quel modèle de réseau de neurones je dois entrer les données, donc j'ai testé les deux qui semblaient les plus simples :
    - Le "Non-Linear Input-Output" (le plus simple, on entre X pour prévoir Y)
    - Le "Non-Linear AutoRegressive (NAR)"
    Je vois que les réseaux de NNTool semblent être des réseaux à 3 couches.

    * A chaque fois, j'ai essayé d'entrer les données de la période 1990-2013 en Inputs, et les données 2014-2015 en Targets avec un fichier .txt
    Mais à chaque fois j'ai eu un problème m’empêchant d'appuyer sur le bouton "Next" en m'affichant un message d'erreur "Data has less than 10 timestep" quand je sélectionne "cell column" ou "matrix column", ou "Data selection has differents number of timesteps" quand je sélectionne "matric row".

    Nom : Select dat.PNG
Affichages : 1915
Taille : 88,5 Ko

    Bon du coup j'ai essayé de rajouter des données fictives pour qu'il y ait le même nombre de données en INPUT et TARGET (du coup j'ai transformé les données 2014-2015 en 2014-2036 en inventant des données). Ça ne change rien concernant les messages d'erreur de "cell column" et matrix column" , mais quand je sélectionne "matrix row", là ça me laisse continuer. Je ne sais pas trop ce que ça veut dire mais bon, au moins je peux avancer.

    * A partir de là je peux entraîner mon réseau, donc bon je valide (peu importe s'il est fiable ou pas, je voudrais juste pouvoir le "tester" sur de nouvelles données pour qu'il me donne une réponse qu'il crée de lui-même, ce que je ne suis pas encore arrivé à faire), et je fais créer un "simulink diagram" (les fonctions Matlab, j'ai essayé mais tellement de code que je ne m'y retrouve pas).

    Nom : Création simulink.PNG
Affichages : 1876
Taille : 92,4 Ko

    Ce qui me donne ça :

    Nom : Simulink.PNG
Affichages : 2348
Taille : 91,9 Ko

    *J'ai cru comprendre qu'en double cliquant sur le neurone en input, en rentrait les données en input, donc je double clique, je vois qu'il y a une fenêtre qui s'affiche avec deux lignes "Constant value" et "Sample Time", et là je suis complètement bloqué. Déjà je ne comprends pas quelles sont les données qui sont inscrites par défaut dans ces lignes ( le "[0.78;0.081]" sur l'image). Quand j'essaie de rentrer des données dans une des deux lignes en me disant "bon les données inputs on doit pouvoir les mettre là", je me reçois toujours un message d'erreur.
    Donc je me demande bien comment "injecter" des données à ce maudit réseau de neurones pour qu'il me renvoie des données en output... ?





    Voilà la plupart de mes problèmes, mais en gros j'ai 3 questions :


    - Quelle est le type de données qu'il faut injecter dans la NNTool ? Je me le demande car mes données en .txt sont reconnues comme "double" alors que les autres données en exemple dans le NTTool sont toutes de type "cell". Et je ne sais pas comment créer des données en "cell", ni quelles conséquences ça peut avoir de ne pas en utiliser...


    - Quel modèle de réseaux de neurones me conseillez-vous pour ma prédiction ? NARX, NAR ou Non-Linear Input-Output ?


    - ET SURTOUT : Une fois le réseau "ouvert" dans Simulink, comment puis-je "injecter" des données en input pour qu'il me renvoie des données "prédictives" en output ?





    PS. Je précise que je suis conscient qu'un bon apprentissage se manifeste notamment par un "mean square error" le plus proche de 0 possible et une "Regression R values" le plus proche de 1 possible, mais je m'occuperait de tout cela dans un second temps, je veux d'abord comprendre comment simuler un réseau de neurones après l'apprentissage, qu'il soit fiable ou pas.

    Please help me !

  2. #2
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Salut,

    J'ai pas lu ton post en entier, mais je peux t'expliquer le problème dans la première capture d'écran que tu fournis.
    Sur cet écran, Matlab te propose d'entraîner le réseau de neurones à partir de données que tu connais (c'est-à-dire dont tu connais les entrées ET les sorties)

    Dans Input data, tu dois lui fournir les données disponibles. Ici, tu veux prédire les précipitations, pas les années. Matlab s'en fout à priori que les années soient 2000-2001-... ou bien 1888-1889. Il va juste te calculer un modèle qui représente le lien entre la série de taux de précipitations.

    Là tu dois savoir à partir de combien de d'années tu veux "prédire" la suivante. La question est-donc : "Est-ce que le taux de pluie de l'année N-1 va m'aider à prédire celui de l'année N?" La réponse est certainement oui. Par contre, "Est-ce que le taux de pluie de l'année N-20 va m'aider à prédire celui de l'année N?". Pas sûr. Tout ça en considérant le nombre faiblre de données disponibles que tu as (environ 20 ans). Je te conseillerai dans un premier temps de considérer les 2 ou 3 années précédentes seulement.

    Dans Target Time Series, tu dois indiquer à Matlab les chiffres qu'il doit atteindre par rapport à chaque entrée. D'où le fait que pour chaque ligne d'input, Matlab requiert un output, d'où l'erreur que tu obtiens.

    En résumé, si tu choisis d'utiliser les 2 dernières années pour prédire la suivante, tu dois :
    1) Utiliser un réseau dont le premier layer a 2 neurones, et le dernier layer 1 seul (car tu ne prédis que 1 année à la fois)
    2) Formatter tes données pour les donner à manger à Matlab.
    Donc si tu prends l'option "Row matrix"

    Input doit avoir la forme :
    700 714.5
    714.5 750
    750 680
    et ainsi de suite jusqu'à
    719 704

    Output doit avoir la forme
    750
    680
    756.8
    etc.

    Ca, ça indique à Matlab, "Quand il a plu 700mm et l'année suivante 714.5 alors l'année d'après il pleut 750mm" et ainsi de suite. Avec ces associations, Matlab va te produire un modèle, plus ou moins précis selon la quantité de données dans ton data set et ton choix de "Nombre d'années influentes".

    Une fois que tu obtiens le modèle, tu pourras alors demander à MAtlab de te prédire les précipitations des 2 dernières années.

    J'ai essayé de pas trop utiliser de termes mathématiques, tu peux me demander des précisions si tu veux même si je ne suis pas une pro de cette toolbox (je l'ai simplement utilisé 2-3 fois pour voir comment ça fonctionne). Good luck

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ah d'accord ! Merci beaucoup pour l'explication, c'est très clair !

Discussions similaires

  1. prédiction des séries temporelles avec R
    Par webshaker dans le forum R
    Réponses: 2
    Dernier message: 12/05/2023, 10h10
  2. Réponses: 0
    Dernier message: 26/11/2013, 13h37
  3. [Réseaux de neurones] Séries chronologiques
    Par demoisellex dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 28/06/2013, 11h26
  4. Problème avec la création de réseaux de neurones
    Par mindo233 dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/01/2012, 22h59
  5. Réseaux de neurones
    Par kayin dans le forum Méthodes prédictives
    Réponses: 8
    Dernier message: 10/03/2004, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo