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 :

[libsvm] Rééquilibrage classe


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [libsvm] Rééquilibrage classe
    Bonjour tout le monde,

    J'utilise actuellement LIbsvm pour un problème de classification multiclasse(16 classes) en one vs one. J'utilise un noyau gaussien. Etant donné que j'ai un gros déséquilibre entre mes classes j'ai décidé de regarder cette partie dans la documentation Libsvm en ne prenant que 2 classes qui sont très déséquilibré et tenter un rééquilibrage. Actuellement j'ai dans mon ensemble d'entrainement 1 classes avec 148 éléments (N1) et une autre avec 274(N2) j'ai donc calculé le poids que j'allais devoir mettre à chacune des classes et en réalisant le calcul (N1+N2)/N1 et (N1+N2)/N2 j'obtiens un poids de 2.85 pour la classe 1 et 1.54 pour la classe 2. J'ai tenté de rentrer ces poids via un fichier .wgt à svmtrain mais rien n'y fait. J'ai aussi essayé de rentrer manuellement ces poids :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model= svmtrain(trainLabel', trainSamples' ,'-s 0  -t 2 -c 1 -g 8 -w1 2.85 -w2 1.54  ');
    mais pareil rien ne se passe.Tout les éléments de la classe 1 vont dans la classe 2. Je souhaitais savoir si vous aviez déjà été confronté à ce problème sous Libsvm ou si vous aviez des pistes à me donner. Je vous remercie d'avance pour le temps que vous m'accorderez.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    J'ai un doute sur l’intérêt de mettre des poids dans la méthode sur deux classes bien disjointes. Que veux tu obtenir par cela ?

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    En fait à la base j'ai 16 classes et il faudra à coup sûr un rééquilibrage. Du coup pour bien appréhender la partie rééquilibrage sous Libsvm je préfère exercer sur 2 classes dans un premier temps et ensuite lorsque cela fonctionne le faire sur mes 16 classes.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Quand j'ai étudié la classification, j'ai appris la méthode one-vs-all qui permet de travailler sur plusieurs classes.

    Mais rien sur le rééquilibrage, dont je ne trouve pas de documentation et ne comprends pas l’intérêt.

    Cordialement.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    En fait C représente le prix à payer si on classe mal un échantillon.Si la classe 1 contient par exemple 3 fois plus d’échantillons que
    la classe 2, alors au cours de son optimisation, le SVM va préférer se tromper sur tous les éléments de la classe 2, c’est la solution la moins coûteuse pour lui. Pour rééquilibrer, il faut donc pénaliser beaucoup plus les erreurs sur les éléments de la classe 2 que ceux sur les éléments de la classe 1. Cet effet est obtenu en mettant des poids différents pour chaque classe dans l’équation d’optimisation du SVM. Les poids
    idéaux, si on veut résoudre le problème de déséquilibre seraient inversement proportionnel au nombre d’échantillons dans chaque classe.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Il semblerait que dans le cas gaussien les choses peuvent se révéler compliquées et que dans le cas linéaire des solutions simples existent.

    stackoverflow

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  3. Élaboration de classe
    Par il_a_ri dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 16/01/2003, 14h22
  4. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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