Ich möchte die Moore–Penrose pseudoinverse einer enormen Matrix berechnen. Idealerweise würde ich das gerne auf einer Matrix machen, die 23 Millionen Zeilen und 1000 Spalten hat, aber wenn nötig, kann ich die Anzahl der Zeilen auf 4 Millionen reduzieren, indem ich nur einen Teil meines Experiments durchführe.Large-scale pseudoinverse
Offensichtlich funktioniert das Laden der Matrix in den Speicher und das Ausführen von SVD nicht. Wikipedia Punkte auf Krylov subspace Methoden und erwähnen den Arnoldi, Lanczos, Conjugate gradient, GMRES (verallgemeinerte minimalen Rest-), BiCGStab (biconjugate Gradienten stabilisierte), QMB (quasi minimal residual), TFQMR (transponiert freie QMB) und MINRES (minimal residual) Methods als eine der besten Krylov-Subraum-Methoden. Aber ich weiß nicht, wo ich von hier aus hingehen soll. Ist die Berechnung der Pseudoinverse einer so großen Matrix überhaupt machbar? Wenn ja, mit welchen Algorithmen oder Softwarebibliotheken? Ich habe einen großen Computer-Cluster zur Verfügung, so dass parallele Ansätze willkommen sind.
This answer verweist auf das R-Paket biglm. Funktioniert das? Hat jemand es benutzt? Normalerweise arbeite ich in Python, aber es macht mir nichts aus, andere Sprachen und Werkzeuge für diese spezielle Aufgabe zu verwenden.
Hat die Matrix eine spezielle Blockstruktur? – Joel
@Joel: Nein, fast alle Elemente sind ungleich Null. –
Ist das Pseudoinverse das Endprodukt oder berechnen Sie etwas damit? – user382751