Крупномасштабный псевдообратный - PullRequest
8 голосов
/ 21 июля 2010

Я хотел бы вычислить псевдообратную Мура – ​​Пенроуза огромной матрицы. В идеале я хотел бы сделать это на матрице, которая имеет 23 миллиона строк и 1000 столбцов, но при необходимости я могу уменьшить количество строк до 4 миллионов, выполнив только одну часть моего эксперимента.

Очевидно, что загрузка матрицы в память и запуск SVD на ней не будут работать. Википедия указывает на подпространство Крылова методов и упоминает Арнольди , Ланцоша , Градиент сопряжения , GMRES (обобщенный минимальный остаток), методы BiCGSTAB (стабилизированный биоконъюгатный градиент), QMR (квази минимальный остаток), TFQMR (QMR без транспонирования) и MINRES (минимальный остаток) как одни из лучших методов подпространства Крылова. Но я не знаю, куда идти отсюда. Возможно ли вычислить псевдообратную форму такой огромной матрицы? Если да, то с помощью каких алгоритмов или программных библиотек? У меня есть большой вычислительный кластер, поэтому параллельные подходы приветствуются.

Этот ответ указывает на пакет R biglm . Будет ли это работать? Кто-нибудь использовал это? Обычно я работаю в Python, но не против использования других языков и инструментов для этой конкретной задачи.

1 Ответ

2 голосов
/ 22 июля 2010

Возможно, вам лучше использовать блочный итеративный алгоритм, который сходится непосредственно к решению наименьших квадратов, чем вычислять решение наименьших квадратов с помощью псевдообращения.См. " Прикладные итерационные методы " Чарли Бирном.Эти алгоритмы тесно связаны с методами подпространства Крылова, но настроены для простоты вычислений.Вы можете ознакомиться с главой 3 этого препринта другой его книг.

...