Собственные векторы корректировки малых норм


10

У меня есть набор данных, который медленно меняется, и мне нужно отслеживать собственные векторы / собственные значения его ковариационной матрицы.

Я использовал scipy.linalg.eigh, но это слишком дорого, и это не использует тот факт, что у меня уже есть разложение, которое только немного неправильно.

Кто-нибудь может предложить лучший подход для решения этой проблемы?


1
Насколько велики ваши данные? Вам нужна полная собственная система или только некоторые из самых больших собственных значений? Вам они нужны точно, или приблизительное приближение?
cfh

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

Что вы делаете с этим полным собственным разложением? Может быть лучше ярлык, который не проходит через это ... И я повторяю вопрос cfh: "насколько велик"?
Федерико Полони,

У меня есть 8 тыс. Функций и миллионы точек данных, поэтому ковариация приблизительная. Это для реализации этого алгоритма. Обновление градиента зависит от собственных значений определенной ковариационной матрицы, и эта ковариационная матрица меняется на каждом шаге
Ярослав Булатов,

Ответы:


5

Наивный подход состоит в том, чтобы использовать решение собственных значений вашей матрицы в качестве начального предположения итеративного решения eigensolver для матрицы A ( t + δ t ) . Вы можете использовать QR, если вам нужен полный спектр, или другой способ питания. Однако это не совсем надежный подход, поскольку собственные значения матрицы не обязательно близки к почти соседней матрице (1) , особенно если она плохо обусловлена (2) .A(T)A(T+δT)

Метод отслеживания подпространства, по-видимому, более полезен (3) . Выдержка из (4) :

Итеративное вычисление экстремальной (максимальной или минимальной) собственной пары (собственного значения и собственного вектора) может быть датировано 1966 годом [72]. В 1980 году Томпсон предложил адаптивный алгоритм LMS-типа для оценки собственного вектора, который соответствует наименьшему собственному значению выборочной ковариационной матрицы, и предложил алгоритм адаптивного слежения за углом / частотой, комбинируемый с гармонической оценкой Писаренко [14]. Саркар и соавт. В [73] использовался алгоритм сопряженного градиента для отслеживания изменения экстремального собственного вектора, который соответствует наименьшему собственному значению ковариационной матрицы медленно меняющегося сигнала, и доказал его гораздо более быструю сходимость, чем алгоритм Томпсона LMS-типа. Эти методы были использованы только для отслеживания одного экстремального значения и собственного вектора с ограниченным применением, но позже они были расширены для отслеживания и обновления собственных подпространств. В 1990 году Комон и Голуб [6] предложили метод Ланцоша для отслеживания экстремального сингулярного значения и сингулярного вектора, который является распространенным методом, изначально разработанным для определения некоторой большой и разреженной симметричной собственной задачи. [74].AИксзнак равноКИкс

[6]: Comon, P. & Golub, GH (1990). Отслеживание нескольких экстремальных единичных значений и векторов при обработке сигналов. В обработке IEEE (стр. 1327–1343).

[14]: Томпсон, Пенсильвания (1980). Метод адаптивного спектрального анализа несмещенной частоты

[72]: Брэдбери В.В. и Флетчер Р. (1966). Новые итерационные методы решения собственной задачи. Численная математика, 9 (9), 259–266.

[73]: Sarkar, TK, Dianat, SA, Chen, H. & Brule, JD (1986). Адаптивная спектральная оценка методом сопряженных градиентов. Операции IEEE по акустической, речевой и сигнальной обработке, 34 (2), 272–284.

[74]: Голуб Г.Х. и Ван Лоут, С.Ф. (1989). Матричный расчет (2-е изд.). Балтимор: издательство Университета Джона Хопкинса.

Я должен также упомянуть, что решения симметричных матриц, такие как то, что вы должны решать, используя свое использование scipy.linalg.eigh, несколько дешевы. Если вас интересуют только несколько собственных значений, вы также можете найти улучшение скорости в вашем методе. Метод Арнольди часто используется в таких ситуациях.


1
спасибо за указатель, алгоритм QR кажется хорошей отправной точкой
Ярослав Булатов

AA+λя

ps: linalg.eigh для матрицы 4 на 4 К занимает около 20 секунд (почему-то используется только одно ядро). Мне нужно около 0,25 секунды на обновление
Ярослав Булатов

7

к сожалению, у меня нет обновлений малого ранга, у меня есть небольшие обновления норм полного ранга
Ярослав Булатов

@YaroslavBulatov Я не знаю эффективного алгоритма, который мог бы обрабатывать полнобитные обновления с малой нормой - лучше всего я нашел эту ссылку , но она не выглядит многообещающей. Конечно, существует большое количество литературы по возмущению собственных значений, на которую вы можете посмотреть (см. Другой ответ).
GoHokies
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.