Je voudrais calculer le Moore–Penrose pseudoinverse d'une énorme matrice. Idéalement, je voudrais le faire sur une matrice qui a 23 millions de lignes et 1000 colonnes, mais si nécessaire, je peux réduire le nombre de lignes à 4 millions en exécutant seulement une partie de mon expérience.pseudo-inverse à grande échelle
De toute évidence, le chargement de la matrice en mémoire et l'exécution de SVD dessus ne fonctionneront pas. Wikipedia pointe vers Krylov subspace méthodes et mentionner la Arnoldi, Lanczos, Conjugate gradient, GMRES (minimum résiduel généralisé), BiCGSTAB (gradient de biconjugué stabilisé), QMR (quasi minimale résiduelle), TFQMR (transposition sans QMR), et MINRES méthodes (résiduelle minimale) comme étant parmi les meilleures méthodes de sous-espace de Krylov. Mais je ne sais pas où aller à partir d'ici. Le calcul du pseudo-inverse d'une telle matrice est-il même faisable? Si oui, en utilisant quels algorithmes ou bibliothèques de logiciels? J'ai un grand cluster informatique disponible, donc les approches parallèles sont les bienvenues.
This answer pointe vers le paquet R biglm. Cela fonctionnerait-il? Est-ce que quelqu'un l'a utilisé? Je travaille normalement en Python, mais cela ne me dérange pas d'utiliser d'autres langages et outils pour cette tâche particulière.
La matrice a-t-elle une structure de bloc spéciale? – Joel
@Joel: Non, presque tous les éléments sont différents de zéro. –
Est-ce que le pseudo-inverse est le produit final ou est-ce que vous calculez quelque chose avec? – user382751