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) .

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


1
Если наибольшее собственное значение на 20% больше, чем следующее, итерация мощности должна сходиться довольно быстро (все остальные собственные значения уменьшаются в 5/6 раз на каждой итерации, поэтому вы получаете одну цифру на каждые 13 итераций.
Вольфганг Бангерт,

2
Методы подпространства Крылова строго лучше, чем степенные, поскольку они содержат вектор из степенной итерации с тем же числом итераций.
Джек Полсон

1
@JackPoulson: Да, но каждая итерация обходится дороже ... Разве она того стоит для такой маленькой проблемы?
Педро

@Pedro: конечно, matvecs требуют квадратичной работы, и частное Рэлея eigensolve и последующее расширение тривиально по сравнению.
Джек Полсон

1
Код расхода? Поскольку @JackPoulson затронул эту проблему, Б. Парлетт и др. (1982) («Об оценке наибольшего собственного значения с помощью алгоритма Ланцоша») сравнивают силовой метод, силовой метод + ускорение Айткена и приложение Ланцоша, нацеленное на наибольшее собственное значение реального симметричный (или эрмитовский) поз. отсроченный матрица. Они приходят к выводу, что метод Ланцоша более эффективен, если требуется даже скромная точность (первого собственного значения относительно второго), и лучше избегает неправильного схождения.
hardmath


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) усилия.


Казалось бы, для этого необходимо иметь представление о величине второго по величине собственного значения. Как бы вы приблизили это в таком случае?
Педро

@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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.