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

Méthodes prédictives Discussion :

Réseau neurones, Leave-one-out


Sujet :

Méthodes prédictives

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 27
    Points
    27
    Par défaut Réseau neurones, Leave-one-out
    Bonjour à tous,

    j'ai un problème de classification (1 ou 0). J'ai une base de données de 1400 observations, contenant 5 caractéristiques chacunes). J'ai donc 5 neurones en entrées, j'en ai mis 3 en caché et 1 en sortie (fonction sigmoïde).

    Pour l'instant, j'ai découpé ma base en base de training, de validation et de test(en utilisant matlab), avec une proportion de 50-25-25. ( ce qui correspond à créer un réseau, et je peux le recréer plusieurs fois en réinitialisant les poids), mais avec toujours la même base de training, de val et de test.

    Etant donné que je n'ai pas beaucoup de data, j'aimerai utilisé la méthode du leave one out. Toutefois je ne comprends pas bien le fonctionnement. Car au final nous aurons donc pour ce cas-ci, si je comprends bien, 1400 bases de training (contenant 1399 obs. chacune) et 1400 observations (1 par test). Ce qui implique que je vais devoir créer 1400 réseaux de neurones, non??? et j'entraînerai chaque réseau avec les 1399 obs et je le teste avec seulement 1 observation.... si c'est le cas, après comment choisir celui que je garde au final????? je pense que je n'ai pas tout compris au principe.

    merci beaucoup

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonsoir,

    alors... on va commencer par la méthode de validation k-fold, que l'on nomme aussi communément validation croisée.
    Dans un k-fold, on divise les données en k échantillons de taille égale. On apprend sur k-1 échantillons et on valide sur le dernier. On réitère cette opération pour tous les échantillons, donc chaque échantillon sert une fois à la validation et k-1 fois à l'apprentissage. Le pourcentage de validation/prédiction est alors la moyenne des pourcentages de validation.
    Dans ce cas, tu n'as pas d'échantillon de test, c'est même inutile. En général on choisit souvent k=10 ce qui est un bon compromis entre biais et variance (cf les livres de Tufféry et Saporta).
    On utilise cette méthode lorsque le nombre d'individus est un peu faible, entre 500 et 2000 de mémoire.

    Le Leave One Out, c'est une k-fold avec k égal au nombre d'individus. On utilise cette méthode lorsque le nombre d'individus est très faible, en dessous de 500.

    Donc dans ton cas, fait plutôt un k-fold qu'un leave one out.

    Pour une de tes questions, oui, il faut bien créer autant de réseaux de neurones que d'échantillons d'apprentissage.

    Pour le modèle final, il est vrai que l'on est un peu ennuyé du fait de ne pas avoir d'ensemble de test. Donc on apprend sur toutes les données et on regarde si cette valeur est très proche de celle obtenu par k-fold. Si c'est le cas tout vas bien, sinon cela veut dire que ton modèle est TRES dépendant des données. En supprimer quelques unes écroule le système => tu es dans le cas d'un apprentissage par coeur. Mais dans ton cas, vu le nombre de caractéristiques par rapport à la taille de ton échantillon, peu de risques de ce coté là.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 27
    Points
    27
    Par défaut
    woaw
    Merci beaucoup pour cette réponse détaillée, elle m'aide beaucoup...
    même s'il me reste toujours un point que je ne comprends pas... relatif à la fin de votre réponse...

    si j'utilise un k-fold par exemple, j'aurai avec ma base de 1400 obs., 10 échantillons de 140. J'aurai donc 10 réseaux de neurones à faire (et pour chaque réseau 1260 obs de training et 140 de val). Pour un réseau, je regarde le pourcentage obtenu pour l'échantillon de validation et au final, je fais la moyenne des 10 pourcentages obtenus. jusque là, j'ai compris...

    Par contre, si je refais toute cette opération plusieurs fois, en réinitialisant donc chaque fois les 10 réseaux, j'obtiendrais peut-être des résultats différents, non??? ne faudrait-il donc pas faire 10 réseaux et réinitialiser les poids 20 fois par réseau par exemples...???


    et ensuite.... Je ne comprends pas vraiment comment on choisit le modèle final... (celui avec lequel on pourra utiliser d'autres data). On reprend toutes les données, donc les 1400 et on fait un training avec elles (dans un nouveau réseau de neurones ) et on compare le pourcentage obtenu avec celui du k-fold??? le k-fold ne sert donc qu'à dire si mon modèle est dépendant de mes données ou pas???

    Merci et désolé pour ces questions de débutant...

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par rob408231 Voir le message
    Par contre, si je refais toute cette opération plusieurs fois, en réinitialisant donc chaque fois les 10 réseaux, j'obtiendrais peut-être des résultats différents, non??? ne faudrait-il donc pas faire 10 réseaux et réinitialiser les poids 20 fois par réseau par exemples...??
    Réinitialiser les poids 20 fois par réseau... là c'est moi qui ne comprends pas
    Tu as dix groupes => tu dois calculer 10 RdN. Il s'agit de 10 RdN différents, donc réinitialisation à chaque fois. Donc comme il s'agit de 10 RdN différents qui valident sur 10 échantillons différents, alors 10 résultats différents => d'où la moyenne




    Citation Envoyé par rob408231 Voir le message
    et ensuite.... Je ne comprends pas vraiment comment on choisit le modèle final... (celui avec lequel on pourra utiliser d'autres data). On reprend toutes les données, donc les 1400 et on fait un training avec elles (dans un nouveau réseau de neurones ) et on compare le pourcentage obtenu avec celui du k-fold??? le k-fold ne sert donc qu'à dire si mon modèle est dépendant de mes données ou pas???
    Exactement.
    Le k-fold te donne le pourcentage de validation/prédiction/généralisation (choisit ce que tu préfères comme terme mais n'en utilise qu'un). En comparant ses performances à celle obtenue sur toutes les données (donc uniquement en apprentissage) tu sais si ton modèle dépend fortement des données => s'il apprend par coeur ou non, donc s'il est utilisable.

    IL FAUT TOUJOURS VALIDER
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 27
    Points
    27
    Par défaut
    Merci Toto13 pour ton énorme patience!!!

    je commence gentiment à comprendre :-)

    juste un terme à clarifier : "modèle" : c'est donc le nombre de neurones, entrées, cachés, sorties, fonction d'activation, etc, mais pas la valeur des poids, c'est juste? La valeur des poids change à chaque fois...

    à la fin quand j'ai refait un réseau de neurone avec mes 1400 data, (j'ai donc des poids à nouveau différents...), je garde ensuite ce modèle AVEC ces valeurs de poids pour d'autres data ??

    et quand est-ce que l'on peut dire que le training a appris par coeur??? y a-t'il un écart de pourcentage raisonnable?
    et s'il a appris par coeur, il faut soit changer le modèle (nombre neurones, fonction d'activation), ou augmenter les data?

    désolé pour toutes ces questions

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    en fait lorsque je dis modèle, je parle d'un modèle de classement, car on modélise ce qui ferait un humain.
    Pour ce qui est du RdN (nombre de neurones en entrée, cachée, fonction de transfert, etc.) on parle plutôt d'architecture.

    Oui, lorsque tu construits ton modèle avec la totalité des données, tu vérifies d'abord que ses performances soient proches de celle obtenues en k-fold, puis tu le conserves tel quel afin de classer toutes les nouvelles données.

    Comment dire que l'on a appris par coeurs? c'est une bonne question et je ne suis pas certain qu'il y ait un seuil statistiquement calculé pour répondre à cette question. Je dirai qu'être en dessous du pourcent est un minimum, mais sans certitude :s
    Dans mon boulot, j'ai eu des modèles avec un écart nul ou de l'ordre de 0,5%. Avec ce genre de valeurs, j'étais tranquille. Mais dans ton cas... Disons que plus c'est petit mieux c'est.

    Comment faire si un RdN apprend par coeur? Si c'est le cas, c'est qu'il n'y a pas assez d'individus par rapport au nombre de poids à ajuster Donc il faut diminuer les poids et donc le nombre de neurones. En général, on diminue ceux de la couche cachée, mais si ça ne suffit pas il faudra réduire ceux de la couche d'entrée. Mais je doute que cela survienne dans ton cas.

    Au fait, tu utilises des RdN, ok, mais as tu testé d'autres méthodes? Il n'est souvent pas utile de travailler avec des RdN qui sont trop lourds et complexes pour l'amélioration qu'ils apportent. En plus pour ton travail, je te conseille de faire un comparatif et ainsi pouvoir dire qu'elle est la meilleure méthode. Pour diversifier, tu peux essayer des méthodes très connues qui donnent souvent de bon résultats :
    - k plus proches voisins.
    - régression logistique (qui obtient des résultats comparables avec les RdN dans mon travail).
    - forêts aléatoires.
    - SVM.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup pour toutes ces précisions, j'ai enfin bien saisi le concept...


    oui j'ai déjà essayer la régression logistique et je m'attaque en parallèle au Support Vector Machine...


    merci encore

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonsoir,

    une méthode qu'il faut souvent essayer (voire toujours) sont les k plus proches voisins. Cette méthode donne régulièrement des résultats surprenant alors qu'elle est la plus simple. La seule chose est qu'il faut tester différentes valeurs de k :
    - fixe.
    - variable <=> dépendant du nombre de caractéristiques.
    Fait donc un comparatif, cela ne donnera que plus d'importance à la meilleure des méthodes (celle que tu choisiras ).
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. validation croisée (leave one out)
    Par magictol53 dans le forum MATLAB
    Réponses: 6
    Dernier message: 27/04/2012, 16h11
  2. Leave-one-out et cv.glm
    Par esteban98 dans le forum R
    Réponses: 5
    Dernier message: 11/05/2011, 14h09
  3. leave one out methode
    Par bensof1 dans le forum Statistiques, Data Mining et Data Science
    Réponses: 5
    Dernier message: 23/03/2011, 14h52
  4. Leave one out
    Par sialamed dans le forum Méthodes prédictives
    Réponses: 1
    Dernier message: 17/06/2008, 23h31
  5. Validation croisée (leave one out)
    Par sialamed dans le forum OpenCV
    Réponses: 0
    Dernier message: 17/06/2008, 13h14

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