Gibt es einen Wert für die Dimensionsreduzierung eines Datensatzes, bei dem alle Variablen ungefähr orthogonal sind?


11

Angenommen, ich habe einen dimensionalen Datensatz, in dem die N- Dimensionen ungefähr orthogonal sind (Korrelation Null haben).N.N.

Gibt es einen Nutzen in Bezug auf:

  1. Visualisierung
  2. Darstellung (für Klassifizierereffizienz)
  3. Oder andere Kriterien

Dimensionsreduktion an den Daten durchführen?


3
Teilweise relevante Antwort stats.stackexchange.com/a/92803/3277
ttnphns

Antworten:


8

Ich wollte einen Kommentar klarstellen, den ich unter der Antwort von @ Peter-Flom hinterlassen habe, aber es lohnt sich wahrscheinlich, eine Antwort zu schreiben. Inwieweit können Sie Dimensionen reduzieren, indem Sie PCA für nahezu orthogonale Daten ausführen? Die Antwort lautet "es hängt davon ab", ob Sie die PCA für die Korrelations- oder Kovarianzmatrix durchführen .

Wenn Sie PCA für die Korrelationsmatrix verwenden, gibt es eine sphärische Symmetrie, die alle Richtungen "gleichermaßen informativ" macht, da sich diese nur geringfügig von der Identitätsmatrix unterscheidet. Das Neuskalieren der Varianzen Ihrer Variablen auf eins vor der PCA ist ein mathematisch äquivalenter Ansatz, der zum gleichen Ergebnis führt. Während die PCA-Ausgabe einige Komponenten mit einer geringfügig geringeren Varianz als andere identifiziert, kann dies (wenn wir eine Nullkorrelation in der Grundgesamtheit annehmen) auf nichts anderes als eine zufällige Variation in der Stichprobe zurückgeführt werden. Dies wäre also kein guter Grund, diese zu verwerfen Komponenten. Tatsächlich sollte sich diese Ungleichheit zwischen Standardabweichungen von Komponenten verringern, wenn wir die Stichprobengröße erhöhen. Wir können dies in einer Simulation bestätigen.

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)
}

Ausgabe:

> 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

Wenn Sie jedoch eine PCA mit der Kovarianzmatrix anstelle der Korrelationsmatrix durchführen (äquivalent: Wenn wir die Standardabweichungen vor der Anwendung der PCA nicht auf 1 skalieren), hängt die Antwort von der Verteilung Ihrer Variablen ab. Wenn Ihre Variablen dieselbe Varianz haben, haben wir immer noch eine sphärische Symmetrie, sodass es keine "privilegierte Richtung" gibt und keine Dimensionsreduktion erreicht werden kann.

> 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

Bei einer Mischung aus Variablen mit hoher und niedriger Varianz ähnelt die Symmetrie jedoch eher einem Ellipsoid mit einigen breiten Achsen und anderen dünnen. In dieser Situation werden Komponenten mit hoher Varianz auf die Variablen mit hoher Varianz (wo das Ellipsoid breit ist) und Komponenten mit niedriger Varianz auf die Variablen mit niedriger Varianz (in welche Richtungen das Ellipsoid schmal ist) geladen.

> 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

Wenn die Variablen sehr unterschiedliche Varianzen aufweisen (wieder geometrisch ein Ellipsoid, wobei sich jedoch alle Achsen unterscheiden), kann der erste PC durch Orthogonalität sehr stark auf die Variable mit der höchsten Varianz und so weiter geladen werden.

> 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

In den letzten beiden Fällen gab es Komponenten mit geringer Varianz, die Sie möglicherweise wegwerfen könnten, um eine Dimensionsreduzierung zu erzielen. Dies entspricht jedoch genau dem Wegwerfen der Variablen mit der niedrigsten Varianz . Im Wesentlichen können Sie mit der Orthogonalität Komponenten mit geringer Varianz mit Variablen mit geringer Varianz identifizieren. Wenn Sie also die Dimensionalität auf diese Weise reduzieren möchten, ist es nicht klar, ob Sie von der Verwendung von PCA profitieren würden.

Hinweis: Die Zeitspanne, die für die Erörterung des Falls aufgewendet wird, in dem die Variablen nicht auf Einheitsvarianz skaliert werden - dh die Verwendung der Kovarianz anstelle der Korrelationsmatrix -, sollte nicht als Hinweis darauf verstanden werden, dass dieser Ansatz irgendwie wichtiger ist und schon gar nicht ist besser". Die Symmetrie der Situation ist einfach subtiler und erfordert daher eine längere Diskussion.


Meine Antwort beantwortet vielleicht am besten das Problem, das sich aus dem Originalplakat ergibt (bei dem es darum ging, was PCA erreichen kann oder nicht), was vermutlich das grüne Häkchen erklärt! Ich fordere die Leser jedoch dringend auf, sich die Antwort von @ RyanBressler anzusehen, die alternative Lösungen bietet .
Silverfish

11

Sie können eine allgemeinere nichtlineare Lernmethode zur Reduzierung der Dimensionalität ausprobieren , z. B. lokal lineare Einbettung, Laplace-Eigenkarten oder t-SNE.

Es ist durchaus möglich, dass Ihre Daten einen unterdimensionalen Unterraum (Verteiler) enthalten, der eine Korrelation zwischen den N-Basis-Dimensionen von 0 lässt. Zum Beispiel ein Kreis von Punkten um den Ursprung oder die Wellenform, wie hier gezeigt . PCA wird dies nicht aufgreifen, andere Methoden jedoch.

Das Betrachten solcher Methoden ist besonders interessant und üblich für die Visualisierung und explorative Datenanalyse. Für die Verwendung in einem Klassifikator oder einem anderen Modell müssen Sie sich auf die Methoden beschränken, die für das Training geeignet sind und auf Tests angewendet werden können, bei denen viele dieser Methoden ausgeschlossen sind. Wenn dies Ihr Hauptinteresse ist, sollten Sie sich auch mit Methoden für unbeaufsichtigtes Pretraining und (überwachtes) Feature-Engineering befassen.


6

Wenn alle N Variablen ungefähr orthogonal sind, führt die Dimensionsreduzierung zu einer relativ geringen Reduzierung. ZB inR

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)

Im Wesentlichen impliziert "orthogonal" "bereits in seiner kleinsten Größe".


2
Sie haben einen kleinen Tippfehler in "orthongonal"
Silverfish

6
@Silverfish, Orthon ist "ein mittelgroßer Humanoid mit langen blonden Haaren und gebräunter Haut in rotbraunen Schuhen". Obwohl Sie vielleicht Recht haben, meinte Peter etwas anderes.
ttnphns

4
Ist es erwähnenswert, dass diese Antwort davon abhängt, wie die Variablen skaliert werden? Wenn es hohe und niedrige Varianz Variablen sind und wir tun PCA auf der Kovarianz nicht Korrelationsmatrix, dann gibt wird Low-Varianz - Komponenten sein , die gelöscht werden können (Orthogonalität bedeutet nur , dass ihre Belastungen identifizieren sie stark mit einer Low-Varianz Variable jeweils). Nehmen Sie die folgenden geringfügigen Änderungen vor: x1<-rnorm(100, sd=0.1)und pcsol <- princomp(df1, cor=FALSE)und es gibt einen Unterschied, insbesondere wenn wir uns das ansehen summary(pcsol). (Ich behaupte nicht, dass cov ein besserer Ansatz als cor ist, nur dass es möglich ist.)
Silverfish

Ich habe den Tippfehler behoben, danke. Auch ein guter Punkt zur Skalierung.
Peter Flom - Reinstate Monica

2
Gilt dies nicht nur für Dimensionsreduktionen, die auf Kovarianz beruhen? Warum würde beispielsweise die mehrdimensionale Skalierung hier keine Reduzierung bewirken?
Shadowtalker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.