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 :

Normalisation des composantes d'un vecteur


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Points : 60
    Points
    60
    Par défaut Normalisation des composantes d'un vecteur
    Bonjour:
    j'ai un vecteur x qui contient 35 composantes.
    Dans ce vecteur , il y a des composantes qui sont dans l'intervalle [0..1] et d'autres qui sont dans l'intervalle [0..255], cette différence a une influence sur la suite de mon travail.donc j'ai choisi de normaliser les éléments de ce vecteur en utilisant la normalisation par transformation linéaire des données dans un intervalle [a..b]

    x′j = (b × (xj − minj)/(maxj − minj)) + a
    Mon problème est le choix de l'intervalle [a..b]!!!!????

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Tu veux en faire quoi de ton vecteur après ? C'est pour calculer une distance, une direction.... ?

  3. #3
    Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Points : 60
    Points
    60
    Par défaut
    En faite je vais faire la normalisation de plusieurs vecteurs puis calculer la distance de Mahalanobis entre ces vecteurs.
    http://fr.wikipedia.org/wiki/Distance_de_Mahalanobis

    J'ai déja fait cela sans normalisation mais maintenant j'ai besoin de la normalisation pour évaluer les performances du calcul avec et sans normalisation (c'est une partie de mes travaux de recherche)

    Merci.

  4. #4
    Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Points : 60
    Points
    60
    Par défaut
    Des propositions, pour d'autres méthodes de normalisation, sont le bienvenue.

    Je ne suis pas restrictive par la méthode de normalisation par transformation linéaire.

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Distance euclidienne dans un espace à 35 dimensions ?...

    Curse of dimensionality, non ?

    Quel est ton sujet de recherche vite fait ?

  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
    Bonjour,

    en général, on prend l'intervalle [a,b]=[0,1].
    Il y a une autre approche qui consiste à centrer puis à réduire.
    Pour résumer de manière explicite, les deux méthodes sont :
    1. x′j = (xj - minj)/(maxj − minj)
    2. x'j = (xj - moyj)/stdj
    où moyj est la moyenne du vecteur x, et stdj l'écart-type.

  7. #7
    Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Points : 60
    Points
    60
    Par défaut
    Merci c'est la réponse que je cherche .

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Je me permet d'intervenir dans cette discussion datant de plus d'un mois car je cherche à normaliser un vecteur à n composantes.
    Apparemment la solution est : x′j = (xj - minj)/(maxj − minj).

    Mais je ne comprends pas trop à quoi correspond maxj et minj.
    Si j'ai un vecteur AB(2, 8, 10, 3, 7, 6) à 6 composantes alors minj= 2 et maxj = 10 c'est ça?

    De plus j'ai trouvé une autre solution sur internet :

    max_x = max(x[1], ..., x[n])
    y[1] = x[1] / max_x / n
    ...
    y[n] = x[n] / max_x / n
    Cette solution est-elle correcte et si oui laquelle des deux est plus rapide dans un programme?

    Merci d'avance!

  9. #9
    Membre du Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Points : 60
    Points
    60
    Par défaut
    Bonsoir;
    Pour la méthode que vous avez cité, je n'ai aucune idée ...
    Mais personnellement j'ai choisi la première méthode en se basant sur ce que j'ai trouvé dans la thèse de "Stéphane Ayache" http://stephane.ayache.perso.esil.univmed.fr/these.pdf
    vous pouvez voir le paragraphe "Méthodes de normalisation" pages 42/43 pour mieux comprendre ces deux méthodes
    1. x′j = (xj - minj)/(maxj − minj)
    2. x'j = (xj - moyj)/stdj
    et les cas de leur utilisation.

    Bonne chance.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Oula, on ne parle peut être pas de la même chose, ou j'y comprends pas grand chose ce qui est très probable vu mon niveau de connaissance sur les vecteurs.

    Pour moi (en gros) dans un vecteur v(x, y, z) les composantes sont x, y et z. Jusque là je crois que nous nous comprenons.
    Mais dans sa thèse Stéphane Ayache indique que maxj est la valeur maximal de la jème composante sur tous les exemples d'apprentissage et ça, sa me dit que c'est pas ce que je veux.

    Ce que j'essaie de faire est bien moins compliqué : une méthode qui calculerait le produit scalaire de deux vecteurs de dimensions n. Pour cela j'ai besoin de "normaliser" les vecteurs (apparemment ça s'appelle aussi vecteur unitaire) soit les modifier de tel sorte qu'ils soient de longueur 1.

    Je sais faire pour 1, 2 et 3 dimensions et je pensais savoir faire pour n dimensions comme ceci : x'i = xi / longueur, avec xi composante d'index i et x'i nouvelle composante.
    Je dis bien je pensais savoir faire parce que je suis tombé sur ceci :

    Notez que pour un vecteur 4D, la normalisation de ce dernier revient à diviser chacune de ses trois premières composantes par la quatrième au lieu de la longueur du vecteur.
    Alors quand est il pour un vecteur 5D, 6D, nD?

    Merci en tout cas pour la réponse et pour la thèse qui m'a l'air sympa ^^

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    @skydoo: ce que tu cherches a faire est différent de la normalisation d'une distribution de données, toi je crois que tu veux normaliser chaque vecteur, c'est a dire faire en sorte que la norme de chaque vecteur soit egale a 1 (appelé aussi vecteur unitaire).

    Pour cela il suffit de diviser les composantes du vecteur par la norme du vecteur :
    V' = V / ||V||
    Ou ||V|| est la norme de V

    Ce qui donne en 2D avec V(x,y) :
    x' = x/(racine carre(x^2+y^2))
    y' = y/(racine carre(x^2+y^2))

    Et maintenant ||V'||=1

    Le principe est le même en 3D,4D,5D, etc
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Merci à toi magelan. En effet, je m'étais bien aperçu que ce n'était pas ce que je voulais faire en lisant la thèse donnée par soniaIRM.

    Sinon j'ai écris longueur au lieu de norme (moi et le vocabulaire...) mais c'est bien ce que je pensais.

    Par contre, je ne comprends pas pourquoi j'ai trouvé ça dans un tutoriel :

    Notez que pour un vecteur 4D, la normalisation de ce dernier revient à diviser chacune de ses trois premières composantes par la quatrième au lieu de la longueur du vecteur.
    Est-ce correct aussi? Ça me parait bizarre parce qu'en appliquant les deux méthodes on arrive pas du tout au même résultat. Au pire je testerai en calculant la norme des vecteurs unitaire trouvés.

    Encore merci ^^

    @+

    Edit :

    La phrase exacte est:

    Notez que pour un vecteur 4D (c'est-à-dire avec une composante w), la normalisation de ce dernier revient à diviser chacune de ses trois premières composantes par w au lieu de longueur.
    j'avais dû la modifier pour qu'elle ait un sens hors de son contexte

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    C'est faux : si tu divises par la quatrième composante, sauf cas particulier, la norme du vecteur ainsi obtenu ne sera pas de 1.

    Dans toutes les dimensions, retiens que l'on normalise en divisant un vecteur par sa propre norme.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    C'est fou de trouver des erreurs comme ça dans un tutoriel

    En tout cas merci ^^!

    @+

  15. #15
    Membre à l'essai
    Homme Profil pro
    biologiste
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    juste pour dire merci !!!

  16. #16
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    le cas général pour normaliser un vecteur en norme L2, c'est : diag(v'*v)^-.5*v

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

Discussions similaires

  1. [Débutant] Comment déclarer des variables et un vecteur ?
    Par valanscu77 dans le forum Assembleur
    Réponses: 4
    Dernier message: 27/03/2007, 18h25
  2. Extraction des composantes des pixels dans une matrice
    Par hanane78 dans le forum Images
    Réponses: 7
    Dernier message: 11/03/2007, 22h12
  3. [XSLT] Normalisation des valeurs pour les URL
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 10/01/2006, 12h33
  4. Normalisation des champs
    Par sebastien.cas dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/11/2005, 09h59

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