Вычислите SVD матричного эскиза низкого ранга
[
возвращает сингулярное разложение (SVD) матричного эскиза низкого ранга входной матрицы U
,S
,V
] = svdsketch(A
)A
. Матричный эскиз является приближением низкого ранга, которое только отражает самые важные функции A
(до допуска), который включает более быстрое вычисление частичного SVD больших матриц по сравнению с использованием svds
.
Использование svdsketch
когда вы не знаете заранее что ранг задать с svds
, но вы знаете, какому допуску приближение SVD должно удовлетворить.
svds
вычисляет самое лучшее приближение ранга-k SVD (использующий "largest"
по умолчанию метод).
svdsketch
не гарантирует, что его приближение ранга-k является лучшим, которое составляет его преимущество скорости svds
.
svdsketch
применяет допуск, чтобы сформировать матричное приближение низкого ранга из входной матрицы A
. Это приближение низкого ранга называется матричным эскизом. Матричный эскиз только сохраняет важные функции от A
, фильтрование ненужной информации. Относительная ошибка приближения apxErr
из матричного эскиза стремится удовлетворять заданному допуску tol
:
Процесс svdsketch
следует, чтобы сформироваться, матричный эскиз:
svdsketch
формирует матричный эскиз итеративно, с каждой итерацией, добавляющей новые столбцы в Q и новые строки к B. Новые столбцы и строки создаются путем извлечения функций из A
использование матрицы случайной выборки. Можно управлять количеством столбцов и строк, добавленных в каждой итерации с BlockSize
пара "имя-значение".
Во время каждой итерации, svdsketch
итерации степени использования, чтобы улучшить ортогональность новых столбцов в Q. Можно настроить количество итераций степени с NumPowerIterations
пара "имя-значение".
Итерации, чтобы сформировать матричную остановку эскиза, когда: количество столбцов в Q и строк в B достигает заданного значения для MaxSubspaceDimension
, количество итераций достигает MaxIterations
, или относительная ошибка приближения сходится (apxErr <= tol
).
Улучшить быстроту сходимости, svdsketch
может увеличить заданное начальное значение для BlockSize
от итерации до итерации, если затухание в apxErr
не достаточно.
После матричного эскиза формируется, svdsketch
вычисляет сингулярное разложение (SVD) матричного эскиза через [U1,S,V] = svd(B,'econ')
, таким образом, что
Если svdsketch
может отфильтровать некоторые функции A
на основе заданного допуска затем получившиеся факторы SVD содержат меньше сингулярных значений и сингулярных векторов, чем если бы полный SVD выполнялся на A
.
[1] Юй, Wenjian, Юй Гу и Яохэнг Ли. “Эффективные Рандомизированные Алгоритмы для Матричного Приближения Fixed-Precision Low-Rank”. SIAM Journal на Анализе матрицы и Приложения 39, № 3 (январь 2018): 1339–59. https://doi.org/10.1137/17M1141977.