Что такое SVD (разложение по сингулярным числам) - PullRequest
33 голосов
/ 10 февраля 2009

Как это на самом деле уменьшает шум? Можете ли вы предложить несколько хороших уроков?

Ответы [ 5 ]

49 голосов
/ 10 февраля 2009

SVD можно понимать в геометрическом смысле для квадратных матриц как преобразование вектора.

Рассмотрим квадратную матрицу n x n, умножающую вектор v, чтобы получить выходной вектор w:

w = M*v

Разложение по сингулярному значению M является произведением трех матриц M=U*S*V, поэтому w=U*S*V*v. U и V - ортонормированные матрицы. С точки зрения геометрического преобразования (действующего на вектор путем его умножения) они представляют собой комбинации поворотов и отражений, которые не изменяют длину вектора, на который они умножаются. S - это диагональная матрица, которая представляет масштабирование или сжатие с различными коэффициентами масштабирования (диагональные члены) вдоль каждой из n осей.

Таким образом, эффект умножения влево вектора v на матрицу M заключается в повороте / отражении v на ортонормированный множитель M, затем масштабировании / сжатии результата на диагональный коэффициент S, а затем на повороте / отражении результата на ортонормированный множитель M фактор U.

Одной из причин, по которой SVD является желательным с числовой точки зрения, является то, что умножение на ортонормированные матрицы является обратимым и чрезвычайно стабильным (номер условия равен 1). SVD фиксирует любую плохо обусловленную матрицу диагонального масштабирования S.

18 голосов
/ 10 февраля 2009

Один из способов использовать SVD для уменьшения шума - это выполнить декомпозицию, установить компоненты, близкие к нулю, равными нулю, а затем заново составить.

Вот онлайн-учебник по SVD.

Возможно, вы захотите взглянуть на Числовые рецепты .

8 голосов
/ 11 мая 2010

Разложение по сингулярному значению - это метод для того, чтобы взять nxm-матрицу M и «разложить» ее на три матрицы, так что M = U S V. S - это диагональный квадрат (единственные ненулевые элементы находятся на диагонали от верхнего левого до нижнего правого угла), матрица, содержащая «особые значения» M. U и V ортогональны, что приводит к геометрическому пониманию SVD, но это не требуется для снижения шума.

При M = U S V у нас все еще есть исходная матрица M со всем ее неповрежденным шумом. Однако, если мы сохраняем только k наибольших сингулярных значений (что легко, поскольку многие алгоритмы SVD вычисляют разложение, в котором элементы S сортируются в неубывающем порядке), мы получаем приближение исходной матрицы. Это работает, потому что мы предполагаем, что малые значения являются шумом, и что более значимые шаблоны в данных будут выражаться через векторы, связанные с большими сингулярными значениями.

Фактически, полученное приближение является наиболее точным приближением ранга k исходной матрицы (имеет наименьшую квадратическую ошибку).

6 голосов
/ 25 июня 2009

Чтобы ответить на важный вопрос: SVD - это обобщение собственных значений / собственных векторов в неквадратные матрицы. Сказать, $ X \ in N \ times p $, то разложение X в SVD дает X = UDV ^ T, где D - диагональ, а U и V - ортогональные матрицы. Теперь X ^ TX - квадратная матрица, и разложение SVD X ^ TX = VD ^ 2V, где V эквивалентно собственным векторам X ^ TX, а D ^ 2 содержит собственные значения X ^ TX.

4 голосов
/ 21 мая 2010

SVD также может быть использован для значительного облегчения глобального (то есть для всех наблюдений одновременно) подбора произвольной модели (выраженной в формуле) к данным (относительно двух переменных и выраженных в матрице).
Например, матрица данных A = D * M T , где D представляет возможные состояния системы и M представляет его эволюцию относительно некоторой переменной (например, времени).
По SVD, A (x, y) = U (x) * S * V T ( y) и, следовательно, D * M T = U * S * V T
затем D = U * S * V T * M T + , где "+" обозначает псевдообратную.
Затем можно взять математическую модель для эволюции и подогнать ее к столбцам V , каждый из которых представляет собой линейную комбинацию компонентов модели (это легко, так как каждый столбец представляет собой одномерную кривую) , При этом получаются параметры модели, которые генерируют M ? (символ? Указывает, что он основан на подгонке).
M * M ? + * V = V ? , который допускает остатки R * S 2 = V - V ? должно быть минимизировано, определяя таким образом D и M .

Довольно круто, а?

Столбцы U и V также могут быть проверены для сбора информации о данных; Например, каждая точка перегиба в столбцах V обычно указывает на другой компонент модели.

Наконец, и на самом деле, обращаясь к вашему вопросу, важно отметить, что хотя каждое последующее единственное значение (элемент диагональной матрицы S ) с сопутствующими векторами U и V имеет более низкий сигнал / шум, разделение компонентов модели в этих «менее важных» векторах на самом деле более выражено. Другими словами, если данные описываются группой изменений состояния, которые следуют за суммой экспонент или чем-то еще, относительные веса каждой экспоненты сближаются в меньших единичных значениях. Другими словами, более поздние сингулярные значения имеют векторы, которые являются менее гладкими (шумнее), но в которых изменения, представленные каждым компонентом, являются более отличными .

...