Gibt es bei einer Datenmatrix von beispielsweise 1000000 Beobachtungen 100 Merkmalen eine schnelle Möglichkeit, eine tridiagonale Approximation
?
Dann könnte man ,
alle 0 außer und faktorisieren und eine schnelle Dekorrelation (Weißfärbung) durchführen, indem man löst
. (Mit "schnell" meine ich .)× A ≈ c o v ( X ) A = L L T L L i i - 1 L i i L x = x w h i t e O ( s i z e X )
(Hinzugefügt, um dies zu klären): Ich suche einen schnellen und schmutzigen Weißmacher, der schneller als die volle aber besser als die Diagonale ist. Angenommen, ist Datenpunkte Merkmale, z. B. 1000000 100, mit Merkmalen 0-Mittelwert.X N × N f ×
1) Build , Cholesky-Faktor als , lösen , um neue s aufzuhellen . Dies ist quadratisch in der Anzahl der Merkmale.L L T L x = x w h i t e x
2) Diagonale: ignoriert Kreuzkorrelationen vollständig.
Man könnte eine tridiagonale Matrix von indem man einfach alle Einträge außerhalb der tridiagonalen auf setzt oder sie überhaupt nicht akkumuliert. Und hier fange ich an zu sinken: Es muss eine bessere Annäherung geben, vielleicht hierarchisch, Blockdiagonale → Tridiagonale?
(Hinzugefügt am 11. Mai): Lassen Sie mich die Frage in zwei Teile teilen:
1) es eine schnelle ungefähre ?
Nein (whuber), man muss sich alle Paare ansehen (oder Struktur oder Stichprobe haben).( N.
2) Wie schnell kann man bei einer neue s ?
Nun, , unteres Dreieck einmal ,
ist es ziemlich schnell, lösen . scipy.linalg.solve_triangular verwendet beispielsweise Lapack.
Ich suchte nach einem noch schnelleren Whiten (), das immer noch suchte.x c o v = L L T L L x = x w h i t e
Antworten:
Die bloße Berechnung der Kovarianzmatrix - die Sie auf jeden Fall benötigen, um loszulegen - ist . Asymptotisch in wird also nichts gewonnen, wenn Sie einen -Algorithmus für die auswählen Bleaching.N O ( N f )O((Nf)2) N O(Nf)
Es gibt Annäherungen, wenn die Variablen eine zusätzliche Struktur aufweisen, z. B. wenn sie eine Zeitreihe bilden oder Realisierungen eines räumlichen stochastischen Prozesses an verschiedenen Orten. Diese beruhen effektiv auf Annahmen, mit denen wir die Kovarianz zwischen einem Variablenpaar mit der zwischen anderen Variablenpaaren in Beziehung setzen können, z. B. zwischen Paaren, die durch die gleichen Zeitverzögerungen getrennt sind. Dies ist der herkömmliche Grund für die Annahme, dass ein Prozess beispielsweise stationär oder an sich stationär ist. Berechnungen können in solchen Fällen ( z. B. unter Verwendung der schnellen Fourier-Transformation wie in Yao & Journel 1998 ). Ohne ein solches Modell sehe ich nicht, wie Sie die Berechnung aller paarweisen Kovarianzen vermeiden können.O(Nflog(Nf)
quelle
Aus einer Laune heraus habe ich beschlossen, die Kovarianzmatrix (in R) für einen Datensatz von etwa der im OP genannten Größe zu berechnen:
Dies dauerte insgesamt weniger als eine Minute auf einem ziemlich generischen Laptop mit Windows XP 32-Bit. Das Generieren hat wahrscheinlich länger
z
gedauert als das Berechnen der Matrixvcv
. Und R ist nicht besonders für sofort einsatzbereite Matrixoperationen optimiert.Ist Geschwindigkeit angesichts dieses Ergebnisses so wichtig? Wenn N >> p, wird die Zeit, die zur Berechnung Ihrer Näherung benötigt wird, wahrscheinlich nicht viel kürzer sein, als um die tatsächliche Kovarianzmatrix zu erhalten.
quelle