Dada una matriz de datos de digamos 1000000 observaciones 100 características, ¿hay una manera rápida de construir una aproximación tridiagonal
?
Entonces uno podría factorizar ,
todos 0 excepto y , y realizar una rápida descorrelación (blanqueamiento) resolviendo
. (Por "rápido" me refiero a .)
(Agregado, tratando de aclarar): estoy buscando un blanqueador rápido y sucio que sea más rápido que el completo pero mejor que la diagonal. Digamos que es puntos de datos características, por ejemplo, 1000000 100, con características 0-mean.
1) construya , factor Cholesky como , resuelva para blanquear nuevas s. Esto es cuadrático en la cantidad de características.
2) diagonal: ignora las correlaciones cruzadas por completo.
Se podría obtener una matriz tridiagonal de simplemente a cero todas las entradas fuera del tridiagonal, o no acumulándolas en primer lugar. Y aquí empiezo a hundirme: ¿debe haber una mejor aproximación, quizás jerárquica, diagonal de bloque → tridiagonal?
(Agregado el 11 de mayo): Déjame dividir la pregunta en dos:
1) ¿hay un aproximado rápido ?
No (whuber), uno debe mirar todos los {N \ choose 2} pares (o tener estructura o muestra).
2) dado un , ¿qué tan rápido se puede blanquear nuevos s?
Bueno, factorizando , triangular inferior, una vez, luego resolver
es bastante rápido; scipy.linalg.solve_triangular, por ejemplo, usa Lapack.
Estaba buscando un blanqueamiento aún más rápido (), todavía buscando.