Сингулярные значения

singular value и соответствующим singular vectors прямоугольного матричного A является, соответственно, скалярный σ и пара векторов u и v, которые удовлетворяют

Av=σuAHu=σv,

где AH Эрмитово, транспонируют A. Сингулярные векторы u и v обычно масштабируются, чтобы иметь норму 1. Кроме того, если u и v являются сингулярными векторами из A, то -u и -v являются сингулярными векторами из A также.

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

AV=UΣAHU=VΣ.

Поскольку U и V являются унитарными матрицами, умножая первое уравнение на VH на праве дает к уравнению сингулярного разложения

A=UΣVH.

Полное сингулярное разложение m-by-n матрица включает:

  • m-by-m матричный U

  • m-by-n матричный Σ

  • n-by-n матричный V

Другими словами, U и V являются и квадратом, и Σ одного размера с A. Если A имеет намного больше строк, чем столбцы (m > n), затем получившийся m- m матричный U является большим. Однако большинство столбцов в U умножается на нули в Σ. В этой ситуации разложение размера экономики экономит и время и устройство хранения данных путем создания m-by-n U, n-by-n Σ и тот же V:

In the economy-sized decomposition, columns in U can be ignored if they multiply zeros in the diagonal matrix of singular values.

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

Если A является квадратным, симметричным, и положительный определенный, то его собственное значение и сингулярные разложения являются тем же самым. Но, когда A вылетает от симметрии и положительной определенности, различия между этими двумя увеличениями разложений. В частности, сингулярное разложение действительной матрицы всегда действительно, но разложение собственного значения действительной, несимметричной матричной силы быть комплексным.

Для матрицы в качестве примера

A =
     9     4
     6     8
     2     7

полное сингулярное разложение

[U,S,V] = svd(A)

U =

    0.6105   -0.7174    0.3355
    0.6646    0.2336   -0.7098
    0.4308    0.6563    0.6194


S =

   14.9359         0
         0    5.1883
         0         0


V =

    0.6925   -0.7214
    0.7214    0.6925

Можно проверить тот U*S*V' равно A к в ошибке округления. Для этой небольшой проблемы разложение размера экономики незначительно меньше.

[U,S,V] = svd(A,0)

U =

    0.6105   -0.7174
    0.6646    0.2336
    0.4308    0.6563


S =

   14.9359         0
         0    5.1883


V =

    0.6925   -0.7214
    0.7214    0.6925

Снова, U*S*V' равно A к в ошибке округления.

Обработанное в пакетном режиме вычисление SVD

Если необходимо анализировать большое количество матриц, которые имеют тот же размер, это неэффективно, чтобы выполнить все разложения в цикле с svd. Вместо этого можно конкатенировать все матрицы в многомерный массив и использование pagesvd выполнять сингулярные разложения на всех страницах массивов с одним вызовом функции.

ФункцияИспользование
pagesvdИспользование pagesvd выполнять сингулярные разложения на страницах многомерного массива. Это - эффективный способ выполнить SVD на большом количестве матриц, что у всех есть тот же размер.

Например, рассмотрите набор трех матриц 2 на 2. Конкатенируйте матрицы в 2 2 3 массивами с cat функция.

A = [0 -1; 1 0];
B = [-1 0; 0 -1];
C = [0 1; -1 0];
X = cat(3,A,B,C);

Теперь используйте pagesvd одновременно выполнять эти три разложения.

[U,S,V] = pagesvd(X);

Для каждой страницы X, в выходных параметрах U существуют соответствующие страницыS, и V. Например, матричный A находится на первой странице X, и его разложение дано U(:,:,1)*S(:,:,1)*V(:,:,1)'.

Приближения низкого ранга SVD

Для больших разреженных матриц, с помощью svd вычислить все сингулярные значения и сингулярные векторы не всегда практично. Например, если необходимо знать, что всего несколько самых больших сингулярных значений, затем вычисляя все сингулярные значения 5000 5000 разреженной матрицы являются дополнительной работой.

В случаях, где только подмножество сингулярных значений и сингулярных векторов требуется, svds и svdsketch функции предпочтены svd.

ФункцияИспользование
svdsИспользование svds вычислить приближение ранга-k SVD. Можно задать, должно ли подмножество сингулярных значений быть самым большим, самым маленьким, или самым близким к определенному номеру. svds обычно вычисляет самое лучшее приближение ранга-k.
svdsketchИспользование svdsketch вычислить частичный SVD входной матрицы удовлетворение заданному допуску. В то время как svds требует, чтобы вы задали ранг, svdsketch адаптивно определяет ранг матричного эскиза на основе заданного допуска. Приближение ранга-k это svdsketch в конечном счете использование удовлетворяет допуску, но различающийся svds, это, как гарантируют, не будет лучшим возможным.

Например, рассмотрите случайную разреженную матрицу 1000 на 1000 с плотностью приблизительно 30%.

n = 1000;
A = sprand(n,n,0.3);

Шесть самых больших сингулярных значений

S = svds(A)

S =

  130.2184
   16.4358
   16.4119
   16.3688
   16.3242
   16.2838

Кроме того, шесть самых маленьких сингулярных значений

S = svds(A,6,'smallest')

S =

    0.0740
    0.0574
    0.0388
    0.0282
    0.0131
    0.0066

Для меньших матриц, которые могут уместиться в памяти как полная матрица, full(A), использование svd(full(A)) может все еще быть быстрее, чем svds или svdsketch. Однако для действительно большого и разреженных матриц, с помощью svds или svdsketch становится необходимым.

Смотрите также

| | | |

Похожие темы