Esiste un algoritmo SVD troncato che calcola i valori singolari uno alla volta?
Il mio problema: vorrei calcolare i primi valori singolari (e vettori singolari) di una matrice densa di grandi dimensioni , ma non so quale sarebbe un valore appropriato di . è grande, quindi per motivi di efficienza, preferirei non valutare l'intero SVD solo per troncare successivamente il più piccolo SV.
Idealmente, ci sarebbe un modo per calcolare i valori singolari serie, dal più grande ( ) al più piccolo ( ). In questo modo, potrei semplicemente interrompere il calcolo dopo aver calcolato il ° valore singolare se scende al di sotto di qualche soglia.
Esiste un tale algoritmo (preferibilmente con un'implementazione di Python)? Nel mio google, ho trovato solo funzioni troncate SVD che prendono k come parametro, costringendoti così a indovinarlo a priori.