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 :

Séparateur à vastes marges ou support vecteur machine (SVM)


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Séparateur à vastes marges ou support vecteur machine (SVM)
    Bonjour, je voudrais savoir si quelqu'un pouvais m'aider par rapport à la classification à l'aide de SVM. En fait je voudrais classer des points 3d en fonction de plusieurs autres caractéristiques mais en lisant l'aide de la fonction je n'ai pas compris entièrement le fonctionnement de la fonction.
    En fait à chaque points 3d j'ai d'autres paramètres (8 paramètres par points qui sont dans une autre matrice, les colonnes correspondent aux paramètres et les lignes à quel points les associer) et je voudrais faire une classification par rapport à ces paramètres.
    Merci d'avance de me donner au moins une petite piste pour commencer cette classification.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    de quelle fonction svm parles-tu? Et accessoirement, quel est précisément ton problème?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,
    Je voulais utiliser la classification par séparateur à vaste marge aussi connu sous le nom de support vecteur machine.
    La fonction dans matlab se nomme svmtrain ou svmclassify, d'ailleurs je ne sais pas laquelle des deux utiliser...
    Je souhaite classifier un nuage de points en 3 dimensions (X,Y,Z) en fonction de plusieurs paramètres. En effet ils ont été obtenue par laser et ainsi en fonction de l'amplitude du signal reçu, de sa largeur ou encore de sa forme je voudrais classifier mes points en plusieurs catégories, ex: végétation ou batiments.
    Suis-je un peu plus clair?
    Merci d'avance.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    As-tu une idée du principe des SVM?

    c'est une méthode de classification par apprentissage supervisé : c'est pourquoi il y a 2 fonctions; la première svmtrain sert à entraîner l'algo afin de définir les différentes classes (ce qui suppose que tu possèdes une base déjà classée), et la deuxième fonction svmtrain qui permet de classer des vecteurs.

    Je n'ai jamais utilsé les algos de SVM disponible dans matlab, mais j'imagine que tu pourras trouver plus de renseignements et des exemples dans la doc.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    J'avais bien idée que c'était une classification dirigée.
    Mais je ne possède pas d'échantillon pour classer mes points, je pensais plus le faire par approximation successives.
    C'est à dire changer mes bornes pour chaque paramètre par exemple dire que dans une colonne de ma matrice qui comporte un paramètre et bien si la valeur est entre 1.1 et 1.2 alors tu le classe en végétation.
    Pensez vous que cela est possible?
    Merci déjà pour vos précédentes réponses.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Si tu possèdes plusieurs paramètres, ça va vite devenir plus compliqué... ne peux-tu pas créer une base d'apprentissage en les classant manuellement?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    je possède environ 50 000 points avec 8 paramètres par points. Je ne vois pas trop comment créer une base d'apprentissage manuellement auriez vous une idée?

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Tu ne travailles quand même pas complètement en aveugle? tes données permettent de différencier visuellement la végétation des batiments par exemple? si oui tu peux sélectionner des groupes de points pour lesquelles tu es sûr de pouvoir les classer dans tel ou tel catégorie. c'est une partie qui peu-être un peu laborieuse, mais c'est la partie ingrate obligatoire de l'apprentissage supervisée (même s'il existe des méthodes de classification automatique, tu obtiendras de meilleur résultat en épluchant un peu tes données).

    Par contre es-tu sûr qu'une analyse aussi locale (point par point) te permettra de différencier tes classes? D'habitude les descripteurs sont plutôt associés à des textures. Une autre piste qui pourrait être intéressante serait d'appliquer l'algorithme des k plus proches voisins à chacun (ou à des combinaisons) de tes paramètres pour juger leur pertinence...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Les recherches que j'ai effectués m'ont dirigées vers le choix d'utiliser la SVM.
    Et non je ne travail pas en aveugle, mais bon je ne maitrise pas du tout matlab, c'est mon principal problème. Dans mon cas l'algorithme des k plus proches voisins ne me semble pas pertinent mais merci tout de même pour l'idée.
    Mais par contre votre idée de regarder les paramètres de mes points va m'aider, je vais surement passer par la figure que j'affiche de mes points et essayer d'extraire les coordonnées d'un point ou d'un ensemble de points pour pouvoir ensuite pouvoir retrouver ses paramètres.
    D'ailleurs savez-vous comment je pourrais extraire les coordonnées d'un ou plusieurs points de ma figure et également si une classification en 3 dimensions est possible à l'aide de l'algorithme SVM de matlab?
    Je vous remercie sincèrement des réponses déjà apportées.

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Il y a la fonction ginput qui permet de récupérer la position d'un pixel, il y peut-être aussi des outils permettant de récupérer des rectangles (dans l'idée ce n'est pas très compliqué à faire si tu récupère l'intersection de deux sommets du rectangle à l'aide de ginput).

    Par contre juste pour être sue, tes positions, c'est bien une position (x,y) + une hauteur z?

    si une classification en 3 dimensions est possible à l'aide de l'algorithme SVM de matlab?
    Je ne suis pas sûr de comprendre le sens de ta question... quand tu parles de 3 dimensions, tu fait référence à tes positions? Les positons ne vont pas intervenir dans les descripteurs, ce sont les vecteurs de paramètres que tu vas classer...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    J'avais déjà vu la fonction ginput mais, si j'ai bien compris c'est une fonction qui ne marche que pour un pixel en x,y.
    Quant à moi je te confirme que mes points sont bien en (X,Y) + la hauteur Z. Et donc quand je parle de 3 dimensions ce sont bien mes positions.
    Ces positions, comme tu l'as bien compris, ne vont pas intervenir dans mes vecteurs paramètres qui eux serviront bien à ma classifications de mes points (x,y,z).
    Et donc ma question était si c'était possible d'effectuer une classification de mes points (X,Y,Z) à l'aide de mes 8 paramètre grace à la SVM de Matlab?
    Sinon as tu une nouvelle idée pour l'extraction de coordonnées d'un point ou d'une zone de points dans ma figure.
    Merci d'avance.

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par chronos21 Voir le message
    Et donc ma question était si c'était possible d'effectuer une classification de mes points (X,Y,Z) à l'aide de mes 8 paramètre grace à la SVM de Matlab?
    Bien sur, dans le principe, les SVM permettent de prendre en compte autant de paramètre que tu le souhaites, mais évidemment la complexité la recherche des frontières entre tes classes augmentera avec le nombre de paramètres, c'est pourquoi je te conseillais de vérifier au préalable l'utilité de chacun de tes paramètres.

    Citation Envoyé par chronos21 Voir le message
    Sinon as tu une nouvelle idée pour l'extraction de coordonnées d'un point ou d'une zone de points dans ma figure.
    Merci d'avance.
    Avec tes données, tu peux facilement afficher une image "vue de dessus" en ne conservant que la position x et y; alors tu pourras alors utiliser ginput.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Bonjour, merci pour toutes ces réponses je vais donc y travailler maintenant.
    J'ai trouvé une toolbox qui me permettrait d'extraire mes points 3d (select3d), mais comme je disais, je suis nouveau avec matlab et je ne sais pas comment installer les toolbox.
    Dans mon cas j'ai plusieurs M-file à installer.
    Merci pour tout

  14. #14
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    A proprement parler, il n'y a pas d'installation a effectuer (c'est bien la fonction select3d disponible sur file exchange?)

    Pour pouvoir exécuter les fonctions ou les scripts, il faut que Matlab les "voie", pour cela il faut que ces répertoires se trouvent dans le répertoire dans lequel tu travailles, ou bien il faut que tu les ajoutes à ton path (et dans ce cas, si tu sauves ton path, à chaque démarrage de matlab, tu pourras utiliser ces fonctions, peu importe le répertoire dans lequel tu travailles).

    N'hésites surtout pas à ouvrir les fichiers .m, même si tu ne comprends pas le code, ils contiennent souvent des explications et des indications pour exécuter des démos par exemples.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Merci pour toutes ces explications et bonne journée.

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

Discussions similaires

  1. [Débutant] support vector machines (SVM)
    Par DeepKdd dans le forum Images
    Réponses: 0
    Dernier message: 15/05/2015, 01h07
  2. [Débutant] séparateurs a vaste marge
    Par cameleone86 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/04/2011, 23h11
  3. Séparateur à vaste marge et plusieurs classes
    Par chronos21 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/12/2009, 23h07
  4. Bibliothèque Support Vector Machine (SVM)
    Par medchok dans le forum MATLAB
    Réponses: 0
    Dernier message: 08/04/2009, 14h52
  5. [Spider Toolbox] matlab SVM (séparateur à vaste marge)
    Par 8twilight8 dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/03/2009, 13h28

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