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

Algorithmes et structures de données Discussion :

Détermination automatique du nombre de classes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Par défaut Détermination automatique du nombre de classes
    Bonjour,

    Je recherche actuellement un algorithme de classification automatique de données.

    J'ai par exemple un tableau à 3 variables avec n individus. Je sais qu'en réalité, ces individus sont représentatifs de 4 classes.

    Quel algorithme me conseillez-vous afin de déterminer automatiquement le nombre de classes de ce tableau de données, sans connaitre à priori ce nombre ?

    Mon choix s'est pour le moment tourné vers une classification ascendante hiérarchique (CAH) mais cette méthode ne permet toujours pas de déterminer le nombre de classes automatiquement (le choix du nombre de classe se fait à l'oeil grâce à un dendrogramme ou à partir de la variance expliquée).

    Merci d'avance pour votre aide et vos conseils.

  2. #2
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    tu peux automatiser la détection de la meilleure coupure dans la CAH.
    Il existe aussi des mesures spécifiques pour le faire :
    http://machaon.karanagai.com/validation_algorithms.html
    Si tu ne veux pas utiliser la CAH, tu peux opter pour une méthode de partitionnement (k-means, kohonen maps).
    Tu peux également combiner CAH et partitionnement pour les performances.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je dirais aussi que cela dépend de ce qui est sous-tendu par "classe" et "variables"..

    les classes ont-elles des critères objectifs, indépendants des valeurs des variables, ou bien sont-elles uniquement déterminées par ce qui est présent comme valeurs ?

  4. #4
    Membre éclairé Avatar de Pistolero_JB
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    Cependant il existe aussi des critères pour déterminer automatiquement le nombre de groupes, notamment avec k-means il existe le critère de Coleman, Harabasz et Davies-Bouldin (applicable à d'autres méthodes comme CAH). Ces critères mesurent à la fois la compacité et la séparation des groupes pour chaque estimation de k (nombre de groupes). Bien évidemment ça a ces limites, mais si les clusters sont relativement séparés sans trop d'overlapping, ça marche très bien.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pistolero_JB Voir le message
    Cependant il existe aussi des critères pour déterminer automatiquement le nombre de groupes, notamment avec k-means il existe le critère de Coleman, Harabasz et Davies-Bouldin (applicable à d'autres méthodes comme CAH). Ces critères mesurent à la fois la compacité et la séparation des groupes pour chaque estimation de k (nombre de groupes). Bien évidemment ça a ces limites, mais si les clusters sont relativement séparés sans trop d'overlapping, ça marche très bien.
    oui mais les solutions peuvent être très différentes...

    Si les classes sont pré-déterminées (par exemple un système-expert devant reconnaîttre si telle ou telle mesure tombe dans telle combinaison de contraintes et donc dans telle classe), une simple table de conditions et une simple boucle de test fera l'affaire..

    Et sera logiquement plus simple et plus correspondante à la réaltié (car quantifiable et reproductible)

    .

  6. #6
    Membre éclairé Avatar de Pistolero_JB
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    C'est vrai si les individus sont représentatifs de 4 classes, le nombre de classes est déjà pré-déterminé, alors pourquoi chercher le nombre de classes ? Il suffit de couper le dendogramme là où le niveau hiérarchique atteint 4 groupes, non ?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    absolument ..

    Par exemple :

    si les 4 classes peuvent être définies par les domaines :

    min1 < var1 < max1
    min21 < var2 < max21 ou min22 < var2 < max22
    min3 < var3 < max3
    min41 < var4 < max41 ou min42 < var4 < max42

    on peut simplement utiliser des tests bien ordonnés...

  8. #8
    Membre éclairé Avatar de Pistolero_JB
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    La classification n'est pas si simple dans le cas où var est une variable multidimensionnelle, elle peut avoir une ambiguïté entre plusieurs classes. Le recouvrement des classes (lié souvent au bruit) fait qu'il n'est pas possible de comparer var en séparant ses composantes.

    C'est pour cela que CAH ou k-means utilisent une notion de similarité pour comparer l'échantillon et la classe, le plus souvent avec la distance Euclidienne. L'appartenance d'un échantillon dans une classe est donc mesurer par la similarité de cette échantillon et la représentation de ce que contient la classe, dans k-means et CAH c'est la moyenne des échantillon déjà trié dans la classe, ou d'un échantillon référent dans le cas d'apprentissage supervisé (expert humain dans la boucle).

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    C'est pour ça que je posais la question..

    Car on trouve ici tout un tas de super-méthodes, mais on peut trouver une solution beaucoup plus simple si on connait les choses..

    Pour exemple, j'ai développé il y a maintenant de nombreuses années un système-expert pour la météo.

    Il y avait 4000 règles dans l'analyse de base, et la programmation (via Prolog),

    En repassant et ré-analysant le problème, je me suis rendu compte qu'en fait ces règles étaient réduites et automatisées, car :

    elles faisaient référence à 8 variables comportant chacune environ 3 domaines de valeurs (en dur) possibles.

    Fabriquer alors un fichier comportant l'écriture des règles par simplement leur formatage en colonne a permis de formaliser ça en 6 boucles imbriquées.

    Et une réduction du temps de calcul d'un facteur 4000 ...

    Avec un algo (et donc une maintenance) hyper simple , tant du point de vue du code (100 lignes) que du point de vue des règles (éditer les bonnes colonnes ou lignes)


    Donc comme je disais ça dépend du problème et du fait de savoir si les classes sont fixes ou à déterminer au vol..

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Par défaut
    Merci à vous tous pour vos réponses.

    En fait, le nombre de 4 classes était donné en exemple.
    L'algorithme ne connait pas le nombre de classes à priori, je le teste avec des données représentatives de 4 classes, mais seulement moi le sait, pas l'algorithme.

    L'algorithme doit déterminer le nombre d'appareils d'une installation (les classes en question) à partir de données électriques (les 3 variables).

    Les bornes des classes ne sont donc pas définies à l'avance, c'est également à l'algorithme de déterminer les limites à partir d'une phase d'apprentissage.

    Pour la CAH, j'avais opté pour la méthode de Ward (distance des barycentres pondérée par le nombre d'individus par classe) mais il s'est avéré finalement que la classification n'était pas bonne. En effet, si un appareil a un comportement très différent des autres, seulement 2 classes seront créées : une classe avec cet appareil et une autre classe avec tous les autres appareils. Or, je souhaite une classe par appareil.

    Je regarde actuellement la méthode "single linkage" pour voir si elle peut être adaptée à mon problème.

  11. #11
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    le fait d'avoir 4 appareils n'impliquent pas nécessairement que 4 classes sont suffisantes pour classer tes données. Même en prenant un algorithme de clustering sous contraintes, tu pourras obtenir plus de 4 classes : la seule chose que tu puisses imposer c'est que les individus d'une même classe correspondent bien au même appareil.

    Sinon, pour le choix de la mesure de similarité, il dépend bien évidemment du type de données que tu manipules (numériques, ordinales, binaires, catégorielles, ...). Il faut aussi penser à normaliser tes données.

  12. #12
    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 : 46
    Localisation : Etats-Unis

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

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

    je ne connais pas exactement les algorithmes que tu recherches, toutefois j'utilise très régulièrement Weka et dans la partie clustering tu peux décider de lancer les calculs avec détermination automatique du nombre de classes.
    Comme c'est OpenSource, tu as accès au code et dans chaque classe, il est marqué les références des articles sur lesquels le code est basé. Donc tu auras les articles que tu souhaites, en plus c'est ceux utilisés par une librairie qui commence à faire référence dans le domaine.
    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.

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/01/2007, 21h03
  2. [.net 2.0] Nombre de classes disponibles
    Par -Jolan- dans le forum Framework .NET
    Réponses: 4
    Dernier message: 30/10/2006, 09h53
  3. Déterminer automatiquement le path pour une image
    Par mikedavem dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2006, 08h41
  4. Déterminer si un nombre est premier
    Par Fandefruit dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2005, 10h52
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

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