Y a-t-il une valeur dans la réduction de dimensionnalité d'un ensemble de données où toutes les variables sont approximativement orthogonales?


11

Supposons que j'ai un ensemble de données à dimensions où les N dimensions sont à peu près orthogonales (ont une corrélation nulle).NN

Existe-t-il une utilité en termes de:

  1. Visualisation
  2. Représentation (pour l'efficacité du classificateur)
  3. Ou d'autres critères

effectuer une réduction de dimensionnalité sur les données?


3
Réponse en partie pertinente stats.stackexchange.com/a/92803/3277
ttnphns

Réponses:


8

Je voulais clarifier un commentaire que j'ai laissé sous la réponse de @ Peter-Flom, mais cela vaut probablement la peine d'écrire une réponse. Dans quelle mesure pouvez-vous réduire les dimensions en exécutant PCA sur des données presque orthogonales? La réponse est "cela dépend" si vous effectuez l'ACP sur la matrice de corrélation ou de covariance .

Si vous utilisez PCA sur la matrice de corrélation, alors comme cela ne diffère que légèrement de la matrice d'identité, il y a une symétrie sphérique qui rend toutes les directions "également informatives". Redimensionner les variances de vos variables à une avant l'ACP est une approche mathématiquement équivalente qui produira le même résultat. Bien que la sortie de l'ACP identifie certaines composantes avec une variance légèrement plus faible que d'autres, cela peut être attribué (si nous supposons une corrélation nulle dans la population) à rien de plus qu'une variation aléatoire de l'échantillon, donc ce ne serait pas une bonne raison de les abandonner. Composants. En fait, une telle disparité entre les écarts-types des composants devrait diminuer en ampleur à mesure que nous augmentons la taille de l'échantillon. Nous pouvons le confirmer dans une simulation.

set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
    x1 <- rnorm(n, mean=0, sd=sd1)
    x2 <- rnorm(n, mean=0, sd=sd2)
    x3 <- rnorm(n, mean=0, sd=sd3)
    x4 <- rnorm(n, mean=0, sd=sd4)
    prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}

Production:

> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion  0.2882 0.5505 0.7887 1.0000
> 
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion  0.2504 0.5006 0.7505 1.0000

Cependant, si vous effectuez l'ACP en utilisant la matrice de covariance au lieu de la matrice de corrélation (de manière équivalente: si nous ne mettons pas les écarts-types à 1 avant d'appliquer l'ACP), la réponse dépend de la répartition de vos variables. Si vos variables ont la même variance, nous avons toujours une symétrie sphérique, donc il n'y a pas de "direction privilégiée" et la réduction dimensionnelle ne peut pas être obtenue.

> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion  0.2507 0.5009 0.7508 1.0000

Cependant, avec un mélange de variables de variance élevée et faible, la symétrie ressemble plus à un ellipsoïde avec des axes larges et d'autres fins. Dans cette situation, des composants à variance élevée se chargeront sur les variables à variance élevée (où l'ellipsoïde est large) et des composants à faible variance se chargeront sur les variables à faible variance (dans quelles directions l'ellipsoïde est étroit).

> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion  0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
      PC1   PC2    PC3    PC4
x1  0.460 0.888  0.000  0.000
x2 -0.888 0.460  0.000  0.000
x3  0.000 0.000 -0.747 -0.664
x4  0.000 0.000  0.664 -0.747

Si les variables ont des variances très différentes (géométriquement un ellipsoïde à nouveau mais avec tous les axes différents), alors l'orthogonalité permet au premier PC de se charger très fortement sur la variable de variance la plus élevée et ainsi de suite.

> pc1234 <-  princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion  0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
     PC1    PC2    PC3   PC4
x1 0.000  0.000 -0.001 1.000
x2 0.001 -0.001  1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000  0.003 -0.001 0.000

Dans les deux derniers cas, il y avait des composants à faible variance que vous pourriez envisager de jeter pour obtenir une réduction dimensionnelle, mais cela équivaut exactement à jeter les variables de variance les plus faibles en premier lieu . Essentiellement, l'orthogonalité vous permet d'identifier les composants à faible variance avec des variables à faible variance.Par conséquent, si vous avez l'intention de réduire la dimensionnalité de cette manière, il n'est pas clair que vous bénéficieriez de l'utilisation de PCA pour ce faire.

Nota bene: le temps passé à discuter du cas où les variables ne sont pas redimensionnées en variance unitaire - c'est-à-dire en utilisant la covariance plutôt que la matrice de corrélation - ne doit pas être considéré comme une indication que cette approche est en quelque sorte plus importante, et certainement pas qu'elle est mieux". La symétrie de la situation est tout simplement plus subtile et nécessite donc une discussion plus longue.


Ma réponse répond peut-être le mieux au problème posé par l'affiche originale (qui portait sur ce que l'APC peut ou ne peut pas réaliser), ce qui, je présume, explique la coche verte! Mais j'exhorte les lecteurs à regarder la réponse de @ RyanBressler, qui fournit des solutions alternatives .
Silverfish

11

Vous pouvez essayer une méthode d'apprentissage de réduction de dimensionnalité non linéaire plus générale comme l'intégration localement linéaire, les cartes propres laplaciennes ou t-SNE.

Il est parfaitement possible qu'il y ait un sous-espace de dimension inférieure (collecteur) dans vos données d'une manière qui ne laisse aucune corrélation entre les dimensions à base N. Par exemple, un cercle de points sur l'origine ou la forme d'onde comme on le voit ici . L'ACP ne reprendra pas cela, mais d'autres méthodes le feront.

L'étude de ces méthodes est particulièrement intéressante et courante pour la visualisation et l'analyse exploratoire des données. Pour une utilisation dans un classificateur ou un autre modèle, vous devrez vous limiter aux méthodes qui peuvent être adaptées à la formation et appliquées au test, ce qui exclut un grand nombre de ces méthodes. Si tel est votre principal intérêt, vous devez également étudier les méthodes de pré-formation non supervisée et d'ingénierie des fonctionnalités (supervisée).


6

Si toutes les N variables sont à peu près orthogonales, la réduction de dimension fera relativement peu de réduction. Par exemple dansR

set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)

df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

pcsol <- princomp(df1)
loadings(pcsol)

En substance, "orthogonal" implique "déjà à sa plus petite taille".


2
vous avez une petite faute de frappe en "orthongonal"
Silverfish

6
@Silverfish, orthon est "un humanoïde de taille moyenne avec de longs cheveux blonds et une peau bronzée portant des chaussures brun rougeâtre". Bien que vous ayez peut-être raison de dire que Peter voulait dire différent.
ttnphns

4
Vaut-il la peine de souligner que cette réponse dépend de la façon dont les variables sont mises à l'échelle? S'il y a des variables de variance élevée et faible et que nous effectuons l'ACP sur la matrice de covariance et non de corrélation, alors il y aura des composants de faible variance qui peuvent être supprimés (l'orthogonalité signifie simplement que leurs chargements les identifient fortement avec une variable de faible variance chacun). Apportez les légères modifications suivantes: x1<-rnorm(100, sd=0.1)et pcsol <- princomp(df1, cor=FALSE)il y a une différence, surtout si nous regardons summary(pcsol). (Je ne suggère pas que cov soit une meilleure approche que cor, juste que c'est possible.)
Silverfish

J'ai corrigé la faute de frappe, merci. Aussi, bon point sur la mise à l'échelle.
Peter Flom - Réintègre Monica

2
Cela ne s'applique-t-il pas uniquement à la réduction de dimension qui repose sur la covariance? Pourquoi, par exemple, la mise à l'échelle multidimensionnelle ne réduirait-elle pas ici?
shadowtalker
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.