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

Méthodes exploratoires Discussion :

Qualité d'une ACP


Sujet :

Méthodes exploratoires

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut Qualité d'une ACP
    Bonjour,

    Je suis ennuyé parce que j'ai utilisé la fonction princomp sur Matlab pour faire une ACP et qu'ensuite j'ai décidé de regarder la qualité de cette ACP...

    Je pose ma matrice de départ X et SCORE la matrice des coordonnées des individus dans la nouvelle base. ET ensuite :
    C=diag(X*X'); %normes des individus de X
    B=diag(SCORE*SCORE'); %normes des individus de SCORE
    E=diag(X*SCORE'); %produit scalaire de X par score
    F=(E./sqrt(C)./sqrt(B)).^2; %cosinus carrés entre les individus de x et leurs projetés respectifs dans SCORE.

    Je m'attendais à quelques cos carrés élevés et bien non ! Tous inférieurs à 0.1 !!! Est ce donc une mauvaise méthode que de considérer l'angle entre les individus et leur projetés ??? Ou est ce que c'est l'étude ACP qui n'est pas adéquate ?

    Merci beaucoup

    -------------------------------------------------------------------------

    Je deviens fou! J'ais deux matrices n*p qui représentent n vecteurs pour la première et leurs n projections dans une autre base pour la seconde.

    Je voudrais trouver une matrice n*1 qui donne les n cosinus entre les vecteurs et leur projection.
    Pour l'instant j'as pensé a prendre la trace du produit de la première matrice par la transposée de la seconde (donc le produit scalire de chaque vecteur avec son vecteur projeté) mais ensuite il faut que je divise chaque valeur par le produit de la norme de chaque vecteur avec la norme de son vecteur projeté!

    Je suis persuadé qu'il existe plus simple, mais quoi!?

    Merci pour votre aide

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    salut,

    tu peux juste diviser les normes : cos(teta) = ||p(v)||/||v|| , avec p l'operateur projection.

    PS :
    si tu projete dans une autre 'base' qui est normée ( la base d'origine est normée aussi), tu dois avoir ||p(v)|| = ||v||. Si ton espace de projection est plus petit que l'espace où se trouve les v, ton calcul serviva à quelque chose .

    ++

  3. #3
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    tu es en quelle dimension ?

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Je travaille sur l'automatisattion d'une analyse en composantes principales (ACP ou APC en englais). la dimension dépend donc de la matrice de départ.

    Afin d'avoir une idée de la qualité de la représentation de chaque point, je cherche l'angle entre chaque vecteur initial (réprésentant un point) et sa projection. Plus précisément le carré du cosinus de cet angle.

  5. #5
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    Appelons A ta matrice n*p contenant des n vecteurs en dimension p.
    Appelons B ta matrice n*p contenant les projetés des n vecteurs en dimension p.

    la diagonale de C = A * transpose(A) te donne la norme carrée de chaque vecteur de A
    la diagonale de B = B * transpose(B) te donne la norme carrée de chaque vecteur de B
    la diagonale de E = A * transpose(B) te donne le produit scalaire entre les vecteurs de A et de B.

    comme cos(angle) = <u.v> / sqrt(<u.u>) / sqrt(<v.v>), tu peux obtenir ton résultat.

    Bon c'est la méthode brutale mais si c'est juste pour faire une vérification et si tu es sous matlab, c'est très facile à mettre en oeuvre.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Merci corentin,

    je suis sous matlab donc effectivement ce sera rapide et facile a programmer.

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

Discussions similaires

  1. controler la qualité d'une clé SSH ?
    Par byloute dans le forum Sécurité
    Réponses: 1
    Dernier message: 16/07/2007, 13h49
  2. Quantifier la qualité d'une image après compression JPEG
    Par louitos dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 06/07/2007, 09h42
  3. [Qualité]Ecrire une documentation.
    Par berceker united dans le forum Qualité
    Réponses: 4
    Dernier message: 23/08/2006, 11h28
  4. [JAI] Diminuer la qualité d'une image PNG
    Par supermanu dans le forum 2D
    Réponses: 2
    Dernier message: 11/04/2006, 11h49
  5. importance de la qualité d'une carte réseau
    Par GMI3 dans le forum Hardware
    Réponses: 5
    Dernier message: 30/01/2005, 23h46

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