Обновление декомпозиции SVD после добавления одной новой строки в матрицу


17

Предположим , что у меня плотную матрицу A из m×n размера, с SVD разложения

A=USV.
В Rможно вычислить СВД следующим образом : svd(A).

Если в добавлена новая -я строка , можно ли вычислить новую декомпозицию SVD на основе старой (т. Е. Используя , и ), без пересчета СВД с нуля?A U S V(m+1)AUSV


3
Проверьте литературу rank 1 updates. Быстрые онлайн-версии SVD для облегченных рекомендательных систем от Brand - это первая доступная статья. Я не видел что-то для SVD, уже реализованного в R, к сожалению. Обновления Cholesky существуют ( updownиз Matrix) благодаря CHOLMOD. Разреженность вашей матрицы действительно изменит ваше окончательное решение; вы предполагаете плотную или разреженную матрицу? A
usεr11852 говорит восстановить Monic

2
+1 к @ usεr11852. Также обратите внимание, что намного проще и стандартнее обновлять QR, а в некоторых приложениях достаточно и QR, и в действительности SVD не требуется. Так что подумайте и о вашем приложении.
говорит амеба, восстанови Монику

Да, матрица плотная.
user1436187

1
Затем «отбросьте» рекомендательную литературу и сфокусируйтесь на обработке изображений. Подобные вопросы с турами были размещены в терминах «новых изображений» в базе данных. Например, я догадываюсь, что кто-то должен иметь алгоритм для обновления записей своих собственных лиц онлайн. Эти ребята работают с плотными матричными представлениями.
usεr11852 говорит восстановить Monic

Ответы:


14

Да, можно обновить декомпозицию SVD после добавления одной новой строки в существующую матрицу.

В общем, эта формулировка проблемы « добавить один к » называется обновлениями первого уровня . Ссылка MathOverflow, предоставленная @amoeba для « эффективных обновлений ранга два при разложении по собственным значениям », является отличным первым шагом, если вы хотите начать глубже изучать вопрос; Первая статья дает четкое решение вашего конкретного вопроса. Просто чтобы уточнить, что означают ранги один и два, чтобы вы не запутались, если ваш новый таков, что:A*

A*знак равноA-UvT

Где и v являются векторами, тогда вы называете это обновлением ранга 1 (или возмущением ). Основа этого обновления продиктована формулой Шермана-Моррисона. , Если возмущение более одного ранга, т.е. A = A - U V TUv

A*знак равноA-UВT

формула Вудбери входит в игру. Если вы увидите эти формулы, вы заметите, что есть много обратного. Вы не решаете это напрямую. Поскольку вы уже определили большую часть их подсистем (т. Е. Вы уже вычислили некоторую декомпозицию), вы используете их для получения более быстрых и / или более стабильных оценок. (Вот почему люди все еще исследуют эту область.) Я много использовал книгу « Вычислительная статистика » Дж.Э. Гентла; Я думаю, Чепт. 5 Числовая линейная алгебра настроит вас правильно. (Убер-классик: « Матричная алгебра с точки зрения статистика » Харвиля, к сожалению, вообще не затрагивает обновления рангов.)

Что касается статистики / приложений, обновления ранга один являются общими в рекомендательных системах, потому что каждый может иметь тысячи записей клиентов и пересчитывать SVD (или любое заданное разложение по этому вопросу) каждый раз, когда регистрируется новый пользователь или новый продукт. добавлено или удалено довольно расточительно (если не недостижимо). Обычно рекомендующие системные матрицы являются редкими, и это делает алгоритмы еще более эффективными. Первая доступная статья - рукопись М.Брэнда « Быстрые онлайновые версии SVD для облегченных рекомендательных систем ». Переходя к плотным матрицам, я думаю, что просмотр статей из «Распознавания образов» и «Обработка изображений» поможет вам понять, как использовать настоящий алгоритм. Например, документы:

  1. Инкрементальное изучение двунаправленных основных компонентов распознавания лиц (2009) Реном и Даем,
  2. Об инкрементном и надежном обучении в подпространстве (2003) Li et al.
  3. Последовательное извлечение основы Кархунена-Лоэва и его применение к изображениям (2000) Леви и Линденбаума.
  4. Инкрементальное обучение для надежного визуального отслеживания (2007) Росс и соавт.

кажется, что все решают одну и ту же проблему в своей сути; новые возможности приходят , и мы должны обновить наше представление соответственно быстро . Обратите внимание, что эти матрицы не являются симметричными или даже квадратными. Другая работа М. Брэнда также может решить эту проблему (см. Статью « Быстрые низкоранговые модификации тонкого разложения по сингулярным числам (2006) » - об этом также упоминается в ссылке МО, приведенной в начале поста.) много замечательных работ по этому вопросу, но большинство из них, как правило, в значительной степени математические (например, статья Бенайча-Джорджеса и Надакудити «Особые значения и векторы возмущений низкого ранга больших прямоугольных случайных матриц» (2012)") и я не думаю, что они помогут найти решение в ближайшее время. Я бы посоветовал вам сосредоточиться на литературе по обработке изображений.

К сожалению, я не встречал никаких реализаций R для процедур обновления ранга один. Ответ на « Обновляемая реализация SVD в Python, C или Fortran? » От Computational Science SE дает ряд реализаций MATLAB и C ++, которые вы можете рассмотреть. Обычно реализации R, Python и т. Д. Являются обертками вокруг реализаций C, C ++ или FORTRAN.


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

5
+1 и вам, и @whuber (и я не думаю, что следует избегать «дублирования» любой информации, предоставленной на другом сайте SE! Я бы сказал, что мы должны попытаться сделать информацию, представленную на этом сайте, самостоятельной насколько это возможно. Действительно, почти вся информация, содержащаяся здесь, в некотором смысле дублирует существующие учебники, онлайн-ресурсы или исследовательские работы). Один вопрос: вы упомянули формулы Шермана-Моррисона и Вудбери, которые описывают, как изменяется обратная матрица после обновления первого или более высокого ранга; какое отношение они имеют к СВД?
говорит амеба, восстанови Монику

1
Я понимаю, почему вы, возможно, захотите направить людей на страницы МО по этой ссылке, но вы можете подумать о том, чтобы решить эту проблему! («Хороший первый шаг» - огромное преуменьшение.) Большая часть вашего комментария может быть неверно истолкована как указание на то, что вы еще не нашли хорошего решения.
whuber

1
@whuber: «Хорошо» стало «отлично», и теперь я тоже упомянул газету, лучше? :) (Кстати, спасибо за отзыв.)
usεr11852 говорит Reinstate Monic

2
Ради истории: Банч и Нильсен были первыми, кто продемонстрировал способ обновления и уменьшения SVD. Фактически, метод Бренда обобщает методы этой более старой статьи.
JM не является статистиком
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.