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 :

conseils pour flame clustering


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut conseils pour flame clustering
    Bonjour,

    Je suis en train d'implémenter un flame clustering. Cette implémentation se base sur ce que j'ai pu trouver sur internet, essentiellement ces deux liens :
    - Wikipedia http://en.wikipedia.org/wiki/FLAME_clustering
    - Cette implémentation en C (je code de mon coté en C#) : https://code.google.com/p/flame-clus...e/#svn%2Ftrunk

    Dans l'ensemble, tout va bien, mais je souhaiterais avoir quelques conseils sur le forum :

    - Calcul des distances :
    Ca consomme beaucoup de mémoire et donc je souhaite limiter les données maintenues aux seuls plus proches voisins. Ca n'est pas un problème technique en soit, mais point suivant...

    - Les k plus proches voisins :
    Deux aspects ici.
    Le premier : si deux voisins sont à même distance est-ce qu'ils ne comptent que pour 1 parmi les k ?
    Le second : si la réponse à la question précédente est oui, je risque avoir tous les individus en tant que voisins en vis à vis de chaque individu (cela en fonction du problème traité)... et donc retomber sur le problème de consommation mémoire évoqué ci-dessus.

    - L'itération :
    Wikipedia indique deux choses :
    Etapes 2.1.1 et 2.1.2 : "... with fixed and full ..."
    Etape 2.2 : "Then the fuzzy memberships of all type 3 objects are updated by a converging iterative procedure called..."

    Et le code C (si je l'ai bien décrypté) semble n'itérer que sur ce que wikipedia appelle "the rest".

    Quelle est la bonne approche, dans la pratique ?


    Merci de vos retours,

  2. #2
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Salut

    Juste une petite remarque en passant (je ne suis pas le plus compétent pour le sujet sur ce forum) :

    Citation Envoyé par Alikendarfen Voir le message
    - Calcul des distances :
    Ca consomme beaucoup de mémoire et donc je souhaite limiter les données maintenues aux seuls plus proches voisins. Ca n'est pas un problème technique en soit, mais point suivant...
    L'algo calcule des vraies distances... Tu n'en as pas besoin, si je ne m'abuse... Il me semble que c'est uniquement utilisé comme point de comparaison... Dans ce cas, le carré est équivalent, et tu évites des calculs de racine carrée partout (ce qui est très lourd).

    Par contre, pour la mémoire, je n'ai pas d'idées comme ça, à moins de rentrer dans le code et l'algo...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut
    Merci Souviron pour ce conseil.

    Oui la distance ne sert que temporairement pour la sélection des k plus proches voisins.

    Mais sinon, mon premier cadre d'application n'utilise pas du tout une distance euclidienne. La "distance" ou plutôt valeur que j'utilise est basée sur le nombre d'éléments communs ou non communs entre deux ensembles et sur le nombre d'occurrences des éléments de ces ensembles par rapport à la population globale.

    Edit :
    pour bien préciser cependant, le point concernant la mémoire est surtout dépendant du point d'après concernant les k plus proches voisins.

  4. #4
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ok pas de pbe.. Je remarque juste dans le code C qu'il y a des sqrt partout... et qu'elles me semblent toutes inutiles (mais je ne suis pas rentré dans l'algo)...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ok pas de pbe.. Je remarque juste dans le code C qu'il y a des sqrt partout... et qu'elles me semblent toutes inutiles (mais je ne suis pas rentré dans l'algo)...
    Je suis d'accord. J'ai utilisé le code C essentiellement pour approfondir ma compréhension de l'article de wikipedia, mais mon implémentation est totalement différente sur pas mal de points.

    Notamment, le calcul de la distance entre deux éléments est une fonction paramètre externe à l'algo dans ma version.

  6. #6
    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 : 45
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par Alikendarfen Voir le message
    Le premier : si deux voisins sont à même distance est-ce qu'ils ne comptent que pour 1 parmi les k ?
    Non, je ne vois pas pourquoi ils compteraient pour 1. Si les deux points sont les plus proches, ils sont donc les 2 plus proches voisins et non l'unique plus proche voisin.
    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.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut
    Merci Toto13,

    Je me posais cette question parce que mon premier cadre d'application travaille sur des valeurs discrètes en terme de "distances".

    Du coup, j'ai des situations ou la distance ne comprend finalement qu'un petit nombre de valeurs différentes.

    Et donc, selon toi, quelle influence cela peut-il avoir sur l'algo ? (le fait qu'un élément à distance d soit maintenu parmi les voisins alors qu'un autre voisin à la même distance d ne l'est pas)

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Alikendarfen Voir le message
    (le fait qu'un élément à distance d soit maintenu parmi les voisins alors qu'un autre voisin à la même distance d ne l'est pas)
    Un bug ?

    Si la distance est la même, alors ils doivent tous les 2 être gardés, non ? Qu'est-ce qui te permettrait/autoriserait à en éliminer un plutôt qu'un autre ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Un bug ?

    Si la distance est la même, alors ils doivent tous les 2 être gardés, non ? Qu'est-ce qui te permettrait/autoriserait à en éliminer un plutôt qu'un autre ?
    C'est bien la question que je me pose !! Mais après ça, je n'arrive pas à voir/comprendre précisément l'impact sur la convergence de l'algo...

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Dans TA version (que je ne connais pas) n'y aurait-il pas un pbe avec des "<=" à la place de "<" ou inversement des ">=" à la place des ">" ?

    Dans la verson C, je vois beaucoup de "petits" problèmes pouvant amener à ça :

    • Des divisions de float avec des (m+1) ou des m , qui, bien qu'à priori puissent être promues au type de l'élément de gauche, sont souvent dans les faits des divisions ntières, sauf si on caste la valeur

    • Des mélanges doubles/floats, avec des additions de floats stockées dans des doubles sans cast, ce qui laissent présager des "arrondis" quelque peu tendancieux

    • Des usages de EPSILON indifférement pour des floats ou des doubles, alors que il y a 2 valeurs distinctes (FLT_EPSILON et DBL_EPSILON), une pour chaque cas. Et donc tester une inégalité pour en déduire quelque chose avec ça est hautement sujet à caution...

    • Et ça, c'est vraiment en "survolant" le code...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Points : 486
    Points
    486
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Dans TA version (que je ne connais pas) n'y aurait-il pas un pbe avec des "<=" à la place de "<" ou inversement des ">=" à la place des ">" ?[/LIST]
    Ben écoute, non... et à la limite ça n'est pas trop le truc : il arrive que des voisins soient à la même distance d'un autre et c'est tout.

    Ma question, c'était plutôt de connaitre l'impact sur le résultat de l'algo entre :
    - prendre strictement les k premiers (peu importe les égalités)
    - ou bien garder tous les voisins à même distance, dans la limite de k distances distinctes


    (ps : je n'ai pas posté ce sujet pour une histoire de bug)

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/07/2003, 16h04
  2. Conseils pour developper une application avec Oracle
    Par belugha dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2003, 16h03
  3. Cherche conseil pour choisir mon orientation.
    Par AslDice dans le forum Débuter
    Réponses: 6
    Dernier message: 24/04/2003, 17h07
  4. Conseils pour poser votre question...
    Par Community Management dans le forum XMLRAD
    Réponses: 0
    Dernier message: 30/01/2003, 16h58
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

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