Оновлення розкладання SVD після додавання одного нового рядка до матриці


17

Припустимо, у мене щільна матриця розміром m × n , при розкладі SVD A = U S V . У можна обчислити СВД наступним чином : .Am×n

A=USV.
Rsvd(A)

Якщо до A додати новий -й ряд , чи можна обчислити нове розкладання SVD на основі старого (тобто, використовуючи U , S і V ), не перераховуючи SVD з нуля?(m+1)AUSV


3
Перевірте літературу Росії rank 1 updates. Швидкі онлайн-версії SVD для легких систем рекомендування від фірми - це доступний перший документ. Я, на жаль, ще не бачив чогось для SVD, реалізованого в R. Холеські оновлення існують ( updownз Matrix) завдяки CHOLMOD. Рідкість вашої матриці дійсно змінить ваше остаточне рішення; ви припускаєте щільну чи розріджену матрицю? A
usεr11852 повідомляє Відновити Моніку

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

Так, матриця щільна.
користувач1436187

1
Тоді «вирийте» літературу з рекомендацій та зосередьтеся на обробці зображень. Подібні запитання з турами були розміщені у базі даних щодо "нових зображень". Наприклад, моя думка полягає в тому, що хтось повинен мати алгоритм для оновлення записів власних елементів в режимі он-лайн. Ці хлопці працюють із щільними матричними уявленнями.
usεr11852 повідомляє Відновити Моніку

Відповіді:


14

Так, ви можете оновити розклад SVD після додавання одного нового рядка до існуючої матриці.

Взагалі ця постановка проблеми " додати одного до " відома як оновлення першої позиції . Посилання MathOverflow, яке надає @amoeba про " ефективне оновлення розкладу власного значення ", - це перший перший крок, якщо ви хочете почати заглиблюватися в справу; перший документ пропонує чітке вирішення вашого конкретного питання. Просто для уточнення, що означає перший ранг і другий ранг, щоб ви не плуталися, якщо ваш новий такий:A

A=AuvT

uv

A=AUVT

формула Вудбері входить в гру. Якщо ви побачите ці формули, ви помітите, що в них багато зворотного. Ви не вирішуєте це безпосередньо. Оскільки ви вже вирішили значну частину їх підсистем (тобто у вас вже було розраховано декомпозицію), ви використовуєте їх для отримання більш швидких та / або стабільніших оцінок. (Ось чому люди все ще досліджують цю сферу.) Я багато використовував книгу " Обчислювальна статистика " Дж. Дж. Ніжного як орієнтир; Я думаю, що гл. 5 Числова лінійна алгебра налаштує вас належним чином. (Класифікатор uber-classic: " Матрична алгебра з точки зору статистики " Харвіля на жаль не торкається оновлень рангів.)

Переглядаючи статистику / додаток до речей, оновлення першої позиції є поширеними в системах рекомендацій, оскільки в них можуть бути тисячі записів клієнтів і перерахування SVD (або будь-якого розкладу для цього питання) кожного разу, коли новий користувач реєструє або новий продукт є додані або видалені досить марнотратні (якщо не недосяжні). Зазвичай матриці системи рекомендацій є рідкими, і це робить алгоритми ще більш ефективними. Доступним першим документом є рукопис М. Бренда " Швидкі онлайн-версії SVD для легких систем рекомендацій ". Переходячи до щільних матриць, я думаю, що перегляд статей з розпізнавання візерунків та обробки зображень може привести вас досить далеко до отримання фактичного алгоритму використання. Наприклад, документи:

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

всі, здається, вирішують одну і ту ж проблему в своїй основі; з'являються нові функції, і нам потрібно оновити представництво відповідно швидко . Зауважте, що ці матриці не є симетричними або навіть квадратними. Інша робота М. Бренда також може вирішити цю проблему (див. Статтю " Швидкі модифікації низького рангу розкладання тонкого сингулярного значення (2006) " - про це також згадується у посиланні MO, наведеному на початку публікації.) багато чудових робіт на цю тему, але більшість, як правило, є досить математичними (наприклад, доповідь Бенайча-Георгеса та Надакудіті на тему " Сингулярні значення та вектори збурень низького рангу великих прямокутних випадкових матриць (2012)") і я не думаю, що вони допоможуть отримати рішення незабаром. Я б запропонував вам зосередитись на літературі з обробки зображень.

На жаль, я не стикався з жодними R-реалізаціями для рутинних оновлень під рангом один. Відповідь на тему " Оновлена ​​реалізація SVD в Python, C або Fortran? " Від Computational Science SE дає ряд реалізацій MATLAB та C ++, які ви можете розглянути. Зазвичай реалізація R, Python та ін. - це обгортки навколо реалізації C, C ++ або FORTRAN.


6
Це приємний коментар, але я розчарувався, що не знайшов відповіді на запитання. Виявляється, ще один документ Меттью Бренда , пов’язаний із відповіддю в МО, містить чітке рішення.
whuber

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

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

1
@whuber: "Добре" стало "чудовим", і тепер я згадав про папір, краще? :) (Дякую за відгук, до речі.)
usεr11852 повідомляє Відновити Моніку

2
Просто заради історії: Бунк і Нільсен першими продемонстрували спосіб оновлення та зменшення рівня SVD. Насправді метод Бренду узагальнює методи цієї старої статті.
JM не є статистиком
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.