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