Supposons que nous ayons variables mesurables, , nous effectuons un nombre de mesures, puis souhaitons effectuer une décomposition en valeurs singulières sur les résultats pour trouver les axes de variance la plus élevée pour les points dans l'espace dimensionnel. ( Remarque: supposons que les moyennes de ont déjà été soustraites, donc pour tout .)
Supposons maintenant qu'une (ou plusieurs) des variables ait une amplitude caractéristique significativement différente des autres. Par exemple, pourrait avoir des valeurs comprises entre et tandis que le reste pourrait être d'environ . Cela faussera beaucoup l'axe de la plus grande variance vers l'axe de .
La différence d'amplitude pourrait simplement être due à un choix malheureux d'unité de mesure (si nous parlons de données physiques, par exemple des kilomètres par rapport aux mètres), mais en fait, les différentes variables peuvent avoir des dimensions totalement différentes (par exemple, le poids par rapport au volume), donc il pourrait ne pas y avoir de moyen évident de choisir des unités "comparables" pour eux.
Question: Je voudrais savoir s'il existe des moyens standard / communs de normaliser les données pour éviter ce problème. Je suis plus intéressé par les techniques standard qui produisent des amplitudes comparables pour à cet effet plutôt que de trouver quelque chose de nouveau.
EDIT: Une possibilité est de normaliser chaque variable par son écart-type ou quelque chose de similaire. Cependant, le problème suivant apparaît alors: interprétons les données comme un nuage de points dans l'espace dimensionnel. Ce nuage de points peut être tourné, et ce type de normalisation donnera des résultats finaux différents (après la SVD) en fonction de la rotation. (Par exemple, dans le cas le plus extrême, imaginez une rotation précise des données pour aligner les axes principaux avec les axes principaux.)
Je m'attends à ce qu'il n'y ait pas de méthode invariante de rotation pour ce faire, mais j'apprécierais que quelqu'un me pointe vers une discussion de cette question dans la littérature, en particulier concernant les mises en garde dans l'interprétation des résultats.
Réponses:
Les trois normalisations courantes sont le centrage, la mise à l'échelle et la standardisation.
Soit une variable aléatoire.X
Le centrage est
La résultante aura ¯ x ∗ = 0 .x∗ x∗¯=0
La mise à l'échelle est
La résultante aura ∑ i x ∗ i 2 = 1 .x∗ ∑ix∗i2=1
La normalisation, c'est le centrage puis la mise à l'échelle. La résultante aura ¯ x ∗ = 0 et ∑ i x ∗ i 2 = 1 .x∗ x∗¯=0 ∑ix∗i2=1
la source
Vous avez absolument raison d'avoir des variables individuelles avec des variances très différentes peut être problématique pour l'ACP, surtout si cette différence est due à différentes unités ou différentes dimensions physiques. Pour cette raison, à moins que les variables ne soient toutes comparables (même quantité physique, mêmes unités), il est recommandé d'effectuer l'ACP sur la matrice de corrélation au lieu de la matrice de covariance. Vois ici:
Faire PCA sur matrice de corrélation équivaut à standardiser toutes les variables avant l'analyse (puis faire PCA sur matrice de covariance). Normaliser signifie centrer puis diviser chaque variable par son écart-type, de sorte que toutes deviennent de variance unitaire. Cela peut être vu comme un "changement d'unités" commode, pour rendre toutes les unités comparables.
On peut se demander s'il pourrait parfois y avoir un meilleur moyen de "normaliser" les variables; Par exemple, on peut choisir de diviser par une estimation robuste de la variance, plutôt que par la variance brute. Cela a été demandé dans le fil suivant, et voir la discussion qui a suivi (même si aucune réponse définitive n'y a été donnée):
Enfin, vous craigniez que la normalisation par écart-type (ou quelque chose de similaire) ne soit pas invariante par rotation. Eh bien, oui, ce n'est pas le cas. Mais, comme l'a remarqué @whuber dans le commentaire ci-dessus, il n'y a pas de façon invariante de rotation de le faire: changer les unités de variables individuelles n'est pas une opération invariante de rotation ! Il n'y a rien à craindre ici.
la source
Avant d'appliquer l'APC, une technique courante consiste à soustraire la moyenne des échantillons. Si vous ne le faites pas, le premier vecteur propre sera la moyenne. Je ne sais pas si vous l'avez fait, mais permettez-moi d'en parler. Si nous parlons en code MATLAB: c'est
Comme le montre la figure, je pense que vous devriez soustraire la moyenne des données si vous souhaitez mieux analyser la (co) variance. Les valeurs ne seront alors pas comprises entre 10-100 et 0,1-1, mais leur moyenne sera toutes nulles. Les variances seront trouvées comme les valeurs propres (ou carré des valeurs singulières). Les vecteurs propres trouvés ne sont pas affectés par l'échelle d'une dimension pour le cas où l'on soustrait la moyenne autant que le cas quand on ne le fait pas. Par exemple, j'ai testé et observé les éléments suivants qui indiquent que la soustraction de la moyenne peut être importante pour votre cas. Le problème peut donc résulter non pas de la variance mais de la différence de conversion.
la source
Pour normaliser les données de l'ACP, la formule suivante a également été utilisée
la source