Eigenvektoren einer kleinen Normanpassung

10

Ich habe einen Datensatz, der sich langsam ändert, und ich muss die Eigenvektoren / Eigenwerte seiner Kovarianzmatrix verfolgen.

Ich habe es benutzt scipy.linalg.eigh, aber es ist zu teuer und es nutzt nicht die Tatsache, dass ich bereits eine Zerlegung habe, die nur geringfügig falsch ist.

Kann jemand einen besseren Ansatz vorschlagen, um dieses Problem zu lösen?

Jaroslaw Bulatow
quelle
1
Wie groß sind Ihre Daten? Benötigen Sie das komplette Eigensystem oder nur einige der größten Eigenwerte? Benötigen Sie sie genau oder würde eine Annäherung genügen?
cfh
Ich brauche ein komplettes Eigensystem. Ich habe einen Algorithmus zum Aktualisieren der Inversen einer Matrix nach einer kleinen Normaktualisierung unter Verwendung der Regressionsinterpretation der Inversen der Kovarianzmatrix gefunden, daher habe ich angenommen, dass für Eigenvektoren etwas Ähnliches existieren sollte.
Jaroslaw Bulatow
Was machst du mit dieser vollständigen Eigenzusammensetzung? Es könnte eine bessere Abkürzung geben, die nicht durchgeht ... Und ich wiederhole die Frage von cfh: "wie groß"?
Federico Poloni
Ich habe 8k Features und Millionen von Datenpunkten, also ist die Kovarianz ungefähr. Dies dient zur Implementierung dieses Algorithmus. Die Gradientenaktualisierung hängt von den Eigenwerten einer bestimmten Kovarianzmatrix ab, und diese Kovarianzmatrix ändert sich bei jedem Schritt
Yaroslav Bulatov,

Antworten:

5

Ein naiver Ansatz besteht darin, die Eigenwertlösung Ihrer Matrix als erste Schätzung eines iterativen Eigensolvers für die Matrix A ( t + δ t ) zu verwenden . Sie können QR verwenden, wenn Sie das gesamte Spektrum benötigen, oder die Leistungsmethode anderweitig. Dies ist jedoch kein völlig robuster Ansatz, da die Eigenwerte einer Matrix nicht unbedingt nahe an einer nahezu benachbarten Matrix (1) liegen , insbesondere wenn sie schlecht konditioniert ist (2) .A(t)A(t+δt)

Eine Subraum-Verfolgungsmethode ist anscheinend nützlicher (3) . Ein Auszug aus (4) :

Die iterative Berechnung eines extremen (maximalen oder minimalen) Eigenpaars (Eigenwert und Eigenvektor) kann bis ins Jahr 1966 zurückreichen [72]. 1980 schlug Thompson einen adaptiven Algorithmus vom LMS-Typ zur Schätzung des Eigenvektors vor, der dem kleinsten Eigenwert der Probenkovarianzmatrix entspricht, und lieferte den adaptiven Verfolgungsalgorithmus für die Winkel- / Frequenzkombination mit dem harmonischen Schätzer von Pisarenko [14]. Sarkar et al. [73] verwendeten den konjugierten Gradientenalgorithmus, um die Variation des extremen Eigenvektors zu verfolgen, die dem kleinsten Eigenwert der Kovarianzmatrix des sich langsam ändernden Signals entspricht, und bewiesen seine viel schnellere Konvergenz als der LMS-Algorithmus von Thompson. Diese Methoden wurden nur verwendet, um einen einzelnen Extremwert und einen Eigenvektor mit begrenzter Anwendung zu verfolgen. aber später wurden sie für die Eigen-Subraum-Verfolgungs- und Aktualisierungsmethoden erweitert. Im Jahr 1990 schlugen Comon und Golub [6] die Lanczos-Methode zur Verfolgung des extremen Singularwerts und des Singularvektors vor. Diese Methode wurde ursprünglich zur Bestimmung eines großen und spärlichen symmetrischen Eigenproblems entwickelt [74].Ax=kx

[6]: Comon, P. & Golub, GH (1990). Verfolgung einiger extremer Singularwerte und Vektoren bei der Signalverarbeitung. In Processing of the IEEE (S. 1327–1343).

[14]: Thompson, PA (1980). Eine adaptive Spektralanalysetechnik für unverzerrte Frequenzen

[72]: Bradbury, WW & Fletcher, R. (1966). Neue iterative Methoden zur Lösung des Eigenproblems. Numerical Mathematics, 9 (9), 259–266.

[73]: Sarkar, TK, Dianat, SA, Chen, H. & Brule, JD (1986). Adaptive Spektralschätzung nach der konjugierten Gradientenmethode. IEEE-Transaktionen zur Akustik-, Sprach- und Signalverarbeitung, 34 (2), 272–284.

[74]: Golub, GH & Van Load, CF (1989). Matrixberechnung (2. Aufl.). Baltimore: Die John Hopkins University Press.

Ich sollte auch erwähnen, dass Lösungen für symmetrische Matrizen, wie das, was Sie aufgrund Ihrer Verwendung lösen müssen scipy.linalg.eigh, etwas billig sind. Wenn Sie nur an einigen Eigenwerten interessiert sind, finden Sie möglicherweise auch Geschwindigkeitsverbesserungen in Ihrer Methode. In solchen Situationen wird häufig die Arnoldi-Methode angewendet.

Spencer Bryngelson
quelle
1
danke für den Zeiger, der QR-Algorithmus scheint ein guter Ausgangspunkt zu sein
Yaroslav Bulatov
AA+λI
ps: linalg.eigh auf einer 4k-mal-4k-Matrix dauert ungefähr 20 Sekunden (aus irgendeinem Grund wird nur ein einziger Kern verwendet). Ich brauche ungefähr 0,25 Sekunden pro Update
Yaroslav Bulatov
7

t0O(N3)O(kN2)Nk

Hier sind einige relevante Referenzen:

Adaptive Eigendekomposition von Datenkovarianzmatrizen basierend auf Störungen erster Ordnung (Champagne, IEEE TSP 42 (10) 1994)

Rekursive Aktualisierung der Eigenwertzerlegung einer Kovarianzmatrix (Yu, IEEE TSP, 39 (5) 1991)

Online-Hauptkomponentenanalyse in hoher Dimension: Welchen Algorithmus wählen? (Cardot und Degras)

Ein stabiler und schneller Algorithmus zur Aktualisierung der Singularwertzerlegung (Gu und Eisenstadt, 1994)

GoHokies
quelle
Leider habe ich keine kleinen Rangaktualisierungen, ich habe kleine Normaktualisierungen mit vollem Rang
Yaroslav Bulatov
@YaroslavBulatov Mir ist kein effizienter Algorithmus bekannt, der kleine Rangaktualisierungen verarbeiten kann - das Beste, was ich finden konnte, war diese Referenz , aber sie sieht nicht sehr vielversprechend aus. Es gibt natürlich eine große Menge an Literatur zu Eigenwertstörungen, die Sie sich ansehen möchten (siehe die andere Antwort).
GoHokies