Ich habe eine 1500x1500 Kovarianzmatrix, von der ich versuche, die Determinante für die EM-ML-Methode zu berechnen. Die Kovarianzmatrix wird erhalten, indem die SIGMA-Matrix gefunden und dann in die nächste SPD-Bibliothek (Link) eingegeben wird, um die Matrix positiv definit zu machen. In diesem Fall ist die Matrix immer singulär. Eine andere Methode, die ich versuchte, war das manuelle Erzeugen einer positiv definiten Matrix unter Verwendung der A '* A-Technik. (A wurde als eine 1600 × 1500-Matrix genommen). Dies gibt mir immer die Determinante als unendlich. Irgendeine Idee, wie ich eine positive definitive Matrix mit einer endlichen Determinante bekommen kann?MATLAB: Die Determinante einer Kovarianzmatrix ist entweder 0 oder inf
Antwort
Benötigen Sie tatsächlich die Determinante oder den Logarithmus der Determinante? Wenn Sie zum Beispiel eine logarithmische Wahrscheinlichkeit von Gaussians berechnen, dann ist das Log der Determinante das, was in die logarithmische Wahrscheinlichkeit eintritt. In hohen Dimensionen passen die Determinanten nicht in ein Doppel, aber ihr Log wird höchstwahrscheinlich.
Wenn Sie eine cholesky Faktorisierung der Kovarianz C durchzuführen, mit (unterem Dreieck) Faktor L sagen, so dass
C = L*L'
dann
det C = det(L) * det(L') = det(L) * det(L)
Aber die Determinante einer unteren Dreiecksmatrix ist die Produkt seiner diagonalen Elemente, so, Protokolle über nehmen, erhalten wir:
(Als Reaktion auf einen Kommentar) Auch wenn Sie ein Gaussian-PDF berechnen müssen, ist es besser, das Protokoll davon zu berechnen und nur dann zu potenzieren, wenn Sie es benötigen. Zum Beispiel ad dimenions Gaußsche mit Kovarianz C (die einen cholesky Faktor L hat) und mittlere 0 (rein Typisierung zu sparen) ist:
p(x) = exp(-0.5*x'*inv(C)*x) /(sqrt(pow(2pi,d) * det(C))
so
log p(x) = -0.5*x'*inv(C)*x - 0.5*d*log(2pi) - 0.5*log(det(C))
die auch
geschrieben werden könnenlog p(x) = -0.5*y'*y - 0.5*d*log(2pi) - log(det(L))
wo
y = inv(L)*x
Ja, ich würde die Determinante benötigen, da ich die Gauss'sche Wahrscheinlichkeitsverteilungsfunktion erzeugen muss, die ein '| SIGMA |' in ihrem Nenner hat. – Timelapse
Der einfachste Weg ist die Einheitsmatrix 'Auge (N)'. Ansprüche * Determinante jeder größeren Submatrix der Matrix M (und M kann als größte Submatrix von M verstanden werden) ist ungleich Null und positiv. * Und * M ist positiv definit * ist äquivalent. Ich nehme an, Sie haben Probleme mit dem Überschreiten des Realmax-Wertes. Haben Sie beispielsweise versucht, 'det (A * 10^-6)' zu berechnen? – Crowley
Sie können auch versuchen, die größte Sumbatrix zu finden, die ausgewertet werden kann, indem Sie 'ii' den Befehl' DetMinorA (ii) = det (A (1: ii, 1: ii)) durchlaufen; ' – Crowley
Also habe ich' det (A * 10e-6) 'und dies gibt mir jetzt die Determinante als Null. Auch gibt 'DetMinorA (ii) = det (A (1: ii, 1: ii));' gibt mir endliche Werte bis zum 145. Index. Was damit zu tun? – Timelapse