Gibt es einen abgeschnittenen SVD-Algorithmus, der die Singularwerte einzeln berechnet?
Mein Problem: Ich möchte die ersten Singularwerte (und Singularvektoren) einer großen dichten Matrix berechnen , weiß aber nicht, was ein geeigneter Wert von wäre. ist groß, daher würde ich aus Effizienzgründen die vollständige SVD lieber nicht auswerten, um anschließend die kleinsten SVs abzuschneiden.
Idealerweise gibt es eine Möglichkeit, die Singularwerte seriell vom größten ( ) zum kleinsten ( ) zu berechnen . Auf diese Weise könnte ich die Berechnung nach Berechnung des ten Singularwerts einfach anhalten, wenn unter einen bestimmten Schwellenwert fällt.
Gibt es einen solchen Algorithmus (vorzugsweise mit einer Python-Implementierung)? Beim Googeln habe ich nur abgeschnittene SVD-Funktionen gefunden, die k als Parameter verwenden, sodass Sie gezwungen sind, dies a priori zu erraten.