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 :

mesure de similarité pour EigenFace


Sujet :

Mathématiques

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 18
    Points
    18
    Par défaut mesure de similarité pour EigenFace
    Bonjours,

    je cherche une mesure de similarité à implémenter pour l'algorithme EigenFace de reconnaissance faciale, donc je doit enfaite comparer deux vecteur projeter dans l'espace propre définie par les vecteurs propres de la matrice de covariance de l'ensemble des visage(la je répète un peu l'algo PCA).

    J'ai entendu dire que outre la très connus distance Euclidienne on pouvait utilisé la distance de Mahalanobis qui donnait de meilleures résultats. donc si quelqu'un pouvait m'expliquer comment appliquer cette nouvelle mesure pour l'étape de classiffication de mon Algorithme?

    Merci.

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour,
    de ce que je peux lire, la distance de Mahalanobis entre les vecteurs x et y se calcule notamment à partir de la matrice de covariance sigma de la distribution des vecteurs, et est définie par : .

    Ainsi, une fois obtenue sigma, le tour est joué. Je pense que pour calculer cette matrice, tu dois te servir de l'ensemble des vecteurs considérés. En possèdes-tu en nombre suffisant ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Points : 9
    Points
    9
    Par défaut
    est ce que ce "sigma" représente la matrice de covariance entre le vecteur x et le vecteur y ?, c'est bien ca ou non ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ultimaroms Voir le message
    J'ai entendu dire que outre la très connus distance Euclidienne on pouvait utilisé la distance de Mahalanobis qui donnait de meilleures résultats. donc si quelqu'un pouvait m'expliquer comment appliquer cette nouvelle mesure pour l'étape de classiffication de mon Algorithme?
    Dans l'espace factoriel (la base qui diagonalise la matrice de variance covariance), la distance de Mahalanobis c'est une distance euclidienne, dans laquelle chaque dimension est pondérée par l'inverse de la valeur propre correspondante.

    En pratique, le plus simple est de transformer les coordonnées des points qui t'intéressent en divisant chacun par la racine carrée de la vp correspondante...

    Donc, si tu as des points (x_1, x_2, ... x_n) et (y_1,... y_n), et que tes valeurs propres (positives, forcément) s'écrivent (l_1, ... l_n)

    Tu transformes tes points en
    (x_1/sqrt(l_1), ... x_n/sqrt(l_n)) et (y_1/sqrt(l_1),... y_n/sqrt(l_n))

    et tu calcules tes distances euclidiennes...

    L'intérêt de Mahalanobis, c'est qu'en divisant pas les valeurs propres, tu élimines "le poids des corrélations" dans ta distance : si tu mets deux fois la même variable, sans Mahalanobis, elle compte double, avec Mahalanobis, elle compte comme une.

    Le défaut de Mahalanobis, c'est que ca "redonne du poids" à de toutes petites valeurs propres. Si tes données sont statistiques, et si ta matrice de variance covariance est mal conditionnée (si le rapport de la plus grand à la plus petite vp est grand, c'est presque toujours le cas dans la vraie vie : une matrice mal conditionnée ca veut dire que tes données ne sont pas complètement aléatoires !), ces petites dimensions correspondent à du bruit.

    En euclidien, comme chaque coordonnée est "pondérée par sa valeur propre" le problème ne se pose pas. Avec Mahalanobis, il réapparait, et il est utile de l'éliminer, soit en supprimant les dimensions correspondantes (celles des petites vp, en plus ca accélère le calcul si tu est dans un espace de grande dimension), soit en ajoutant à chacune de tes valeurs propres une constante de régularisation (typiquement 1e-4 fois la plus grand vp...)

    Autre détail, l'inversion/diagonalisation qui te permet de passer en referentiel factoriel est une opération assez instable. Utilise soit une SVD, soit ajoute une petite matrice diagonale (comme indiqué précédemment) pour stabiliser ton calcul...

    Francois

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Points : 9
    Points
    9
    Par défaut
    merci pour cette très bonne explication, à ce que je vois ces problèmes de conditionnement me poursuivrons toujours,, j'ai vu ta réponse sur l'autre topic et tu me conseil de multiplier ma matrice par l'identité x la plus grande valeur propre x une très petite valeurs, mais voila pour faire ca donc je doit allez chercher cette "plus grande valeurs propre", mais bon je vais déjà voir avec une décomposition en valeur singulier ce que ca donne (c'est vraie que j'ai eu l'occasion de voir que c'était vraiment robuste )

    encore Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nadal1991 Voir le message
    merci pour cette très bonne explication, à ce que je vois ces problèmes de conditionnement me poursuivrons toujours,,
    Le mauvais conditionnement, c'est la situation normale pour des matrices de variance covariance représentant des phénomènes réels : ce que cela veut dire, c'est que les variables représentant les lignes ou les colonnes de ta matrice sont corrélées (si tu imagines un nuage de points, cela veut dire que le nuage est 'aplati').

    Si toutes les valeurs propres étaient égales, cela voudrait dire que tout est indépendant, bref qu'il n'y a rien à dire...

    Donc réjouis toi, plus c'est mal gaulé (côté conditionnement) plus il y a d'information dans tes données!!!

    Citation Envoyé par nadal1991 Voir le message
    j'ai vu ta réponse sur l'autre topic et tu me conseil de multiplier ma matrice par l'identité x la plus grande valeur propre x une très petite valeurs, mais voila pour faire ca donc je doit allez chercher cette "plus grande valeurs propre", mais bon je vais déjà voir avec une décomposition en valeur singulier ce que ca donne (c'est vraie que j'ai eu l'occasion de voir que c'était vraiment robuste )
    Pas multiplier, ajouter... A + e Id.

    Si tu ne connais pas la plus grande VP, tu peux prendre une valeur fondée sur la trace (qui est la somme des valeur propres...), disons 1e-6 fois la trace divisée par la dimension ou qqchose du genre. Tu diagonalises avec ce coefficient, puis tu vérifies les valeurs propres trouvées, quitte à faire une seconde passe...

    Francois

Discussions similaires

  1. Quelle mesure de similarité choisir
    Par malikakika dans le forum Traitement d'images
    Réponses: 13
    Dernier message: 05/08/2011, 01h07
  2. Erreur de reconstruction pour eigenfaces
    Par darrajinho dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 12/03/2010, 09h48
  3. mesures de similarités
    Par minazed dans le forum Langage
    Réponses: 1
    Dernier message: 30/10/2009, 16h44
  4. Réponses: 3
    Dernier message: 10/04/2007, 14h41

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