Ich möchte das Moore-Penrose Pseudoinverse einer riesigen 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.
Offensichtlich funktioniert das Laden der Matrix in den Speicher und das Ausführen von SVD nicht. Wikipedia zeigt auf Krylov-Unterraum Methoden und Erwähnung der Arnoldi , Lanczos , Conjugate gradient , GMRES (verallgemeinertes minimales Residuum), BiCGSTAB (bikonjugatgradientenstabilisiert), QMR (quasi minimales Residuum), TFQMR (transposefreies QMR) und MINRES (minimales Residuum) als unter den Beste Krylov-Unterraummethoden. 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 verfüge über einen großen Computercluster, daher sind parallele Ansätze willkommen.
Diese Antwort zeigt an zum R-Paket biglm . Funktioniert das? Hat jemand es benutzt? Ich arbeite normalerweise in Python, aber es macht mir nichts aus, andere Sprachen und Werkzeuge für diese spezielle Aufgabe zu verwenden.
Sie sollten besser einen iterativen Blockalgorithmus verwenden, der direkt zur Lösung der kleinsten Quadrate konvergiert, als die Lösung der kleinsten Quadrate durch die Pseudoinverse zu berechnen. Siehe " Applied Iterative Methods " von Charlie Byrne. Diese Algorithmen sind eng mit den Krylov-Subraummethoden verwandt, sind jedoch auf eine einfache Berechnung abgestimmt. Sie können eine Einführung erhalten, indem Sie sich Kapitel 3 dieses Vorabdrucks eines anderen seiner Bücher ansehen.
Tags und Links algorithm linear-algebra hpc