La réduction de dimension perd-elle toujours des informations?

10

Comme le dit le titre, la réduction de dimension perd-elle toujours des informations? Prenons l'exemple de l'ACP. Si les données dont je dispose sont très rares, je suppose qu'un "meilleur encodage" pourrait être trouvé (est-ce lié en quelque sorte au rang des données?), Et rien ne serait perdu.

se demandant
la source
7
Non, bien sûr que non: certaines des valeurs singulières dans PCA peuvent être de vrais zéros, par exemple. Cela est moins lié à la «rareté» des données qu'à leur «remplissage» des dimensions utilisées pour les enregistrer.
whuber
1
OK je vois. Pourriez-vous écrire votre commentaire comme une réponse courte (peut-être même avec un petit exemple, si vous avez le temps)?
demandant
1
Considérez le cas où vous avez des données bidimensionnelles, où la valeur y pour chaque point est «0». Votre premier composant principal sera l'axe X, et vous ne perdrez rien en projetant vos données vers le bas dans cette seule dimension, car c'est déjà une dimension.
David Marx

Réponses:

9

La réduction de la dimensionnalité ne perd pas toujours des informations. Dans certains cas, il est possible de représenter à nouveau les données dans des espaces de dimension inférieure sans ignorer aucune information.

Supposons que vous ayez des données où chaque valeur mesurée est associée à deux covariables ordonnées. Par exemple, supposons que vous ayez mesuré la qualité du signal (indiquée par la couleur blanc = bon, noir = mauvais) sur une grille dense de positions et par rapport à un émetteur. Dans ce cas, vos données pourraient ressembler à l'intrigue de gauche [* 1]:Qxy

démonstration de moyenne radiale

C'est, au moins superficiellement, une donnée bidimensionnelle: . Cependant, nous pourrions connaître a priori (sur la base de la physique sous-jacente) ou supposer que cela ne dépend que de la distance de l'origine: r = . (Certaines analyses exploratoires pourraient également vous conduire à cette conclusion si même le phénomène sous-jacent n'est pas bien compris). Nous pourrions alors réécrire nos données en au lieu de , ce qui réduirait effectivement la dimensionnalité à une seule dimension. De toute évidence, ce n'est sans perte que si les données sont radialement symétriques, mais c'est une hypothèse raisonnable pour de nombreux phénomènes physiques.Q(x,y)x2+y2Q(r)Q(x,y)

Cette transformation est non linéaire (il y a une racine carrée et deux carrés!), Donc elle est quelque peu différente du type de réduction de dimensionnalité effectuée par PCA, mais je pense que c'est une bonne exemple de la façon dont vous pouvez parfois supprimer une dimension sans perdre aucune information.Q(x,y)Q(r)

Pour un autre exemple, supposons que vous effectuez une décomposition en valeurs singulières sur certaines données (SVD est un proche cousin - et souvent les entrailles sous-jacentes de - l'analyse des composants principaux). SVD prend votre matrice de données et la factorise en trois matrices telles que . Les colonnes de U et V sont les vecteurs singuliers gauches et droites, respectivement, qui forment un ensemble de bases orthonormées de . Les éléments diagonaux de (c'est-à-dire sont des valeurs singulières, qui sont effectivement des poids sur le ème ensemble de base formé par les colonnes correspondantes de et (le reste deM = U S V T M S S i , i ) i U V S N x N N x N S U V M Q ( x , y )MM=USVTMSSi,i)iUVSest des zéros). En soi, cela ne vous donne aucune réduction de dimensionnalité (en fait, il y a maintenant 3 matrices au lieu de la matrice unique avec laquelle vous avez commencé). Cependant, certains éléments diagonaux de sont parfois nuls. Cela signifie que les bases correspondantes dans et ne sont pas nécessaires pour reconstruire et qu'elles peuvent donc être supprimées. Par exemple, supposons que leNxNNxNSUVMQ(x,y)la matrice ci-dessus contient 10 000 éléments (c'est-à-dire 100 x 100). Lorsque nous effectuons un SVD dessus, nous constatons qu'une seule paire de vecteurs singuliers a une valeur non nulle [* 2], nous pouvons donc représenter à nouveau la matrice d'origine comme le produit de deux vecteurs à 100 éléments (200 coefficients, mais vous pouvez en fait faire un peu mieux [* 3]).

Pour certaines applications, nous savons (ou du moins supposons) que les informations utiles sont capturées par des composants principaux avec des valeurs singulières élevées (SVD) ou des chargements (PCA). Dans ces cas, nous pourrions rejeter les vecteurs / bases / composants principaux singuliers avec des chargements plus petits même s'ils sont non nuls, sur la théorie qu'ils contiennent un bruit gênant plutôt qu'un signal utile. J'ai parfois vu des gens rejeter des composants spécifiques en fonction de leur forme (par exemple, il ressemble à une source connue de bruit additif) quel que soit le chargement. Je ne sais pas si vous considéreriez cela comme une perte d'informations ou non.

Il y a quelques résultats intéressants sur l'optimalité théorique de l'information de l'ACP. Si votre signal est gaussien et corrompu par un bruit gaussien additif, alors PCA peut maximiser les informations mutuelles entre le signal et sa version à dimensionnalité réduite (en supposant que le bruit a une structure de covariance de type identité).


Notes de bas de page:

  1. C'est un modèle ringard et totalement non physique. Pardon!
  2. En raison de l'imprécision en virgule flottante, certaines de ces valeurs ne seront pas plutôt nulles à la place.
  3. Après un examen plus approfondi, dans ce cas particulier , les deux vecteurs singuliers sont les mêmes ET symétriques par rapport à leur centre, nous pourrions donc réellement représenter la matrice entière avec seulement 50 coefficients. Notez que la première étape tombe automatiquement du processus SVD; le second nécessite une inspection / un acte de foi. (Si vous voulez penser à cela en termes de scores PCA, la matrice de score est juste de la décomposition SVD d'origine; des arguments similaires sur les zéros ne contribuant pas du tout s'appliquent).US
Matt Krause
la source
Je ne pense pas que votre graphique soit correct. 1) C'est une ellipse et non un cercle, donc changera en fonction de l'angle avec les axes. Mais cela peut être un artefact. 2) Une PCA où certaines des valeurs propres sont 0 indique une colinéarité dans les données; ce serait une intrigue qui est une ligne droite, pas une bosse sphérique. 3) Dans la vraie vie, les données ne sont de toute façon jamais parfaitement symétriques. I(r)
Hong Ooi
En particulier, notez que dans votre exemple. Il s'agit d'une combinaison non linéaire des variables, donc elle n'est pas pertinente lorsque l'on parle de PCA (qui détecterait des combinaisons linéaires dans les données). r=(x2+y2)
Hong Ooi
1
Matt, ma question se résumait vraiment à ceci: vous nous montrez une image sans description ni référence et vous vous y référez en tant que "données": je voudrais savoir dans quel sens vous envisagez cela comme des données. Votre commentaire confond ce problème, car une représentation de "carte thermique" n'est généralement pas des données, mais est quelque chose créé à partir de données. Si ce sont des données ponctuelles 2D irrégulières, par exemple, et que vous leur adaptez une densité radialement symétrique, l' image pourrait être interprétée comme unidimensionnelle, comme vous le dites, mais ce ne serait pas une réduction de dimensionnalité sans perte des données .
whuber
1
J'aurais peut-être dû dire «quadrillé» ou «raster» à la place. J'imaginais une situation où les données sont collectées sur une grille et chaque point de grille est associé à une valeur (scalaire), mais les valeurs ne sont pas nécessairement l'intensité lumineuse comme dans une image (photographique). Cela dit, je ne secoue clairement pas cette réponse - laissez-moi essayer de la modifier en quelque chose de plus cohérent!
Matt Krause
2
+1: les modifications rendent vos points beaucoup plus clairs. Merci pour l'effort supplémentaire!
whuber
4

Je pense que la question derrière votre question est "qu'est-ce qui fait l'information?". C’est une bonne question.

Technicité grammaticale:

L'ACP perd- elle toujours des informations? Nan. Perd-elle parfois des informations? Youbetcha. Vous pouvez reconstruire les données d'origine à partir des composants. S'il perdait toujours des informations, ce ne serait pas possible.

Il est utile car il ne perd souvent pas d'informations importantes lorsque vous les utilisez pour réduire la dimension de vos données. Lorsque vous perdez des données, ce sont souvent les données à fréquence plus élevée et souvent moins importantes. Les tendances générales à grande échelle sont saisies dans les composantes associées aux valeurs propres plus grandes.

EngrStudent
la source
4

Non. Si une ou plusieurs dimensions d'une matrice sont fonction des autres dimensions, la technique de réduction de dimension appropriée ne perdra aucune information.n×p

Dans le cas le plus simple, si une dimension est une combinaison linéaire des autres, la réduction de la dimensionnalité par une peut être effectuée sans perdre aucune information - car la dimension supprimée pourrait être recréée si nécessaire à partir de ce qui reste.

Considérons ce cas tridimensionnel où x3 est une combinaison linéaire exacte de x1 et x2. Ce n'est pas évident de regarder les données originales, bien qu'il soit clair que x3 est lié aux deux autres:

entrez la description de l'image ici

Mais si nous regardons les principales composantes, la troisième est zéro (dans l'erreur numérique).

entrez la description de l'image ici

Le tracé des deux premiers composants principaux est le même que le tracé de x1 contre x2, juste tourné (ok, pas aussi évident que je voulais dire, je vais essayer de mieux l'expliquer plus tard) :

entrez la description de l'image ici

Nous avons réduit la dimensionnalité d'une unité tout en conservant toutes les informations, selon toute définition raisonnable.

Cela va au-delà de la réduction de dimension linéaire, bien que cela devienne naturellement plus complexe à illustrer. Le fait est que la réponse globale est «non», pas lorsque certaines dimensions sont des fonctions d'une combinaison des autres.

Code R:

library(GGally)


n <- 10^3
dat <- data.frame(x1=runif(n, 0, 3), x2=rnorm(n))
dat$x3 <- with(dat, x1 + x2)

ggpairs(dat)

pc <- princomp(dat)
plot(pc)

par(mfrow=c(1,2))
with(dat, plot(dat$x1, dat$x2, col="red", main="Original data", bty="l"))
with(pc, plot(scores[,1], scores[,2], col="blue", main="Scores from principal components(\n(rotated)", bty="l"))
Peter Ellis
la source