Вычислите 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–1359. https://doi.org/10.1137/17M1141977.