Entspricht der Mahalanobis-Abstand dem euklidischen Abstand in den PCA-gedrehten Daten?


8

Ich bin zu der Überzeugung gelangt (siehe hier und hier ), dass der Mahalanobis-Abstand dem euklidischen Abstand in den PCA-gedrehten Daten entspricht. Mit anderen Worten, multivariate normale DatenX, die Mahalanobis Entfernung aller x's von einem bestimmten Punkt (sagen wir 0) sollte dem euklidischen Abstand der Einträge von entsprechen Xrot von 0, wo Xrot ist das Produkt der Daten und der PCA-Rotationsmatrix.

1. Ist das wahr?

Mein Code unten deutet darauf hin, dass dies nicht der Fall ist. Insbesondere sieht es so aus, als ob die Varianz des Mahalanobis-Abstandes um den PCA-euklidischen Abstand in der Größe des PCA-euklidischen Abstandes zunimmt. Ist dies ein Codierungsfehler oder ein Merkmal des Universums? Hat es mit Ungenauigkeit bei der Schätzung von etwas zu tun? Etwas, das quadratisch wird?

N=1000
cr = runif(1,min=-1,max=1)
A = matrix(c(1,cr,cr,1),2)
e<-mvrnorm(n = N,rep(0,2),A)
mx = apply(e, 2, mean)
sx = apply(e, 2, sd)
e = t(apply(e,1,function(X){(X-mx)/sx}))
plot(e[,1],e[,2])
dum<-rep(0,2)
md = mahalanobis(e,dum,cov(e))

pc = prcomp(e,center=F,scale=F)
d<-as.matrix(dist(rbind(dum,pc$x),method='euclidean',diag=F))
d<-d[1,2:ncol(d)]
plot(d,md^.5)
abline(0,1)

2. Wenn die Antwort auf das oben Gesagte zutrifft, kann man die PCA-gedrehte euklidische Distanz als Ersatz für die Mahalanobis-Distanz verwenden, wenn p>n?

Wenn nicht, gibt es eine ähnliche Metrik, die den durch Korrelation skalierten multivariaten Abstand erfasst und für die Verteilungsergebnisse vorliegen, um die Wahrscheinlichkeit einer Beobachtung berechnen zu können?

BEARBEITEN Ich habe einige Simulationen durchgeführt, um die Äquivalenz von MD und SED für skalierte / gedrehte Daten über einen Gradienten von n und p zu untersuchen. Wie ich bereits erwähnt habe, interessiert mich die Wahrscheinlichkeit einer Beobachtung. Ich hoffe, einen guten Weg zu finden, um die Wahrscheinlichkeit zu ermitteln, dass eine Beobachtung Teil einer multivariaten Normalverteilung ist, für die ich aber einen haben<pDaten zur Schätzung der Verteilung. Siehe den Code unten. Es sieht so aus, als ob die PCA-skalierte / gedrehte SED ein leicht voreingenommener Schätzer der MD ist, mit einer angemessenen Varianz, die nicht mehr zuzunehmen scheint, wennp=N.

f = function(N=1000,n,p){
  a = runif(p^2,-1,1)
  a = matrix(a,p)
  S = t(a)%*%a
  x = mvrnorm(N,rep(0,p),S)
  mx = apply(x, 2, mean)
  sx = apply(x, 2, sd)
  x = t(apply(x,1,function(X){(X-mx)/sx}))
  Ss = solve(cov(x))
  x = x[sample(1:N,n,replace=F),]
  md = mahalanobis(x,rep(0,p),Ss,inverted=T)
  prMD<-pchisq(md,df = p) 
  pc = prcomp(x,center=F,scale=F)
  d<-mahalanobis(scale(pc$x),rep(0,ncol(pc$x)),diag(rep(1,ncol(pc$x))))
  prPCA<-pchisq(d,df = min(p,n))#N is the number of PCs where N<P 
  return(data.frame(prbias = as.numeric(mean(prMD - prPCA)), prvariance = as.numeric(mean((prMD - prPCA)^2))))
}

grid = data.frame(n=100,p=2:200)
grid$prvariance <-grid$prbias <-NA

for (i in 1:nrow(grid)){
    o = f(n=grid[i,]$n,p=grid[i,]$p)
    grid[i,3:4]<-o
}

par(mfrow=c(1,2))
with(grid, plot(p,prbias))
abline(v=100)
m = lm(prbias~p,data=grid)
abline(m,col='red',lty=2)
with(grid, plot(p,prvariance))
abline(v=100)

Geben Sie hier die Bildbeschreibung ein

Zwei Fragen: 1. Kritik an dem, was ich in diesen Simulationen finde? 2. Kann jemand das, was ich finde, mit einem analytischen Ausdruck für die Verzerrung und die Varianz als Funktionen von n und p formalisieren? Ich würde eine Antwort akzeptieren, die dies tut.


4
Aus der Formel der Mahalanobis-Distanz folgt, dass sie gleich der euklidischen Distanz ist, wenn die Kovarianzmatrix eine Identitätsmatrix ist (oder sich ohne Schlüsselverlust zu erstrecken - proportional zur Identität). Sofern die Daten nicht genau sphärisch sind, sind die Kovarianzen zwischen ihren PCs diagonal und keine Identitätsmatrix.
ttnphns

1
Zu beachten ist, dass PCA die Daten nicht nur dreht, sondern auch unterschiedlich in verschiedene Richtungen skaliert. Die Skalierung wirkt sich auf Entfernungsmessungen aus.
Vermutungen

2
Quadratische Mahalanobis-Abstände zwischen den Datenpunkten sind genau proportional zu den gewichteten quadratischen euklidischen Abständen, die für die Hauptkomponenten der Daten berechnet wurden. Das Gewicht ist 1/eigenvaluevon der Komponente. (Und das Gleiche gilt auch, wenn wir über Entfernungen zwischen Punkten und Schwerpunkt anstelle von Punkt-Punkt-Entfernungen sprechen.) Diese Gewichtung kompensiert die Unterschiede zwischen Mahalanobis und Euklidisch, die ich in meinem Kommentar angesprochen habe.
ttnphns

@ttnphns Das könnte eine Antwort auf den ersten Teil meiner Frage sein. Ich denke jedoch immer noch über den zweiten Teil nach - ob es ein guter Ersatz für Mahalanobis ist, wennP>N. Ich denke jedoch, dass der Fluch der Dimensionalität ziemlich schwerwiegend werden könnte.
generic_user

1
Sie können diese Seite durchsuchen, Mahalanobis singulardie Antworten auf Ihre zweite Frage liefern könnte
ttnphns

Antworten:


9

Der Mahalanobis-Abstand entspricht dem euklidischen Abstand auf den PCA-transformierten Daten (nicht nur PCA-gedreht!), Wobei ich mit "PCA-transformiert" meine (i) zuerst gedreht, um unkorreliert zu werden, und (ii) dann skaliert, um standardisiert zu werden . Dies ist, was @ttnphns in den obigen Kommentaren gesagt hat und was sowohl @DmitryLaptev als auch @whuber in ihren Antworten, mit denen Sie verlinkt haben ( eins und zwei ), gemeint und explizit geschrieben haben. Ich empfehle Ihnen daher, ihre Antworten erneut zu lesen und diesen Punkt sicherzustellen wird klar.

Dies bedeutet , dass Sie Ihren Code Arbeit einfach machen durch den Austausch pc$xmit scale(pc$x)in der vierten Zeile von unten.

In Bezug auf Ihre zweite Frage mit n<pDie Kovarianzmatrix ist singulär und daher ist der Mahalanobis-Abstand undefiniert. Denken Sie in der Tat an die euklidische Distanz in den PCA-transformierten Daten. wannn<pEinige der Eigenwerte der Kovarianzmatrix sind Null und die entsprechenden PCs haben eine Varianz von Null (alle Datenpunkte werden auf Null projiziert). Es ist daher unmöglich, diese PCs zu standardisieren, da es unmöglich ist, durch Null zu teilen. Mahalanobis Entfernung kann nicht "in diese Richtungen" definiert werden.

Was man tun kann, ist sich ausschließlich auf den Unterraum zu konzentrieren, in dem die Daten tatsächlich liegen, und die Mahalanobis-Entfernung in diesem Unterraum zu definieren. Dies entspricht der Durchführung von PCA und der Beibehaltung von Komponenten ungleich Null. Ich denke, das haben Sie in Ihrer Frage Nr. 2 vorgeschlagen. Die Antwort darauf lautet also ja. Ich bin mir jedoch nicht sicher, wie nützlich dies in der Praxis sein kann, da dieser Abstand wahrscheinlich sehr instabil ist (Eigenwerte nahe Null sind mit sehr schlechter Genauigkeit bekannt, werden jedoch in der Mahalanobis-Formel invertiert, was möglicherweise zu groben Fehlern führt). .


3

Der Mahalanobis-Abstand ist der skalierte euklidische Abstand, wenn die Kovarianzmatrix diagonal ist. In PCA ist die Kovarianzmatrix zwischen Komponenten diagonal. Der skalierte euklidische Abstand ist der euklidische Abstand, bei dem die Variablen anhand ihrer Standardabweichungen skaliert wurden. Siehe S. 303 in Encyclopedia of Distances , ein sehr nützliches Buch, übrigens.

Es scheint, dass Sie versuchen, die euklidische Distanz für die Teilmenge der PCA-Faktoren zu verwenden. Sie haben wahrscheinlich die Dimensionalität mit PCA reduziert. Sie können dies tun, aber es wird ein Fehler auftreten, der "proportional" zu dem Anteil der Varianz ist, der durch Ihre PCA-Komponenten erklärt wird. Natürlich müssen Sie auch den Abstand für die Skala anpassen (dh Abweichungen erklären).

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.