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

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-by- m матричная U большая. Однако большинство столбцов в U умножены на нули в Σ. В этой ситуации разложение размера экономики экономит и время и хранение, производя m <reservedrangesplaceholder5> <reservedrangesplaceholder4> , n <reservedrangesplaceholder2> <reservedrangesplaceholder1> и тем же 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 вычислить все сингулярные значения и сингулярные векторы не всегда практично. Например, если вам нужно знать всего несколько самых больших сингулярных значений, то вычисление всех сингулярных значений разреженной матрицы 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 становится необходимым.

См. также

| | |

Похожие темы