Вычислить SVD эскиза матрицы низкого ранга
[ возвращает разложение сингулярного значения (SVD) эскиза матрицы низкого ранга входной матрицы U,S,V] = svdsketch(A)A. Эскиз матрицы представляет собой аппроксимацию низкого ранга, которая отражает только наиболее важные особенности A (до допуска), что позволяет быстрее вычислять частичный SVD больших матриц по сравнению с использованием svds.
[ дополнительно возвращает вектор U,S,V,apxErr] = svdsketch(___)apxErr который содержит относительную аппроксимационную ошибку в каждой итерации, norm(U*S*V'-A,'fro')/norm(A,'fro'). Заключительная запись в векторе apxErr(end) - относительная аппроксимационная ошибка выходного сигнала, возвращаемого svdsketch.
Использовать 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'), такой, что
USVH.
Если svdsketch способен отфильтровывать некоторые функции A на основе указанного допуска, тогда результирующие SVD-факторы содержат меньше сингулярных значений и сингулярных векторов, чем если бы полный SVD был выполнен на A.
[1] Юй, Вэньцзянь, Юй Гу и Яохан Ли. «Эффективные рандомизированные алгоритмы для аппроксимации матрицы низкого ранга с фиксированной точностью». Журнал SIAM по матричному анализу и приложениям 39, № 3 (август 2018): 1339-1359. https://doi.org/10.1137/17M1141977.