Чи існує усічений алгоритм SVD, який обчислює поодинокі значення по одному?
Моя проблема: Я хотів би обчислити перші сингулярних значень (і сингулярних векторів) великої щільної матриці , але я не знаю, яке відповідне значення було б. великий, тому з міркувань ефективності я б краще не оцінював повний SVD лише для того, щоб урізати найменші SV.
В ідеалі, існує спосіб обчислити сингулярні значення послідовно, від найбільшого ( ) до найменшого ( ). Таким чином, я можу просто зупинити обчислення після обчислення го значення однини, якщо опуститься нижче деякого порогу.
Чи існує такий алгоритм (бажано з реалізацією Python)? У своєму гугленні я знайшов лише усічені SVD-функції, які приймають k як параметр, змушуючи вас вгадувати це апріорі.