Крупномасштабная псевдоинверсия

Я хотел бы вычислить псевдоинверсию Мура-Пенроуза огромной матрицы. Идеально, я хотел бы сделать это на матрице, которая имеет 23 миллиона строк и 1 000 столбцов, но при необходимости я могу сократить количество строк к 4 миллионам, только работая на одной части моего эксперимента.

Очевидно, загрузка матрицы в к памяти и выполнение SVD на нем не собираются работать. Википедия указывает на методы подпространства Krylov, и упомяните Arnoldi, Lanczos, Сопряженный градиент, GMRES (обобщенная минимальная невязка), BiCGSTAB (двусопряженный стабилизированный градиент), QMR (квази минимальная невязка), TFQMR (QMR без транспонирования), и MINRES (минимальная невязка) методы, как являющиеся среди лучших методов подпространства Krylov. Но я не знаю, куда пойти отсюда. Действительно ли вычисления являются псевдоинверсией такой огромной матрицы, даже выполнимой? Если так, с помощью, который алгоритмы или библиотеки программного обеспечения? Я имею большой вычислительный кластер в наличии, таким образом, параллельные подходы приветствуются.

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

8
задан Community 23 May 2017 в 10:29
поделиться

1 ответ

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

2
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: