SVD для нахождения наибольшего собственного значения матрицы 50x50 - я трачу много времени?

13

У меня есть программа, которая вычисляет наибольшее собственное значение из многих вещественных симметричных матриц 50x50, выполняя разложения по сингулярным числам для всех из них. SVD является узким местом в программе.

Существуют ли алгоритмы, которые намного быстрее находят наибольшее собственное значение, или оптимизация этой части не даст большой отдачи от инвестиций?

Анна
источник
Не могли бы вы дать больше информации о ваших матрицах, например, если что-то известно об их структуре, диапазоне их собственных значений или их сходстве друг с другом?
Педро
Это ковариационная матрица ( ). Тестирование показывает, что все, кроме 5 или около того, собственных значений близки к нулю, и что наибольшее собственное значение по меньшей мере на ~ 20% больше, чем второе по величине. Поскольку есть много собственных значений, близких к нулю, я полагаю, диапазон не важен? Это может быть изменено на любой диапазон. Масштаб, который я использую в настоящее время, дает диапазон от 150 до 200. ИксИксT
Анна
Кроме того, матрица не очень тесно сингулярна, поэтому проблема SVD хорошо обусловлена.
Анна
Поскольку является симметричным и положительным (полу) определенным, вы можете использовать факторизацию Холецкого вместо SVD. Факторизация Холецкого требует гораздо меньше флопов, чем SVD, но точный метод все равно требует O ( n 3 ) флопов. ИксИксTО(N3)
Кен
@ Анна: Вы пробовали любой из многих подходов, предложенных здесь? Мне было бы любопытно узнать, что для вас лучше всего работает на практике ...
Педро

Ответы:

12

В зависимости от точности, требуемой для наибольшего собственного значения, вы можете попробовать использовать Power Iteration .

Для вашего конкретного примера я бы зашел так далеко, что явно не формировал , а вычислял x X ( X T x ) в каждой итерации. Вычисление A потребует O ( n 3 ) операций, тогда как произведение матрицы на вектор требует только O ( n 2 )Aзнак равноИксИксTИксИкс(ИксTИкс)AО(N3)О(N2) .

Скорость сходимости зависит от разделения между двумя самыми большими собственными значениями, поэтому это не может быть хорошим решением во всех случаях,

Pedro
источник
1
Если наибольшее собственное значение на 20% больше, чем следующее, итерация мощности должна сходиться довольно быстро (все остальные собственные значения уменьшаются в 5/6 раз на каждой итерации, поэтому вы получаете одну цифру на каждые 13 итераций.
Вольфганг Бангерт,
2
Методы подпространства Крылова строго лучше, чем степенные, поскольку они содержат вектор из степенной итерации с тем же числом итераций.
Джек Полсон
1
@JackPoulson: Да, но каждая итерация обходится дороже ... Разве она того стоит для такой маленькой проблемы?
Педро
@Pedro: конечно, matvecs требуют квадратичной работы, и частное Рэлея eigensolve и последующее расширение тривиально по сравнению.
Джек Полсон
1
Код расхода? Поскольку @JackPoulson затронул эту проблему, Б. Парлетт и др. (1982) («Об оценке наибольшего собственного значения с помощью алгоритма Ланцоша») сравнивают силовой метод, силовой метод + ускорение Айткена и приложение Ланцоша, нацеленное на наибольшее собственное значение реального симметричный (или эрмитовский) поз. отсроченный матрица. Они приходят к выводу, что метод Ланцоша более эффективен, если требуется даже скромная точность (первого собственного значения относительно второго), и лучше избегает неправильного схождения.
hardmath
5

Икс(ИксTИкс)

Арнольд Ноймайер
источник
B=T=I
Нет; Я имел в виду стандартный алгоритм Lanczsos, но на скорую руку написал CG. Сейчас исправлено.
Арнольд Ноймайер
4

A=XXTμAμIA .

||Ax||/||x||λ1[0,56λ1]A512λ1I712λ1[512λ1,512λ1]

AμI is found to sufficient accuracy, λ1 is estimated by adding back the shift μ that had been taken away.

Note that you need not explicitly form AμI because (AμI)x=X(XTx)μx can still be computed with O(n2) усилия.

hardmath
источник
Казалось бы, для этого необходимо иметь представление о величине второго по величине собственного значения. Как бы вы приблизили это в таком случае?
Педро
@Pedro: применение итерации со смещенной мощностью требует только оценки наибольшего собственного значения λ1, but as with the unshifted power method, analysis shows the rate of convergence depends on |λ2|/|λ1| (throwing in abs. values that are unnecessary for the pos. semi-definite case at hand). In turn observed rates of convergence can be used to estimate |λ2|/|λ1|, and hence the size of λ2 relative to λ1 if desired. I was suggesting what benefit you'd see in a case such as Anna describes in her comments below the Question.
hardmath