Étant donné une matrice de données de 1000000 observations 100 entités, existe-t-il un moyen rapide de construire une approximation tridiagonale
?
On pourrait alors factoriser ,
tous 0 sauf et L_ {ii} , et faire une décorrélation rapide (blanchiment) en résolvant
L x = x_ {blanc} . (Par "rapide", je veux dire O (taille \ X) .)
(Ajouté, en essayant de clarifier): Je recherche un blanchisseur rapide et sale qui est plus rapide que le cov complet (X) mais meilleur que la diagonale. Supposons que est points de données caractéristiques, par exemple 1000000 100, avec des caractéristiques à 0 moyenne.
1) construire , factoriser Cholesky comme , résoudre pour blanchir de nouveaux s. C'est quadratique dans le nombre de fonctionnalités.
2) diagonale: ignore complètement les corrélations croisées.
On pourrait obtenir une matrice tridiagonale de simplement en mettant à zéro toutes les entrées en dehors de la tridiagonale, ou en ne les accumulant pas en premier lieu. Et là je commence à couler: il doit y avoir une meilleure approximation, peut-être hiérarchique, bloc diagonal → tridiagonal?
(Ajouté le 11 mai): Permettez-moi de diviser la question en deux:
1) existe-t-il une cov approximative rapide (X) ?
Non (whuber), il faut regarder toutes les paires (ou avoir une structure, ou un échantillon).
2) étant donné un , à quelle vitesse peut-on blanchir de nouveaux s?
Eh bien, factoriser , triangulaire inférieur, une fois, puis résoudre
est assez rapide; scipy.linalg.solve_triangular, par exemple, utilise Lapack.
Je cherchais un blanc encore plus rapide (), toujours à la recherche.