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 :

Générer des données synthétiques pour les besoins de l’apprentissage automatique


Sujet :

Méthodes prédictives

  1. #1
    Futur Membre du Club Avatar de MichelSaux
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Générer des données synthétiques pour les besoins de l’apprentissage automatique
    Salut à tous.

    Pour utiliser des algorithmes de classification automatique tels que k-NN, HMM, ANN, etc., il faut avoir préalablement des ensembles d’apprentissage, de test et parfois de validation. Ces ensembles ne doivent avoir aucun chevauchement entre eux. Cela permet de garantir un bon jugement sur l’efficacité des algorithmes testés sur la base de ces ensembles.

    Ma question concerne le cas où les données de test ne sont pas suffisantes en nombre pour être découpées ou qu’elles ne soient pas préalablement séparées en apprentissage/test/validation. Quelqu’un m’a dit qu’il est possible de générer des données synthétiques à partir des données initiales pour les utiliser comme ensembles d’apprentissage et de validation. Est-ce que cette démarche est correcte méthodologiquement ? Si c’est le cas, y-a-t-il des travaux reconnus utilisant cette démarche ?

    Merci.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut


    La validation croisée part justement uniquement d'un ensemble de données et sépare (aléatoirement, en bonne partie) une partie pour l'apprentissage, une autre pour les tests (et réitère). C'est une procédure courante et reconnue. Ce ne sont pas vraiment des données synthétiques, puisque tu exploites de manière intelligente tes données de départ.

    Citation Envoyé par MichelSaux Voir le message
    Ces ensembles ne doivent avoir aucun chevauchement entre eux.
    Que veux-tu dire par là ? Les ensembles de test et d'apprentissage doivent être tirés de la même distribution de probabilité de manière indépendante (iid).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Futur Membre du Club Avatar de MichelSaux
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je vous remercie pour la réponse.

    En effet on m'a déjà conseillé la validation croisée, elle permet d'avoir des tests moins biaisés en variant les ensembles de apprentissage/test/validation.

    Mon problème, par contre, concerne le fait que le nombre de données à utiliser (T) est assez faible pour pouvoir les séparer en trois parties.

    Quelqu'un m'a dit qu'une solution possible consiste à générer à partir de T d'autres données ressemblantes pour les utiliser pour l'apprentissage (A) et la validation (V). Comme ça, les test sont effectués sur la totalité de T. De cette manière, je peux, par exemple, comparer mes résultats avec ceux d'autres approches testées sur utilisé la totalité des données de T.

    Est ce possible de faire comme ça ?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    T est de quel ordre de grandeur ? Avec trois échantillons, tu ne sais rien faire ou presque… Après, tu considères que les ensembles de test et de validation ne comprennent qu'un échantillon, puis tu fais toutes les combinaisons possibles…

    Ce que tu peux aussi faire (à mon avis, c'est ce que ton interlocuteur avait en tête), c'est du bootstrap : piocher des éléments au hasard dans ton jeu de données (avec remise !) pour former tes trois ensembles.

    Sinon, tu as peut-être des données non étiquetées disponibles (donc les entrées mais pas les sorties) ? Tu pourrais t'orienter vers de l'apprentissage semi-supervisé, alors.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Futur Membre du Club Avatar de MichelSaux
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci encore.

    Imagine que mon ensemble T contient 3 classes de 10 éléments chacune, autrement dit |T| = 30. Si on divise T en trois parties (apprentissage, validation et test) qui ne se chevauchent pas (non-overlapping subsets), il ne reste que peu d'éléments pour effectuer des tests significatifs.

    Donc, à défaut d'avoir d'autres données de même nature que T (avoir ces données peut être assez difficile par exemple) pour les utiliser pour l'apprentissage et la validation, il serait intéressant de pouvoir générer à partir de T d'autres données qui ont ses mêmes propriétés. Comme ça, les tests sont effectués sur la totalité de T.

    Il n'est pas question ici ni de bootstrap, de jackknife ou de cross-validation, car dans mon cas, les données de T doivent être utilisées dans leur totalité.

    J'espère que mon problème est plus clair maintenant.

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    Dans ce cas, je ne vois pas de vraie solution : si tu veux créer de nouvelles données, il te faut un modèle qui en est capable… c'est-à-dire le résultat de ton apprentissage.

    Citation Envoyé par MichelSaux Voir le message
    dans mon cas, les données de T doivent être utilisées dans leur totalité.
    Qu'est-ce qui rend ton cas si unique ?

    Citation Envoyé par MichelSaux Voir le message
    (avoir ces données peut être assez difficile par exemple)
    C'est justement l'objectif de l'apprentissage semi-supervisé : tu as un certain nombre d'échantillons, mais tous ne sont pas complets (il manque parfois la classe associée). C'est donc moins cher d'obtenir tes données supplémentaires.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Futur Membre du Club Avatar de MichelSaux
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Salut

    J'ai trouvé enfin ce que je cherche. Il existe en effet des techniques pour générer des données (échantillons) de synthèse (artificielles ou virtuelles) pour des besoins variés, et pour l'apprentissage automatique en particulier. Ces données sont utiles dans le cas où les données réelles manquent, ne sont pas suffisantes, etc.

    Le lecteur intéressé peut se référer à ces deux travaux :

    • Y. Pei and O. Zaïane, "A Synthetic Data Generator for Clustering and Outlier Analysis", Technical Report, Computing Science Department, University of Alberta, Canada, 2006.
    • J. V. Frasch, A. Lodwich, F. Shafait, and T. M. Breuel, "A Bayes-true data generator for evaluation of supervised and unsupervised learning methods", Pattern Recognition Letters, 32(11), 1523-1531, 2011.

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

Discussions similaires

  1. [MySQL] récupérer des données formulaires pour les insérer dans une BD
    Par Hamzaviola dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/05/2016, 13h06
  2. Réponses: 2
    Dernier message: 12/12/2012, 13h24
  3. [Toutes versions] Extraire des données word pour les insérer sous excel
    Par progfou dans le forum Word
    Réponses: 23
    Dernier message: 04/05/2009, 14h23
  4. Générer des données en C ou java pour MySQL?
    Par stef06 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/07/2006, 22h41
  5. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59

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