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

Mathématiques Discussion :

Algos de Clustering en 2D


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut Algos de Clustering en 2D
    Bonjour, je cherche un/des algorithmes (regression lineraire multi-modal ou autres..) me permettant de clusteriser ce type de probleme de façon à décomposer un nuage de point en droites.



    Les points pour l'exemple sont en 2D et fournis en piece jointe au cas où...

    A vue de nez, on voit bien que l'on peut en ressortir au moins 2 droites (voir 3) d'à peu pres même pente. Le tout est de savoir comment.
    J'ai essayé les algos fourni par ELKI mais sans succés (ou alors, j'ai du rater un truc )
    J'aimerais éviter de réinventer la roue.

    Merci!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    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
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    je n'ai jamais vu un tel problème auparavant donc je ne sais pas s'il existe des algorithmes éprouvés pour le faire. Dans le cas où tu serais amené à devoir faire ta propre méthode, il me semble qu'en combinant classification et régression linéaire, on pourrait aboutir à quelque chose d'acceptable à défaut d'être optimal.

    Visuellement, tu sembles avoir plusieurs points par abscisse. Puisque tu veux deux droites, il faudrait segmenter en deux parties chaque nuage de point associé à chaque abscisse x. Tu obtiendrais donc deux classes, dont je note c1(x) et c2(x) les centres respectifs, avec la convention c1(x)<c2(x). Or, puisque tu veux avoir deux droites, tu dois chercher ces centres sous les formes respectives
    c1(x)=a1*x+b1
    c2(x)=a2*x+b2
    avec a1, a2, b1, b2 des nombres réels.

    La mise en place d'un algorithme "naïf" ne me semble pas du tout hors de portée. Classiquement, j'estimerais a1, a2, b1 et b2 au sens des moindres carrés, et je chercherais les centres de manière à minimiser les variances intra-classe et inter-classe. Tout ceci est très classique, mais la combinaison l'est moins à mon avis. Ceci dit, en écrivant proprement les choses comme un problème de minimisation sous contraintes, on doit pouvoir aboutir à un algorithme direct relativement performant. Une autre approche possible est de mettre en place un algorithme itératif alterné, c'est-à-dire trouver c1(x) et c2(x), puis estimer a1, a2, b1, b2, puis chercher à nouveau c1(x) et c2(x), puis estimer a1, a2, b1, b2, et ainsi de suite, en injectant l'information calculée à chaque étape dans la suivante bien entendu.

    EDIT : la présence de valeurs aberrantes dans tes données pourrait un peu trop perturber la solution, je ne sais pas trop. Dans un premier temps, enlève les points trop éloignés, je pense notamment au trois points isolés tout en bas, ou alors essaye d'augmenter le nombres de classes/droites à chercher.

  3. #3
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    bah, pourquoi pas simplement :

    1 passage : une régression linéaire / moindre carrés

    2ième passage : sélectionner tous les points < -sigma (ou -2 sigma), tous les points > sigma (tou +2 sigma), et tous les points entre les 2 en 3 tableaux.

    3ième passage : avoir 3 régresion/moindres carrés.

  4. #4
    Membre expérimenté
    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
    Points : 1 685
    Points
    1 685
    Par défaut
    Salut souviron,

    effectivement ton approche a le mérite d'être vraiment simple en plus. Vois-tu comment la généraliser pour avoir seulement 2 droites, ou 4, ou 5, ou tout autre chose que 3 droites?

  5. #5
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    lol

    Je suppose que ça dépend du style de distribution...

    Mais si c'est du style "lamellaire" comme c'est le cas ici, ça devrait pas poser de problème..

    A la limite tu peux faire un seuillage "auto", en regardant par abcisse les nuages continus en ordonnées (bien que dans ces-ci au milieu ça marchera pas trop), ou en comptant les "trous" dans les premières et dernières fois où tu atteins ces "trous"..

  6. #6
    Membre expérimenté
    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
    Points : 1 685
    Points
    1 685
    Par défaut
    D'accord,
    éventuellement, on pourrait améliorer ta méthode en cherchant les médianes par abscisses et en faisant la première régression linéaire à partir de ces points seulement. Cela devrait éliminer le problème de la sensibilité de la méthode aux valeurs aberrantes.

  7. #7
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Ou simplement faire un premier passage sur la première régression en éliminant tous les points à , je sais pas +/- 5 sigmas, ou +/- 7..

    Ou par exemple déterminer l'écart max, et éliminer tout ce qui est > à écart_max/2, ou 2/3 écart max..

    Ou, encore plus juste, faire un histograme des y en fonction de x, et éliminer tous les pics "minces"..

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup pour vos pistes. Effectivement, ça m'a l'air plus simple que je ne le pensais, j'etais parti sur de la modification des algos de culstering à la OPTICS/DBSCAN ^^

    Sinon, j'avais pensé plutôt à utiliser l'estimateur de Theil–Sen plutôt que des moindres carrés pour se rapprocher plus facilement des formes... mais je ne sais pas encore trop ce que ça vaut pour ce type de problème.

  9. #9
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    bah je pense qu'au nombre de points que tu as, avec une bête première régression, puis élimination des points trop éloignés comme je mentionnais, re-calcul, et ensuite ce que je mentionnais dans ma première réponse ça devrait marcher super nickel...

Discussions similaires

  1. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 18h51
  2. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  3. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45
  4. Algo de Hough et ou de Radon
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/07/2002, 11h09
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

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