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 :

Identification de liens familiaux


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut Identification de liens familiaux
    Bonjour ! Biologiste de formation j'ai quelques notions de biostatistique mais ça commence a dater (une quinzaine d'années) ! Même un peu d'aide pourrait grandement m'aider a y voir claire !

    Voilà l'histoire : Je fais de la photo-identification (on prend une photo d'un individu pour le reconnaître à la prochaine rencontre). Je peux ainsi avoir un catalogue d'individu (une bonne centaine). Pour chaque rencontre, je note la date et l'heure de la rencontre. Mon but est maintenant de connaitre les liens entre les individus et définir des groupes familiaux.

    J'ai bidouillé un peu sur Excel, et quelques logiciels de socio (socprog) mais j'ai atteins certaines limites !

    En mots, je veux identifier les liens entre les individus (classification hiérarchique ascendante je pense) mais il y a un biais que j'aimerais réduire. En effet, comme je travaille sur de la donnée opportuniste, il se peut que deux individus observés le même jour ne soit pas de la même famille parce qu'observé avec trop de temps entre les observations (exemple : matin / après midi).

    Si ID01 est observé le même jour que ID02 alors ils seront considéré de la même famille mais il faudrait exclure les observations avec un écart d'heure trop important. Plus les heures sont proches, plus les individus ont une chance d'être de la même famille. Il y a un curseur écologique à définir évidement mais peut être peut-il se calculer.

    En gros la première partie j'y arrive a peu près, mais la deuxième variable (heure) me pose problème puisque elle est forcement lier à la date.
    Ce que j'aimerais c'est donc de pouvoir programmer tout ça pour éviter de passer X jours sur X logiciels différents et réduire les biais.

    J'espère être assez claire dans mon explication, parler en terme "mathématique" n'est pas toujours évident pour moi biologiste !
    Merci !

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Au début de ta question, tu parles de groupe familiaux. Là, je comprend ( père, oncle, cousin ... la famille au sens classique). Après , tu parles de Classification Hiérarchique ascendante. Là, je me dis elle fait fausse route, la CAH, c'est autre chose.
    Ensuite, tu dis que selon l'heure de la rencontre, 2 individus peuvent être de la même famille ou non. Tu parles aussi de curseur écologique ???

    Reformule ton besoin, avec tes mots, pas avec des mots de mathématiciens, ça ira mieux.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Je pense qu'il faut que je précise que j'étudie des cachalots... le rapport oncle tante tout ça n'a pas vraiment lieu d'être (au mieux mère-petit). J'ai besoin d'identifier les membres d'un groupe. Ils se déplacent en famille, mais je ne rencontre pas toujours tous les individus de cette famille. Donc si un jour je croise 1 et 2, que le lendemain j'ai 3 et 4, et qu'ensuite je croise 2 et 3, les rapprochements se font ! A force de rencontre je fini par me rapprocher de l'ensemble de la famille. Sauf que si je crois 1 et 2 mais avec 4h de d'écart, il y a peu de chance qu'ils soient de la même famille, il est plus probable que j'ai croisé deux clans mais identifier qu'un membre de chaque.

    Le curseur écologique pour moi, c'est jusqu'à quel écart en terme d'heure je peux considérer que je suis encore sur le même groupe familiale. Ils fond des plongées de 45 min, donc sur 20 min d'observation je suis a peu près certains qu'ils se connaissent, ou qu'ils sont de la même famille, au delà de 2 heures, le lien est moins probable. Donc soit je fixe une valeur, soit ça peut s'évaluer...

    J'espère que c'est plus claire !

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    C'est effectivement plus clair.

    Reste quand même quelques points à éclaircir :

    - tu parles de relations mère/petit : J'en déduis que les pères sont absents ; On a n cachalots, chacun parfaitement identifiés, et pour les cachalots 'bébés', on cherche leur mère.

    - n cachalots parfaitement identifiés ... Quand on croise tel jour le cachalot ID01, il n'y a aucun doute, c'est bien ID01. On n'a pas à prendre en compte un facteur 'fiabilité' à ce niveau là.

    - L'objectif se limite à reconstituer les couples mère-petit ; un petit a une seule mère, mais une mère peut-elle avoir plusieurs petits ? Si oui, si on croise 2 petits à très peu de distance, mais pas d'adulte à proximité, ça pourra quand-même aider pour dire qu'ils ont la même mère.

    - On a n cachalots bien identifiés, on sait donc pour chaque cachalot si c'est un bébé, ou un adulte-femelle, ou un adulte-mâle. Et les adultes-mêmes ne servent à rien dans tout ça, parce qu'ils ont 'abandonné' leur famille. On peut les exclure purement et simplement des mesures.

    Est-ce qu'on est aligné jusque-là ?


    Tu parlais de CAH ; la CAH permet plus ou moins de modéliser un phénomène en tache d'huile. On a N individus qui se ressemblent plus ou moins, on va les associer par petits groupes au début, mais l'objectif du process de CAH, c'est de faire des groupes de plus en plus gros, pour au final avoir 2 groupes, puis un groupe. On n'est donc pas dans ce cas là. Dans un Process de CAH où on voudrait classer les grandes villes de France selon la distance, on aurait un groupe Lille +Roubaix, puis Lille-Roubaix + Tourcoing, puis Lille-Roubaix-Tourcoing + Valencienne, puis Lille-Roubaix-Tourcoing-Valencienne + Arras dans un même groupe, alors que Brest serait toujours un groupe à lui tout-seul.

    Ici, on a les bébés d'une part, les adultes d'autre part, et l'objectif est de trouver pour chaque bébé l'adulte-femelle qui s'en rapproche le plus. Avec une notion de 'seuil de confiance'.

    C'est ça ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Merci de m'aider ! (en t'expliquant, ça m'aide en même temps a faire le tri !)

    Alors :
    - Quand je sort en mer je vais croiser des cachalots. Quand ils plongent, ils sortent la queue qui porte des marques et qui me permettent d'identifier un animal. Cette animal peut être déjà connu (déjà pris en photo et recensé) ou nouveau (identifiable mais pas encore dans le catalogue), ou encore, pas identifiable parce que trop d'angle ou trop floue pour la photo... Sur une sortie je vais croiser X cachalots, mais n'en identifier qu'un pourcentage. Ne pouvant pas rester la journée à identifier tout le monde, c'est a force de rencontre que je pourrais dire, si je vois lui c'est que untel et untel sont là puisqu'ils se déplacent toujours en famille. ça peut d'ailleurs m'aider à identifier un animal si la photo est un peu flou mais que je sais avec quels individus comparer.

    -On a donc une population de cachalots dont une partie est identifiée et une reste a découvrir.
    -Les familles sont des groupes de femelles accompagné de jeunes, et une partie de l'année rejoints par de mâles reproducteur solitaire. Les jeunes ne sont identifiables qu'a partir de 3 ans et évidement seulement si ils portent des marques. Le petit suivra la mère pendant ces 4 premières années avant de faire parti du groupe, et les jeunes mâles finiront par quitter les groupes à maturité. La relation mère petit se créer toute seule puisque à chaque fois qu'on identifie la mère le petit le sera avec. Toujours un petit à la fois, mais il y a un système de nounou qui fait qu'on peut avoir une mère avec son petit, accompagné d'un autre petit qu'elle protège. On peut aussi avoir 2 jeunes qui jouent ensemble.
    -Ces groupes peuvent se rencontrer et socialiser donc être observés ensemble.

    -Dans mon tableur j'ai donc : le 30/01/2017 l'individus X1 observé à 11h00. Je ne prends pas en compte les cachalots non identifié, mais j'ai des nouveaux qui s’ajoutent de temps en temps.
    Exemple :

    30/01/2017 X1 11h00
    30/01/2017 X2 11h12
    30/01/2017 X3 16h20
    31/01/2017 X1 10h50
    etc...

    Ici je peux dire qu'il y a de forte chance que X1 et X2 soient de la même famille, X3 est trop éloigné dans le temps (heure) pour être sûr. Et le lendemain, X1 était là, donc X2 probablement !

    -A chaque nouvelle rencontre j'ai de nouvelles entrées et donc tout a refaire à chaque fois puisqu'un nouveau lien peut changer pas mal de truc.

    Je pense que mon titre porte à confusion. Je ne cherche pas a savoir si l'une est la soeur, la mère ou la tante d'une autre. Je cherche juste a dire qu'elles sont de la même famille ! Je cherche a dire : X1, X2 et X4 sont dans le groupe familiale F1; X3, X5, X6 et X9 sont regroupés en F2; X1 et X9 ont déjà été vue ensemble donc F1 et F2 se connaissent ! C'est tout un réseau de connections avec des liens plus ou moins fort !

    Le CAH me paraissait bien puisque d'une population X1 a Xn, je les regroupais en F1 à Fn avec des liens ou pas entre les familles et des individus isolés. Après j'ai peut être compris de travers.

    Sinon je crois que la nuit a porté conseil !
    Je crois que j'ai résolu mon problème à deux variables (date et heure). En fait, une date n'est qu'un formats, on peut la passer au format décimale. Tout comme les heures. Au lieu d'avoir "Date" ("31/12/2014") et "Heure" ("12:30") , je pourrais avoir "DateHeure" ("31/12/2014 12:30"). 31/12/2014=42004, et 12:30=0,520833333333333. En décimal, il y a juste a additionner. Au lieu de deux variable je n'en ai plus qu'une. Il suffi de déterminer un pas temporelle (genre 15 min) et de comparer comme ça ! On en reviens toujours a une histoire d'addition ou de soustraction en math ça m'éclate !

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Donc effectivement, on est en plein dans de la CAH.
    Un des pistes est de bâtir une matrice des distances. Il faut donc calculer les 'distances' 2 à 2 entre tous les cachalots.

    Une piste :
    Par défaut, les distances sont toutes égales à 1 : 2 cachalots qui ne se sont jamais trouvés dans le même secteur sont à une distance de 1. Ensuite, tu fixes un seuil, disons 4 heures. Et pour tout couple (cachalot1, cachalot2) croisé avec un écart de moins de 4 heures, on va traduire cela en 'distance'.
    4heures = 0.16667 jour
    Si je reprends ton exemple, on va écrire distance (x1,x2) = 0.05 ( car 12 minutes = 0.05 * 4 heures)

    Ensuite, on peut améliorer cela. Ici, x1 et x2 ont été vus à 12 minutes d'intervalles ; peut être qu'un autre jour, on les a vus à 20mn d'intervalle, et encore un autre jour, à 30mn d'intervalles.
    Soit on garde 12mn (la durée la plus courte), soit on essaie de prendre en compte le fait qu'en plus, on les a souvent vus à proximité l'un de l'autre. A voir par quelle astuce.

    Une fois qu'on a notre matrice avec toutes les distances, on peut lancer une CAH.
    Comme tu dis que tu bricoles avec Excel, Il me semble que xlstat est un bon outil pour ça.

    Dans tout ça, s'il y a ambiguité sur telle ou telle photo, je n'exploite pas la photo. Dans un 2nd temps, comme on a identifié les individus proches de tel cachalot, on peut s'en servir pour identifier des cachalots sur des photos douteuses, et améliorer les système, par itération.

    Tout ce que je te propose ici, ce sont des méthodes qui datent un peu. Disons des méthodes qui ont plus de 10 ans. Avec des méthodes plus récentes, type Intelligence Artificielle, il y a peut-être moyen de faire mieux, mais parmi les quelques rares outils que je peux connaître, je ne vois rien d'évident.

    En particulier, si tu dois jouer sur les 2 tableaux (beaucoup de photos ambiguës, donc nécessité d'itérations), des méthodes type IA sont peut-être nécessaires.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Merci !

    Je suis content de ne pas être complètement à coté de la plaque ça me rassure !
    Je ne pense pas qu'il faille s’arrêter sur une valeur minimum de l'intervalle, mais plutôt sur une plus grande fréquence de petits intervalles ! Deux "étrangers" peuvent se croiser, mais deux "soeurs" seront souvent observées ensemble.

    J'ai vu un peu xlstat, mais j'aimerais créer un petit logiciel pour cette étude spécifique, pour ne pas avoir a jongler sur X logiciels ! Je vais quand même regarder un peu les possibilités !
    Dans l'idéal évidement ! Reste a voir jusqu'où iront mes compétences et ma détermination ! Par contre je n'en suis pas a envisager un programme de reconnaissance de forme ou autre, même si ça m'aiderait c'est sûr. Je ne pense pas que ma base de donnée puisse dépasser 200 individus, c'est encore gérable avec mes petits yeux surtout si j'ai déjà déterminer les liens.

  8. #8
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Bonjour !

    J'ai regardé un peu pour xlstat mais c'est pas gratuit à part la version d'essai (limitée a 30j) donc bien mais pas top !

    Bon sinon j'essai un peu d'avancer mais en autodidacte c'est pas facile.
    Je commence par essayer d'importer mes données excel et déjà j'ai l'impression que ça bug !

    Nom : imgtest.jpg
Affichages : 182
Taille : 44,8 Ko

    et voilà ce que j'obtiens sur scilab :
    Initialisation :
    Chargement de l'environnement de travail

    Start xls link (Automation) for Scilab
    Load macros
    Load gateways
    Load demos
    Load help


    --> [fd,SST,Sheetnames,Sheetpos] = xls_open('test.xls')
    Sheetpos =

    13265.

    Sheetnames =

    CAH

    SST =


    column 1 to 12

    !NomPm Date c003 c009 c011 c005 c006 c001 c002 c016 c044 c021 !

    column 13 to 24

    !c022 c008 c004 c007

    [etc]

    fd =

    1.

    Une idée ?

  9. #9
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Bon en fait j'ai essayé différemment (en csv) et je pense que ça a marché !

    M=csvRead('test.csv',';',',','string')

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Si tu considères que sur un plan 'algorithme' proprement dit, tu as ta réponse, alors marque le sujet comme résolu. Rien ne t'empêchera d'enlever le tag 'résolu' et de rebondir sur le sujet, si tu le souhaites. Ca évite à des lecteurs de passage de lire tout le sujet dans l'idée de t'aider... pour finalement se rendre compte qu'il n'y a plus de question en suspens.

    Si tu as des questions d'implémentation, et donc propres à un langage (Excel, Scilab ... ) postes un nouveau message dans les forums dédiés à ces langages.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Oui je cours plusieurs lièvres à la fois je pense. Il faut que je trouve comment faire les matrices et les CAH sur scilab, mais je vais poser la question ailleurs
    Merci encore pour tes précieux conseils !

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

Discussions similaires

  1. Réponses: 35
    Dernier message: 09/06/2016, 15h01
  2. Défi : Déduire des liens familiaux !
    Par Ggamer dans le forum Général Python
    Réponses: 3
    Dernier message: 12/03/2010, 15h16
  3. [FLASH 5] Comment créer un lien hypertexte
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2006, 12h26
  4. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  5. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23

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