Вычисление SVD низкорангового матричного эскиза
[
возвращает сингулярное разложение (SVD) матричного эскиза низкого ранга входа матрицы U
,S
,V
] = svdsketch(A
)A
. Матричный эскиз является низкоранговым приближением, которое отражает только наиболее важные функции A
(до допуска), что позволяет быстрее вычислять частичный SVD больших матриц по сравнению с использованием svds
.
Использовать svdsketch
когда вы не знаете раньше времени, с каким рангом указывать svds
, но вы знаете, какой допуск должно удовлетворять приближение SVD.
svds
вычисляет лучшее возможное приближение SVD к рангу k (используя значение по умолчанию "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] Ю, Вэньцзянь, Юй Гу и Яохан Ли. Эффективные рандомизированные алгоритмы для низкоранговой Матрицы с фиксированной точностью Приближения. SIAM Journal по матричному анализу и применениям 39, № 3 (август 2018): 1339-1359. https://doi.org/10.1137/17M1141977.