Doit-on enlever les variables fortement corrélées avant de faire la PCA?

111

Je lis un article dans lequel l'auteur élimine plusieurs variables en raison d'une corrélation élevée avec d'autres variables avant de procéder à la PCA. Le nombre total de variables est d'environ 20.

Est-ce que cela donne des avantages? Cela me semble être une surcharge, car la PCA devrait gérer cela automatiquement.

type 2
la source
26
Juste un indice. Pensez de quelle manière les résultats de la PCA changeront si vous ajoutez de plus en plus de copies (ou de copies proches) d'une des variables.
mardi
@ type2 pouvez-vous nommer le papier que vous lisiez?
Amatya

Réponses:

123

Ceci explique l'explication fournie dans un commentaire de @ttnphns.

Les variables presque corrélées adjacentes augmentent la contribution de leur facteur sous-jacent commun à l'APC. Nous pouvons voir cela géométriquement. Considérez ces données dans le plan XY, représentées par un nuage de points:

Nuage de points

Il y a peu de corrélation, une covariance à peu près égale, et les données sont centrées: la CPA (quelle que soit la manière dont elle a été menée) rendrait compte de deux composantes à peu près égales.

Ajoutons maintenant une troisième variable égale à plus une petite quantité d’erreur aléatoire. La matrice de corrélation de montre cela avec les petits coefficients non diagonaux sauf entre les deuxième et troisième lignes et les colonnes ( et ):ZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

Géométriquement, nous avons déplacé presque verticalement tous les points d'origine, soulevant ainsi l'image précédente hors du plan de la page. Ce pseudo nuage de points 3D tente d'illustrer l'élévation avec une vue en perspective latérale (basée sur un jeu de données différent, bien que généré de la même manière que précédemment):

Parcelle 3D

Les points se situent à l'origine dans le plan bleu et sont levés vers les points rouges. L' axe origine est vers la droite. L'inclinaison qui en résulte étend également les points le long des directions YZ, doublant ainsi leur contribution à la variance. Par conséquent, une ACP de ces nouvelles données identifierait toujours deux composantes principales principales, mais l'une d'elles présentera désormais une variabilité deux fois plus grande que l'autre.Y

Cette attente géométrique est confirmée par quelques simulations dans R. Pour cela, j'ai répété la procédure de "levage" en créant des copies quasi-colinéaires de la deuxième variable une deuxième, troisième, quatrième et cinquième fois, en les nommant à . Voici une matrice de diagrammes de dispersion montrant comment ces quatre dernières variables sont bien corrélées:X2X5

Matrice à nuage de points

La PCA utilise des corrélations (même si peu importe pour ces données), en utilisant les deux premières variables, puis trois, ... et enfin cinq. Je présente les résultats à l'aide de graphiques représentant les contributions des principales composantes à la variance totale.

Résultats de la PCA

Initialement, avec deux variables presque non corrélées, les contributions sont presque égales (coin supérieur gauche). Après avoir ajouté une variable corrélée à la seconde - exactement comme dans l'illustration géométrique -, il ne reste plus que deux composants principaux, l'un deux fois plus grand que l'autre. (Une troisième composante reflète l’absence de corrélation parfaite; elle mesure «l’épaisseur» du nuage en forme de pancake dans le diagramme de dispersion 3D.) Après l’ajout d’une autre variable corrélée ( ), la première composante représente maintenant environ les trois quarts du total. ; après l'ajout d'un cinquième, le premier composant représente près des quatre cinquièmes du total. Dans les quatre cas, les composants après le second seraient probablement considérés comme sans importance par la plupart des procédures de diagnostic de la PCA; dans le dernier cas c'estX4une composante principale à considérer.

Nous pouvons maintenant voir qu’il serait peut-être avantageux d’écarter des variables censées mesurer le même aspect sous-jacent (mais "latent") d’un ensemble de variables , car l’inclusion des variables presque redondantes peut amener l’APC à surestimer leur contribution. Il n'y a rien mathématiquement juste (ou faux) dans une telle procédure; c'est un jugement qui repose sur les objectifs analytiques et la connaissance des données. Mais il devrait être très clair que le fait de mettre de côté des variables dont on sait qu’elles sont fortement corrélées avec d’autres peut avoir un effet substantiel sur les résultats de l’ACP.


Voici le Rcode.

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)
whuber
la source
5
+1, belles figures. Qu'avez-vous utilisé pour le top 2? La 1ère semble avoir été dessinée à la main.
gung
14
@gung J'ai utilisé une variante du code à mathematica.stackexchange.com/questions/11350/xkcd-style-graphs pour la première figure. On sait depuis longtemps que l’ajout d’un léger tremblement au texte ou à une image peut le rendre plus chaud et plus accessible. ( lui-même a été construit à l’origine sur Metafont , que Donald Knuth a conçu après une étude approfondie de la typographie; il incluait une telle variation intégrée.) est distrayant, donc je ne l'ai pas utilisé là-bas. TEX
whuber
2
C'est très éclairant, whuber. J'ai appris quelque chose de nouveau.
Spacey
7
@whuber est comme le statisticien le plus tendance - utiliser les graphes XKCD comme un pro.
Cam.Davidson.Pilon
2
@ logan Dans un autre mot, non. Permettez-moi d’attirer votre attention sur une phrase de ce post: "Il n’ya rien mathématiquement juste sur une telle procédure; c’est un jugement reposant sur des objectifs analytiques et sur la connaissance des données."
whuber
43

Je vais illustrer plus en détail le même processus et la même idée que @whuber, mais avec les tracés de chargement, car les chargements sont l’essentiel des résultats de l’ACP.

Voici trois 3 analyses. Dans la première, nous avons deux variables, et (dans cet exemple, elles ne sont pas corrélées). Dans le second, nous avons ajouté qui est presque une copie de et est donc fortement corrélé avec lui. Dans le troisième, nous avons également ajouté de la même façon deux "copies" : et .X1X2X3X2X4X5

Les tracés de chargements des 2 premiers composants principaux vont alors. Les pics rouges sur les graphiques indiquent les corrélations entre les variables, de sorte que le groupe de plusieurs pics est l'endroit où se trouve un groupe de variables étroitement corrélées. Les composants sont les lignes grises; la "force" relative d'un composant (sa grandeur de valeur propre) est donnée par le poids de la ligne.

entrez la description de l'image ici

On peut observer deux effets de l’ajout des "copies":

  1. La composante 1 devient de plus en plus forte et la composante 2 de plus en plus faible.
  2. L'orientation des composants change: au début, le composant 1 se au milieu entre et ; comme nous avons ajouté àX1X2X3X2 composant 1 s'est immédiatement réorienté pour suivre le groupe de variables émergent; et vous pouvez être sûr qu'après avoir ajouté deux variables supplémentaires à la série, l'attachement de la Composante 1 à cette série de variables étroitement corrélées est devenu plus indiscutable.

Je ne reprendrai pas la morale car @whuber l'a déjà fait.


r=0r=0.62r=0.77

X1X2r=0 X1X2les lignes elles-mêmes pourraient être choisies comme composants.] Les coordonnées des points de données (200 sujets) sur un composant sont des scores de composant, et leur somme de carrés divisée par 200-1 correspond à la valeur propre du composant .

rX1X2(mais ajouter une 3ème variable peut néanmoins la dévier). L'angle (cosinus) entre un vecteur variable et une ligne de composant correspond à la corrélation qui existe entre eux et, comme les vecteurs ont une longueur unitaire et que les composants sont orthogonaux, il ne s'agit que des coordonnées, du chargement . La somme des charges quadratiques sur le composant est sa valeur propre (le composant s'oriente simplement dans cet espace sujet afin de le maximiser)

entrez la description de l'image ici


Addition2. En addition ci - dessus , je parlais de « l' espace variable » et « espace sujet » comme si elles sont incompatibles ensemble comme l' eau et l' huile. Je devais le reconsidérer et peut dire que - du moins lorsque nous parlons de PCA - les deux espaces sont finalement isomorphes et que, de ce fait, nous pouvons afficher correctement tous les détails de la PCA - points de données, axes de variables, axes de composants, variables comme points, - sur un seul biplot non déformé.

Vous trouverez ci-dessous le diagramme de dispersion (espace variable) et le graphique de chargement (espace composant, qui est l'espace sujet par son origine génétique). Tout ce qui pourrait être montré sur l'un, pourrait également être montré sur l'autre. Les images sont identiques , elles ne pivotent que de 45 degrés (et sont réfléchies dans ce cas particulier) les unes par rapport aux autres. C’était une ACP de variables v1 et v2 (normalisée, c’est donc r qui a été analysée). Les lignes noires sur les images sont les variables en tant qu'axes; les lignes vertes / jaunes sont les composants en tant qu'axes; les points bleus sont le nuage de données (sujets); les points rouges sont les variables affichées sous forme de points (vecteurs).

entrez la description de l'image ici

tnphns
la source
1
+1 illustration intéressante. En passant, votre deuxième observation est un artefact des données: l'orientation a changé car dans le premier cas, la corrélation était parfaite, donnant un espace propre à deux dimensions. (Ceci est extrêmement rare dans les données réelles; cela signifie généralement qu'une erreur a été commise dans la base de données et qu'une variable est une ré-expression linéaire d'une autre.) Le logiciel était libre de choisir n'importe quelle base orthogonale pour cet espace, de manière arbitraire. Une infime corrélation aurait supprimé cette dégénérescence. Je pense donc que vous interprétez de manière excessive ce phénomène de réorientation.
whuber
@ Whuber, peut-être que je ne vous comprends pas. Quelle corrélation "parfaite"? r pc X1 et X2 était 0,003; et cela aurait pu être n'importe lequel, par exemple .503. Ce serait le cos de l'angle entre les deux vecteurs rouges sur la parcelle. Quel que soit le r , le 1er PC est toujours la bissectrice alors que seulement 2 variables sont en analyse. Je suppose que votre note The software was free to choose any orthogonal basis for that space, arbitrarilys’applique aux nuages ​​ronds dans l’ espace variable (c’est-à-dire le diagramme de dispersion des données, comme la 1ère image de votre réponse), mais le tracé de chargement correspond à l’ espace sujet où les variables, et non les observations, sont des points (vecteurs).
vendredi
1
R5
J'ai utilisé des corrélations (remarquez la matrice et le fait que les vecteurs rouges ont essentiellement la même longueur). Oui, l’espace sujet est un diagramme de dispersion tupsy-torvey à n axes (sujets) et p points (variables). Bien sûr, toutes les dimensions np sont redondantes et tout ensemble de variables p peut être tracé dans un espace sujet à p dimensions, mais cela ne le transforme pas en un espace variable! Je vais juste ajouter une image à ma réponse.
Le
5
+1, merci pour la contribution supplémentaire, @ttnphns. Ceci est en train de tourner de ce que je pensais à l’origine une question assez simple en un fil de discussion fabuleusement informatif.
gung
4

Sans les détails de votre document, je supposerais que cette suppression de variables hautement corrélées a été réalisée simplement pour économiser de la puissance de calcul ou de la charge de travail. Je ne vois pas pourquoi l'ACP se "casserait" pour les variables fortement corrélées. La projection des données sur les bases trouvées par PCA a pour effet de les blanchir (ou de les décorréler). C’est l’essentiel de l’ACP.

Spacey
la source
4
Avez-vous lu l'allusion de @ttnphns? La PCA ne prête pas attention aux vecteurs propres (dont vous discutez), mais également aux valeurs propres (que vous ignorez). Cela est essentiel, car les valeurs propres sont utilisées pour déterminer les composants à conserver et ceux à abandonner.
whuber
2
@whuber Oui ... oui, je pense l'avoir maintenant. Donc, essentiellement, plus de variables corrélées mettront l’accent sur des vecteurs propres particuliers (directions), et s’il y a beaucoup de variables corrélées, il y aura beaucoup plus de directions "fausses" surestimées, qui noyeront un vecteur propre / direction "original" qui ont autrement été facilement vu. Est-ce que je vous comprends bien?
Spacey
2
C'est assez proche, Mohammad. En réalité, un ensemble de variables corrélées peut se "charger" sur plusieurs composantes principales (vecteurs propres). Par conséquent, l'inclusion de nombreuses variables d'un tel ensemble pèsera de manière différentielle sur plusieurs vecteurs propres - et modifiera ainsi les directions de tous les vecteurs propres.
whuber
1

A ma connaissance, les variables corrélées sont acceptables, car la PCA génère des vecteurs orthogonaux.

Beaucoup
la source
5
Vous avez raison, mais pourriez-vous expliquer pourquoi l'orthogonalité a une incidence sur le fait de rejeter les variables à l'avance ou non?
whuber
-1

Cela dépend de votre algorithme. Les variables fortement corrélées peuvent signifier une matrice mal conditionnée. Si vous utilisez un algorithme qui est sensible à cela, cela peut avoir un sens. Mais j'ose dire que la plupart des algorithmes modernes utilisés pour générer des valeurs propres et des vecteurs propres sont robustes à cet égard. Essayez de supprimer les variables fortement corrélées. Les valeurs propres et les vecteurs propres changent-ils beaucoup? S'ils le font, alors le mauvais conditionnement pourrait être la solution. Les variables hautement corrélées n’ajoutant pas d’informations, la décomposition PCA ne doit pas changer.

Juancentro
la source
4
Malheureusement, l'APC ne change: il est presque garanti.
whuber
1
@whuber Wow, énormément de réponses et très instructif. Désolé pour mon commentaire, c'était totalement faux. Ma faute. Réponse très informative BTW
Juancentro
4
Je tire le meilleur parti de réponses totalement fausses, Juancentro - surtout la mienne, qui heureusement sort rarement en public :-). J'avais des pensées semblables aux vôtres jusqu'à ce que @ttnphns laisse un commentaire.
whuber
-1

Cela dépend de la méthode de sélection des composants principaux que vous utilisez, n'est-ce pas?

J'ai tendance à utiliser n'importe quel composant de principe avec une valeur propre> 1. Cela ne m'affecterait donc pas.

Et à partir des exemples ci-dessus, même la méthode du scree plot choisirait généralement la bonne. SI VOUS GARDEZ TOUT AVANT LE COUDE. Cependant, si vous sélectionniez simplement le composant principal avec la valeur propre «dominante», vous seriez égaré. Mais ce n'est pas la bonne façon d'utiliser une parcelle de terrain!

Chris Howden
la source
5
Bienvenue sur le site, Chris. Malheureusement, aucune de ces procédures ad hoc n'est particulièrement défendable. Notez que dans le premier cas, vous ne pouviez pas changer la forme de vos données et que vous sélectionniez toutes les données pour n'en sélectionner aucune (simplement en multipliant le tout par une constante).
cardinal