Как обстоят дела с алгоритмами разложения по сингулярным числам?


12

Я работаю над библиотекой матриц только для заголовков, чтобы обеспечить некоторую разумную степень возможностей линейной алгебры в максимально простом пакете, и я пытаюсь рассмотреть, каково текущее состояние техники: вычисление SVD сложная матрица.

Я делаю двухфазную декомпозицию, бидиагонализацию с последующим вычислением сингулярных значений. Прямо сейчас я использую метод домохозяина для бидиагонализации (я полагаю, что LAPACK также использует это), и я думаю, что это примерно так же хорошо, как и в настоящее время (если кто-то не знает алгоритма для него ..) , О(N2)

Вычисление сингулярных значений является следующим в моем списке, и я несколько не в курсе того, что такое общие алгоритмы для этого. Я читал здесь, что исследование направлено на метод обратной итерации, который гарантирует ортогональность со сложностью . Мне было бы интересно услышать об этом или других достижениях.О(N)


есть ли документ для вашей матрицы lib только для заголовков (кроме .h)? Также, пожалуйста, добавьте тег "SVD".
Денис

Ответы:


7

«Рандомизированные алгоритмы» в последнее время стали довольно популярными для частичных svds. Реализацию только с заголовками можно скачать здесь: http://code.google.com/p/redsvd/

Обзор текущих методов можно найти здесь: http://arxiv.org/abs/0909.4061

Для полного свдс я не уверен, что вы можете сделать лучше, чем домохозяин.


Это звучит очень интересно, мне нужно взглянуть на этот обзорный документ, спасибо!
Gct

ОП интересуется алгоритмами для плотных матриц. Я не думаю, что рандомизированные алгоритмы конкурентоспособны в таких условиях, если они вообще работают.
Федерико Полони

Это сообщение указывает , что в рандомизированные методы прекрасно работают на плотных матриц research.facebook.com/blog/294071574113354/fast-randomized-svd
dranxo

@dranxo В этом посте нет сравнений точности, и результаты расчета времени выглядят не очень тщательно. Кроме того, рандомизированные алгоритмы основаны на проекции + точное решение мелкомасштабной задачи. Это означает, что OP в любом случае потребуется реализация «стандартного метода» для возникающей мелкомасштабной проблемы.
Федерико Полони

Справедливо. Хотя я немного запутался, почему мы должны думать, что эти методы работают только на разреженных матрицах. Прямо из резюме статьи Джоэля Троппа: «Для плотной входной матрицы рандомизированные алгоритмы требуют O (mn log (k)) операций с плавающей запятой (флопс) в отличие от O (mnk) для классических алгоритмов». arxiv.org/pdf/0909.4061v2.pdf
dranxo

4

О(N)

(Я хотел просто сделать несколько комментариев, так как у меня нет времени, чтобы выписать детали, но это стало довольно большим для поля для комментариев.)

LDLUDU

С другой стороны, часть «сингулярного значения» алгоритма исходит из алгоритма (сдвинутой) дифференциальной фактор-разности (dqd (s)) , который является кульминацией предыдущей работы Фернандо, Парлетта , Деммеля и Кахана (с вдохновением от Хайнца Рутисхаузера).

Как вы, возможно, знаете, методы SVD обычно сначала выполняют бидиагональную декомпозицию, прежде чем сингулярные значения получаются из бидиагональной матрицы. К сожалению, я не слишком осведомлен о текущем лучшем методе для двунаправленной декомпозиции интерфейса; В последний раз я проверял, что обычный метод состоит в том, чтобы начать с разложения QR с поворотом столбца, а затем применить ортогональные преобразования соответственно к треугольному фактору, чтобы окончательно получить разложение по диагонали.

Я понимаю, что я был скудным с деталями; Я постараюсь уточнить этот ответ, как только у меня будет доступ к моей библиотеке ...


От матрицы к двухдиагональной форме, сделайте столбец, затем строку, повторите диагональ вниз: используйте Givens или Household, чтобы обнулить столбец до диагонали, затем сделайте то же самое для строки до супердиагонали.
Адам W

UAВUUзнак равнояВВзнак равноя

0

Есть библиотеки PROPACK и nu-TRLan.

http://soi.stanford.edu/~rmunk/PROPACK/

http://crd-legacy.lbl.gov/~kewu/trlan/


2
Здесь автор просит алгоритмы, а не библиотеки; могли бы вы вместо этого рассказать об алгоритмах, используемых в этих библиотеках, их вычислительной сложности и почему эти библиотеки являются современными?
Джефф Оксберри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.