Как найти svd разложение матрицы

Материал из MachineLearning.

Перейти к: навигация, поиск

Содержание

  • 1 Геометрический смысл SVD
  • 2 Пространства матрицы и SVD
  • 3 SVD и собственные числа матрицы
  • 4 SVD и норма матриц
  • 5 Нахождение псевдообратной матрицы с помощью SVD
  • 6 Метод наименьших квадратов и число обусловленности
  • 7 Усеченное SVD при обращении матриц
  • 8 Смотри также
  • 9 Литература

Сингулярное разложение (Singular Value Decomposition, SVD) —
декомпозиция вещественной матрицы с целью ее приведения к каноническому виду.
Сингулярное разложение является удобным методом при работе с матрицами.
Оно показывает геометрическую структуру матрицы и позволяет наглядно представить имеющиеся данные.
Сингулярное разложение используется при решении самых разных задач —
от приближения методом наименьших квадратов и решения систем уравнений
до сжатия изображений.
При этом используются разные свойства сингулярного разложения, например,
способность показывать ранг матрицы, приближать матрицы данного ранга.
SVD позволяет вычислять обратные и псевдообратные матрицы большого размера,
что делает его полезным инструментом при решении задач регрессионного анализа.

Для любой вещественной (ntimes n)-матрицы A существуют две вещественные
ортогональные (ntimes n)-матрицы U и V такие,
что U^T A V — диагональная матрица Lambda,

U^TAV=Lambda.

Матрицы U и V выбираются так, чтобы диагональные элементы матрицы Lambda имели вид

lambda_1 geq lambda_2 geq ... geq lambda_r > lambda_{r+1}=...=lambda_n=0,

где r — ранг матрицы A. В частности, если A невырождена,

то

lambda_1 geq lambda_2 geq ... geq lambda_n > 0.

Индекс r элемента lambda_r есть фактическая размерность собственного пространства матрицы  A.

Столбцы матриц U и V называются соответственно левыми и правыми сингулярными векторами, а значения диагонали матрицы Lambda называются сингулярными числами.

Эквивалентная запись сингулярного разложения — A=ULambda V^T.

Например, матрица

A = left(begin{matrix}0.96 & 1.72\2.28 & 0.96\ end{matrix}right)

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

A = ULambda V^T=left(begin{matrix}0.6 & 0.8\0.8 & -0.6\end{matrix}right)left(begin{matrix}3 & 0\0 & 1\end{matrix}right)left(begin{matrix}0.8 & -0.6\0.6 & 0.8\end{matrix}right)^T

Легко увидеть, что матрицы U и V ортогональны,

U^TU=UU^T=I, также V^TV=VV^T = I,

и сумма квадратов значений их столбцов равна единице.

Геометрический смысл SVD

Пусть матрице A поставлен в соответствие линейный оператор.
Cингулярное разложение можно переформулировать в геометрических терминах.
Линейный оператор, отображающий элементы пространства R^n в себя представим в виде последовательно выполняемых
линейных операторов вращения, растяжения и вращения.
Поэтому компоненты сингулярного разложения наглядно показывают
геометрические изменения при отображении линейным оператором A
множества векторов из векторного пространства в себя или в векторное пространство другой размерности.

Пространства матрицы и SVD

Сингулярное разложение позволяет найти ортогональные базисы
различных векторных пространств разлагаемой матрицы

A_{(ntimes n)} = U_{(ntimes n)} Lambda_{(ntimes n)} V_{(ntimes n)}^T.

Для прямоугольных матриц существует так называемое экономное представление сингулярного
разложения матрицы.

A_{(mtimes n)} = U_{(mtimes m)} Lambda_{(mtimes n)} V_{(ntimes n)}^T

Согласно этому представлению при m>n, диагональная
матрица Lambda имеет пустые строки (их элементы равны нулю), а при m<n — пустые
столбцы. Поэтому существует еще одно экономное представление

A_{(mtimes n)} = U_{(mtimes r)} Lambda_{(rtimes r)} V_{(rtimes n)}^T,

в котором r=min(m,n).

Нуль-пространство матрицы A — набор векторов mathbf{x}, для
которого справедливо высказывание Amathbf{x}=mathbf{0}. Собственное
пространство матрицы A — набор векторов mathbf b, при
котором уравнение Amathbf{x}=mathbf b имеет ненулевое решение
для mathbf{x}. Обозначим mathbf{u}k и mathbf{v}k — столбцы матриц U и V.
Тогда разложение A=ULambda V^T может быть записано в виде:
A=sum_{k=1}^rA_k, где A_k=mathbf{u}_klambda_k{mathbf{v}}_k^T. Если
сингулярное число lambda_k=0, то A{mathbf{v}}_k=mathbf{0} и
mathbf{v}_k находится в нуль-пространстве матрицы A, а если
сингулярное число lambda_kneq0, то вектор mathbf{u}_k находятся в
собственном пространстве матрицы A. Следовательно, можно
сконструировать базисы для различных векторных подпространств,
определенных матрицей A. Hабор
векторов mathbf{v}_1,ldots,mathbf{v}_k в векторном
пространстве V формирует базис для V, если любой
вектор mathbf{x} из V можно представить в виде линейной комбинации
векторов mathbf{v}_1,ldots,mathbf{v}_k единственным способом.
Пусть V_0 будет набором тех столбцов mathbf{v}k, для
которых lambda_kneq 0, а V_1 — все остальные
столбцы mathbf{v}k. Также, пусть U_0 будет набором столбцов mathbf{u}k,
для которых lambda_kneq 0, а U_1 — все остальные
столбцы mathbf{u}k, включая и те, для которых k>n. Тогда,
если r — количество ненулевых сингулярных чисел, то
имеется r столбцов в наборе V_0 и n-r столбцов в
наборе V_1 и U_1, а также m-n+r столбцов в наборе U_0.
Каждый из этих наборов формирует базис векторного пространства матрицы A:

SVD и собственные числа матрицы

Сингулярное разложение обладает свойством, которое связывает
задачу отыскания сингулярного разложения и задачу отыскания
собственных векторов. Собственный вектор mathbf{x} матрицы A —
такой вектор, при котором выполняется условие Amathbf{x}=lambdamathbf{x},
число lambda называется собственным числом. Так как матрицы U
и V ортогональные, то

begin{array}{c}AA^T=ULambda V^TVLambda U^T=ULambda^2 U^T,\A^TA=VLambda U^TULambda V^T=VLambda^2 V^T.\ end{array}

Умножая оба выражения справа соответственно на U и V получаем

begin{array}{c}AA^TU=ULambda^2,\A^TAV=VLambda^2.\end{array}

Из этого следует, что столбцы матрицы U являются собственными
векторами матрицы AA^T, а квадраты сингулярных чисел
Lambda=mbox{diag}(lambda_1,...,lambda_r) — ее собственными
числами.
Также столбцы матрицы V являются собственными векторами матрицы A^TA, а
квадраты сингулярных чисел являются ее собственными числами.

SVD и норма матриц

Рассмотрим изменение длины вектора mathbf{x} до и после его умножения
слева на матрицу A. Евклидова норма вектора определена как

|mathbf{x}|_E^2=mathbf{x}^Tmathbf{x}.

Если матрица A ортогональна, длина вектора Amathbf{x} остается неизменной. В противном
случае можно вычислить, насколько матрица A растянула
вектор mathbf{x}.

Евклидова норма матрицы есть максимальный коэффициент растяжения произвольного вектора mathbf{x} заданной матрицей A

|A|_E=maxlimits_{|mathbf{x}|=1}left(frac{|Amathbf{x}|}{|mathbf{x}|}right).

Альтернативой Евклидовой норме является норма Фробениуса:

|A|_F=sqrt{sum_{i=1}^msum_{j=1}^na_{ij}^2}.

Если известно сингулярное разложение, то обе эти нормы легко
вычислить. Пусть lambda_1,ldots,lambda_r — сингулярные числа матрицы A, отличные от нуля.
Тогда

|A|_E=lambda_1,

и

|A|_F=sqrt{sum_{k=1}^rlambda_k^2}.

Сингулярные числа матрицы A — это длины осей эллипсоида,
заданного множеством

left. {Amathbf{x}right||mathbf{x}|{_E}=1}.

Нахождение псевдообратной матрицы с помощью SVD

Если (mtimes n)-матрица A является вырожденной или
прямоугольной, то обратной матрицы A^{-1} для нее не существует.
Однако для A может быть найдена псевдообратная

матрица A^+ — такая матрица, для которой выполняются условия

begin{array}{l} A^+A=I_n,\ AA^+=I_m,\ A^+AA^+=A^+,\ AA^+A=A.\ end{array}

Пусть найдено разложение матрицы A вида

A=ULambda{V}^T,

где

Lambda=mbox{diag}(lambda_1,...,lambda_r), r=min(m,n) и
U^TU=I_m, VV^T=I_n.
Тогда матрица A^+=V^TLambda^{-1}U является для матрицы A
псевдообратной.
Действительно, A^+A=VLambda^{-1}U^TULambda{V}^T=I_n, AA^+=ULambda{V}^TVLambda^{-1}U^T=I_m.

Метод наименьших квадратов и число обусловленности

Задача наименьших квадратов ставится следующим образом. Даны
действительная (m{times}n)-матрица A и
действительный (m)-вектор Y. Требуется найти
действительный (n)-вектор mathbf{w}, минимизирующий Евклидову длину

вектора невязки,

|Y-Amathbf{w}|_Elongrightarrowmin.

Решение

задачи наименьших квадратов —

mathbf{w}=(A^TA)^{-1}(A^TY).

Для отыскания решения mathbf{w} требуется обратить матрицу A^TA.
Для квадратных матриц A число обусловленности ae(A) определено отношением

ae(A)=|A|_E|A^{-1}|_E.

Из формулы Евклидовой нормы матрицы и предыдущей формулы следует, что число обусловленности матрицы есть отношение ее первого сингулярного числа к последнему.

ae(A)=frac{lambda_1}{lambda_n}.

Следовательно, число обусловленности матрицы A^TA есть квадрат числа обусловленности матрицы A.
Это высказывание справедливо и для вырожденных матриц, если полагать число обусловленности как отношение
lambda_1/lambda_r, r — ранг матрицы A.
Поэтому для получения обращения, устойчивого к малым изменениям значений матрицы A, используется усеченное SVD.

Усеченное SVD при обращении матриц

Пусть матрица A представлена в виде A=ULambda{}V^T.
Тогда при нахождении обратной матрицы
A^+=VLambda^{-1}U^T в силу ортогональности матриц U и V и в силу условия убывания диагональных элементов
матрицы Lambda=mbox{diag}(lambda_1,...,lambda_n),
псевдообратная матрица A^+ будет более зависеть от тех элементов
матрицы Lambda, которые имеют меньшие значения, чем от первых
сингулярных чисел. Действительно, если матрица A имеет сингулярные числа
lambda_1geqlambda_2geq...geqlambda_n, то
сингулярные числа матрицы A^+ равны

Lambda^{-1}=mbox{diag}(frac{1}{lambda_1},...,frac{1}{lambda_n})

и

frac{1}{lambda_1}leqfrac{1}{lambda_2}...leqfrac{1}{lambda_n}.

Считая первые s сингулярных чисел определяющими собственное
пространство матрицы A, используем при обращении матрицы A
первые s сингулярных чисел, sleqmbox{rank}A. Тогда обратная матрица A^+ будет
найдена как A^+=VLambda^{-1}_sU^T.

Определим усеченную псевдообратную матрицу A_s^+ как

 A_s^+=VLambda^{-1}_sU^T,

где Lambda^{-1}_s=mbox{diag}(lambda_1^{-1},...,lambda_s^{-1},0,...,0) —
(ntimes{n})-диагональная матрица.

Смотри также

  • Метод главных компонент
  • Простой итерационный алгоритм сингулярного разложения
  • Регрессионный анализ
  • Интегральный индикатор
  • Согласование экспертных оценок

Литература

  • Голуб Дж., Ван-Лоун Ч. Матричные вычисления. М.: Мир. 1999.
  • Деммель Дж. Вычислительная линейная алгебра. URSS. 2001.
  • Логинов Н.В. Сингулярное разложение матриц. М.: МГАПИ. 1996.
  • Стренг Г. Линейная алгебра и ее применения. М.: Мир. 1980.
  • Форсайт Дж., Молер К. Численное решение систем линейных алгебраических уравнений. М.: Мир. 1969.
  • Хорн Р., Джонсон Ч. Матричный анализ. М.: Мир. 1989.
  • Vetterling W. T. Flannery B. P. Numerical Recipies in C: The Art of Scientific Computing. NY: Cambridge University Press. 1999.
  • Meltzer T. SVD and its Application to Generalized Eigenvalue Problems. 2004. 16 pages.

Illustration of the singular value decomposition UΣV of a real 2×2 matrix M.

  • Top: The action of M, indicated by its effect on the unit disc D and the two canonical unit vectors e1 and e2.
  • Left: The action of V, a rotation, on D, e1, and e2.
  • Bottom: The action of Σ, a scaling by the singular values σ1 horizontally and σ2 vertically.
  • Right: The action of U, another rotation.

In linear algebra, the singular value decomposition (SVD) is a factorization of a real or complex matrix. It generalizes the eigendecomposition of a square normal matrix with an orthonormal eigenbasis to any {displaystyle  mtimes n } matrix. It is related to the polar decomposition.

Specifically, the singular value decomposition of an {displaystyle  mtimes n } complex matrix M is a factorization of the form {displaystyle  mathbf {M} =mathbf {USigma V^{*}}  ,} where U is an {displaystyle  mtimes m } complex unitary matrix, {displaystyle  mathbf {Sigma }  } is an {displaystyle  mtimes n } rectangular diagonal matrix with non-negative real numbers on the diagonal, V is an ntimes n complex unitary matrix, and {displaystyle  mathbf {V^{*}}  } is the conjugate transpose of V. Such decomposition always exists for any complex matrix. If M is real, then U and V can be guaranteed to be real orthogonal matrices; in such contexts, the SVD is often denoted {displaystyle  mathbf {USigma V} ^{mathsf {T}} .}

The diagonal entries {displaystyle  sigma _{i}=Sigma _{ii} } of {displaystyle  mathbf {Sigma }  } are uniquely determined by M and are known as the singular values of M. The number of non-zero singular values is equal to the rank of M. The columns of U and the columns of V are called left-singular vectors and right-singular vectors of M, respectively. They form two sets of orthonormal bases u1, …, um and v1, …, vn , and if they are sorted so that the singular values {displaystyle  sigma _{i} } with value zero are all in the highest-numbered columns (or rows), the singular value decomposition can be written as {displaystyle  mathbf {M} =sum _{i=1}^{r}sigma _{i}mathbf {u} _{i}mathbf {v} _{i}^{*} ,} where {displaystyle  rleq min{m,n} } is the rank of M.

The SVD is not unique. It is always possible to choose the decomposition so that the singular values {displaystyle Sigma _{ii}} are in descending order. In this case, mathbf{Sigma} (but not U and V) is uniquely determined by M.

The term sometimes refers to the compact SVD, a similar decomposition {displaystyle  mathbf {M} =mathbf {USigma V^{*}}  } in which {displaystyle  mathbf {Sigma }  } is square diagonal of size r times r, where {displaystyle  rleq min{m,n} } is the rank of M, and has only the non-zero singular values. In this variant, U is an mtimes r semi-unitary matrix and {displaystyle  mathbf {V}  } is an ntimes r semi-unitary matrix, such that {displaystyle  mathbf {U^{*}U} =mathbf {V^{*}V} =mathbf {I} _{r} .}

Mathematical applications of the SVD include computing the pseudoinverse, matrix approximation, and determining the rank, range, and null space of a matrix. The SVD is also extremely useful in all areas of science, engineering, and statistics, such as signal processing, least squares fitting of data, and process control.

Intuitive interpretations[edit]

Animated illustration of the SVD of a 2D, real shearing matrix M. First, we see the unit disc in blue together with the two canonical unit vectors. We then see the actions of M, which distorts the disk to an ellipse. The SVD decomposes M into three simple transformations: an initial rotation V, a scaling mathbf{Sigma} along the coordinate axes, and a final rotation U. The lengths σ1 and σ2 of the semi-axes of the ellipse are the singular values of M, namely Σ1,1 and Σ2,2.

Visualization of the matrix multiplications in singular value decomposition

Rotation, coordinate scaling, and reflection[edit]

In the special case when M is an m × m real square matrix, the matrices U and V can be chosen to be real m × m matrices too. In that case, «unitary» is the same as «orthogonal». Then, interpreting both unitary matrices as well as the diagonal matrix, summarized here as A, as a linear transformation xAx of the space Rm, the matrices U and V represent rotations or reflection of the space, while mathbf{Sigma} represents the scaling of each coordinate xi by the factor σi. Thus the SVD decomposition breaks down any linear transformation of Rm into a composition of three geometrical transformations: a rotation or reflection (V), followed by a coordinate-by-coordinate scaling (mathbf{Sigma}), followed by another rotation or reflection (U).

In particular, if M has a positive determinant, then U and V can be chosen to be both rotations with reflections, or both rotations without reflections.[citation needed] If the determinant is negative, exactly one of them will have a reflection. If the determinant is zero, each can be independently chosen to be of either type.

If the matrix M is real but not square, namely m×n with mn, it can be interpreted as a linear transformation from Rn to Rm. Then U and V can be chosen to be rotations/reflections of Rm and Rn, respectively; and mathbf{Sigma}, besides scaling the first min{m,n} coordinates, also extends the vector with zeros, i.e. removes trailing coordinates, so as to turn Rn into Rm.

Singular values as semiaxes of an ellipse or ellipsoid[edit]

As shown in the figure, the singular values can be interpreted as the magnitude of the semiaxes of an ellipse in 2D. This concept can be generalized to n-dimensional Euclidean space, with the singular values of any n × n square matrix being viewed as the magnitude of the semiaxis of an n-dimensional ellipsoid. Similarly, the singular values of any m × n matrix can be viewed as the magnitude of the semiaxis of an n-dimensional ellipsoid in m-dimensional space, for example as an ellipse in a (tilted) 2D plane in a 3D space. Singular values encode magnitude of the semiaxis, while singular vectors encode direction. See below for further details.

The columns of U and V are orthonormal bases[edit]

Since U and V are unitary, the columns of each of them form a set of orthonormal vectors, which can be regarded as basis vectors. The matrix M maps the basis vector Vi to the stretched unit vector σi Ui. By the definition of a unitary matrix, the same is true for their conjugate transposes U and V, except the geometric interpretation of the singular values as stretches is lost. In short, the columns of U, U, V, and V are orthonormal bases. When mathbf {M} is a positive-semidefinite Hermitian matrix, U and V are both equal to the unitary matrix used to diagonalize mathbf {M} . However, when mathbf {M} is not positive-semidefinite and Hermitian but still diagonalizable, its eigendecomposition and singular value decomposition are distinct.

Geometric meaning[edit]

Because U and V are unitary, we know that the columns U1, …, Um of U yield an orthonormal basis of Km and the columns V1, …, Vn of V yield an orthonormal basis of Kn (with respect to the standard scalar products on these spaces).

The linear transformation

{displaystyle Tcolon left{{begin{aligned}K^{n}&to K^{m}\x&mapsto mathbf {M} xend{aligned}}right.}

has a particularly simple description with respect to these orthonormal bases: we have

{displaystyle T(mathbf {V} _{i})=sigma _{i}mathbf {U} _{i},qquad i=1,ldots ,min(m,n),}

where σi is the i-th diagonal entry of mathbf{Sigma}, and T(Vi) = 0 for i > min(m,n).

The geometric content of the SVD theorem can thus be summarized as follows: for every linear map T : KnKm one can find orthonormal bases of Kn and Km such that T maps the i-th basis vector of Kn to a non-negative multiple of the i-th basis vector of Km, and sends the left-over basis vectors to zero. With respect to these bases, the map T is therefore represented by a diagonal matrix with non-negative real diagonal entries.

To get a more visual flavor of singular values and SVD factorization – at least when working on real vector spaces – consider the sphere S of radius one in Rn. The linear map T maps this sphere onto an ellipsoid in Rm. Non-zero singular values are simply the lengths of the semi-axes of this ellipsoid. Especially when n = m, and all the singular values are distinct and non-zero, the SVD of the linear map T can be easily analyzed as a succession of three consecutive moves: consider the ellipsoid T(S) and specifically its axes; then consider the directions in Rn sent by T onto these axes. These directions happen to be mutually orthogonal. Apply first an isometry V sending these directions to the coordinate axes of Rn. On a second move, apply an endomorphism D diagonalized along the coordinate axes and stretching or shrinking in each direction, using the semi-axes lengths of T(S) as stretching coefficients. The composition DV then sends the unit-sphere onto an ellipsoid isometric to T(S). To define the third and last move, apply an isometry U to this ellipsoid to obtain T(S). As can be easily checked, the composition UDV coincides with T.

Example[edit]

Consider the 4 × 5 matrix

mathbf {M} ={begin{bmatrix}1&0&0&0&2\0&0&3&0&0\0&0&0&0&0\0&2&0&0&0end{bmatrix}}

A singular value decomposition of this matrix is given by UΣV

{displaystyle {begin{aligned}mathbf {U} &={begin{bmatrix}color {Green}0&color {Blue}-1&color {Cyan}0&color {Emerald}0\color {Green}-1&color {Blue}0&color {Cyan}0&color {Emerald}0\color {Green}0&color {Blue}0&color {Cyan}0&color {Emerald}-1\color {Green}0&color {Blue}0&color {Cyan}-1&color {Emerald}0end{bmatrix}}\[6pt]{boldsymbol {Sigma }}&={begin{bmatrix}3&0&0&0&color {Gray}{mathit {0}}\0&{sqrt {5}}&0&0&color {Gray}{mathit {0}}\0&0&2&0&color {Gray}{mathit {0}}\0&0&0&color {Red}mathbf {0} &color {Gray}{mathit {0}}end{bmatrix}}\[6pt]mathbf {V} ^{*}&={begin{bmatrix}color {Violet}0&color {Violet}0&color {Violet}-1&color {Violet}0&color {Violet}0\color {Plum}-{sqrt {0.2}}&color {Plum}0&color {Plum}0&color {Plum}0&color {Plum}-{sqrt {0.8}}\color {Magenta}0&color {Magenta}-1&color {Magenta}0&color {Magenta}0&color {Magenta}0\color {Orchid}0&color {Orchid}0&color {Orchid}0&color {Orchid}1&color {Orchid}0\color {Purple}-{sqrt {0.8}}&color {Purple}0&color {Purple}0&color {Purple}0&color {Purple}{sqrt {0.2}}end{bmatrix}}end{aligned}}}

The scaling matrix mathbf{Sigma} is zero outside of the diagonal (grey italics) and one diagonal element is zero (red bold, light blue bold in dark mode). Furthermore, because the matrices U and V are unitary, multiplying by their respective conjugate transposes yields identity matrices, as shown below. In this case, because U and V are real valued, each is an orthogonal matrix.

{displaystyle {begin{aligned}mathbf {U} mathbf {U} ^{*}&={begin{bmatrix}1&0&0&0\0&1&0&0\0&0&1&0\0&0&0&1end{bmatrix}}=mathbf {I} _{4}\[6pt]mathbf {V} mathbf {V} ^{*}&={begin{bmatrix}1&0&0&0&0\0&1&0&0&0\0&0&1&0&0\0&0&0&1&0\0&0&0&0&1end{bmatrix}}=mathbf {I} _{5}end{aligned}}}

This particular singular value decomposition is not unique. Choosing {mathbf  V} such that

{displaystyle mathbf {V} ^{*}={begin{bmatrix}color {Violet}0&color {Violet}1&color {Violet}0&color {Violet}0&color {Violet}0\color {Plum}0&color {Plum}0&color {Plum}1&color {Plum}0&color {Plum}0\color {Magenta}{sqrt {0.2}}&color {Magenta}0&color {Magenta}0&color {Magenta}0&color {Magenta}{sqrt {0.8}}\color {Orchid}{sqrt {0.4}}&color {Orchid}0&color {Orchid}0&color {Orchid}{sqrt {0.5}}&color {Orchid}-{sqrt {0.1}}\color {Purple}-{sqrt {0.4}}&color {Purple}0&color {Purple}0&color {Purple}{sqrt {0.5}}&color {Purple}{sqrt {0.1}}end{bmatrix}}}

is also a valid singular value decomposition.

SVD and spectral decomposition[edit]

Singular values, singular vectors, and their relation to the SVD[edit]

A non-negative real number σ is a singular value for M if and only if there exist unit-length vectors mathbf {u} in Km and mathbf {v} in Kn such that

{displaystyle mathbf {Mv} =sigma mathbf {u} ,{text{ and }}mathbf {M} ^{*}mathbf {u} =sigma mathbf {v} .}

The vectors mathbf {u} and mathbf {v} are called left-singular and right-singular vectors for σ, respectively.

In any singular value decomposition

mathbf {M} =mathbf {U} {boldsymbol {Sigma }}mathbf {V} ^{*}

the diagonal entries of mathbf{Sigma} are equal to the singular values of M. The first p = min(m, n) columns of U and V are, respectively, left- and right-singular vectors for the corresponding singular values. Consequently, the above theorem implies that:

  • An m × n matrix M has at most p distinct singular values.
  • It is always possible to find a unitary basis U for Km with a subset of basis vectors spanning the left-singular vectors of each singular value of M.
  • It is always possible to find a unitary basis V for Kn with a subset of basis vectors spanning the right-singular vectors of each singular value of M.

A singular value for which we can find two left (or right) singular vectors that are linearly independent is called degenerate. If {mathbf  {u}}_{1} and {displaystyle mathbf {u} _{2}} are two left-singular vectors which both correspond to the singular value σ, then any normalized linear combination of the two vectors is also a left-singular vector corresponding to the singular value σ. The similar statement is true for right-singular vectors. The number of independent left and right-singular vectors coincides, and these singular vectors appear in the same columns of U and V corresponding to diagonal elements of mathbf{Sigma} all with the same value σ.

As an exception, the left and right-singular vectors of singular value 0 comprise all unit vectors in the cokernel and kernel, respectively, of M, which by the rank–nullity theorem cannot be the same dimension if mn. Even if all singular values are nonzero, if m > n then the cokernel is nontrivial, in which case U is padded with mn orthogonal vectors from the cokernel. Conversely, if m < n, then V is padded by nm orthogonal vectors from the kernel. However, if the singular value of 0 exists, the extra columns of U or V already appear as left or right-singular vectors.

Non-degenerate singular values always have unique left- and right-singular vectors, up to multiplication by a unit-phase factor eiφ (for the real case up to a sign). Consequently, if all singular values of a square matrix M are non-degenerate and non-zero, then its singular value decomposition is unique, up to multiplication of a column of U by a unit-phase factor and simultaneous multiplication of the corresponding column of V by the same unit-phase factor.
In general, the SVD is unique up to arbitrary unitary transformations applied uniformly to the column vectors of both U and V spanning the subspaces of each singular value, and up to arbitrary unitary transformations on vectors of U and V spanning the kernel and cokernel, respectively, of M.

Relation to eigenvalue decomposition[edit]

The singular value decomposition is very general in the sense that it can be applied to any m × n matrix, whereas eigenvalue decomposition can only be applied to diagonalizable matrices. Nevertheless, the two decompositions are related.

Given an SVD of M, as described above, the following two relations hold:

{begin{aligned}mathbf {M} ^{*}mathbf {M} &=mathbf {V} {boldsymbol {Sigma }}^{*}mathbf {U} ^{*},mathbf {U} {boldsymbol {Sigma }}mathbf {V} ^{*}=mathbf {V} ({boldsymbol {Sigma }}^{*}{boldsymbol {Sigma }})mathbf {V} ^{*}\mathbf {M} mathbf {M} ^{*}&=mathbf {U} {boldsymbol {Sigma }}mathbf {V} ^{*},mathbf {V} {boldsymbol {Sigma }}^{*}mathbf {U} ^{*}=mathbf {U} ({boldsymbol {Sigma }}{boldsymbol {Sigma }}^{*})mathbf {U} ^{*}end{aligned}}

The right-hand sides of these relations describe the eigenvalue decompositions of the left-hand sides. Consequently:

  • The columns of V (right-singular vectors) are eigenvectors of MM.
  • The columns of U (left-singular vectors) are eigenvectors of MM.
  • The non-zero elements of mathbf{Sigma} (non-zero singular values) are the square roots of the non-zero eigenvalues of MM or MM.

In the special case that M is a normal matrix, which by definition must be square, the spectral theorem says that it can be unitarily diagonalized using a basis of eigenvectors, so that it can be written M = UDU for a unitary matrix U and a diagonal matrix D with complex elements σi along the diagonal. When M is positive semi-definite, σi will be non-negative real numbers so that the decomposition M = UDU is also a singular value decomposition. Otherwise, it can be recast as an SVD by moving the phase e of each σi to either its corresponding Vi or Ui. The natural connection of the SVD to non-normal matrices is through the polar decomposition theorem: M = SR, where S = UΣU is positive semidefinite and normal, and R = UV is unitary.

Thus, except for positive semi-definite matrices, the eigenvalue decomposition and SVD of M, while related, differ: the eigenvalue decomposition is M = UDU−1, where U is not necessarily unitary and D is not necessarily positive semi-definite, while the SVD is M = UΣV, where mathbf{Sigma} is diagonal and positive semi-definite, and U and V are unitary matrices that are not necessarily related except through the matrix M. While only non-defective square matrices have an eigenvalue decomposition, any mtimes n matrix has a SVD.

Applications of the SVD[edit]

Pseudoinverse[edit]

The singular value decomposition can be used for computing the pseudoinverse of a matrix. (Various authors use different notation for the pseudoinverse; here we use .) Indeed, the pseudoinverse of the matrix M with singular value decomposition M = UΣV is

M = V Σ U

where Σ is the pseudoinverse of Σ, which is formed by replacing every non-zero diagonal entry by its reciprocal and transposing the resulting matrix. The pseudoinverse is one way to solve linear least squares problems.

Solving homogeneous linear equations[edit]

A set of homogeneous linear equations can be written as Ax = 0 for a matrix A and vector x. A typical situation is that A is known and a non-zero x is to be determined which satisfies the equation. Such an x belongs to A‘s null space and is sometimes called a (right) null vector of A. The vector x can be characterized as a right-singular vector corresponding to a singular value of A that is zero. This observation means that if A is a square matrix and has no vanishing singular value, the equation has no non-zero x as a solution. It also means that if there are several vanishing singular values, any linear combination of the corresponding right-singular vectors is a valid solution. Analogously to the definition of a (right) null vector, a non-zero x satisfying xA = 0, with x denoting the conjugate transpose of x, is called a left null vector of A.

Total least squares minimization[edit]

A total least squares problem seeks the vector x that minimizes the 2-norm of a vector Ax under the constraint ||x|| = 1. The solution turns out to be the right-singular vector of A corresponding to the smallest singular value.

Range, null space and rank[edit]

Another application of the SVD is that it provides an explicit representation of the range and null space of a matrix M. The right-singular vectors corresponding to vanishing singular values of M span the null space of M and the left-singular vectors corresponding to the non-zero singular values of M span the range of M. For example, in the above example the null space is spanned by the last two rows of V and the range is spanned by the first three columns of U.

As a consequence, the rank of M equals the number of non-zero singular values which is the same as the number of non-zero diagonal elements in mathbf{Sigma}. In numerical linear algebra the singular values can be used to determine the effective rank of a matrix, as rounding error may lead to small but non-zero singular values in a rank deficient matrix. Singular values beyond a significant gap are assumed to be numerically equivalent to zero.

Low-rank matrix approximation[edit]

Some practical applications need to solve the problem of approximating a matrix M with another matrix {tilde {mathbf {M} }}, said to be truncated, which has a specific rank r. In the case that the approximation is based on minimizing the Frobenius norm of the difference between M and {tilde {mathbf {M} }} under the constraint that operatorname {rank} left({tilde {mathbf {M} }}right)=r, it turns out that the solution is given by the SVD of M, namely

{displaystyle {tilde {mathbf {M} }}=mathbf {U} {tilde {boldsymbol {Sigma }}}mathbf {V} ^{*},}

where {tilde {boldsymbol {Sigma }}} is the same matrix as mathbf{Sigma} except that it contains only the r largest singular values (the other singular values are replaced by zero). This is known as the Eckart–Young theorem, as it was proved by those two authors in 1936 (although it was later found to have been known to earlier authors; see Stewart 1993).

Separable models[edit]

The SVD can be thought of as decomposing a matrix into a weighted, ordered sum of separable matrices. By separable, we mean that a matrix A can be written as an outer product of two vectors A = uv, or, in coordinates, A_{ij}=u_{i}v_{j}. Specifically, the matrix M can be decomposed as

{displaystyle mathbf {M} =sum _{i}mathbf {A} _{i}=sum _{i}sigma _{i}mathbf {U} _{i}otimes mathbf {V} _{i}.}

Here Ui and Vi are the i-th columns of the corresponding SVD matrices, σi are the ordered singular values, and each Ai is separable. The SVD can be used to find the decomposition of an image processing filter into separable horizontal and vertical filters. Note that the number of non-zero σi is exactly the rank of the matrix.

Separable models often arise in biological systems, and the SVD factorization is useful to analyze such systems. For example, some visual area V1 simple cells’ receptive fields can be well described[1] by a Gabor filter in the space domain multiplied by a modulation function in the time domain. Thus, given a linear filter evaluated through, for example, reverse correlation, one can rearrange the two spatial dimensions into one dimension, thus yielding a two-dimensional filter (space, time) which can be decomposed through SVD. The first column of U in the SVD factorization is then a Gabor while the first column of V represents the time modulation (or vice versa). One may then define an index of separability

alpha ={frac {sigma _{1}^{2}}{sum _{i}sigma _{i}^{2}}},

which is the fraction of the power in the matrix M which is accounted for by the first separable matrix in the decomposition.[2]

Nearest orthogonal matrix[edit]

It is possible to use the SVD of a square matrix A to determine the orthogonal matrix O closest to A. The closeness of fit is measured by the Frobenius norm of OA. The solution is the product UV.[3] This intuitively makes sense because an orthogonal matrix would have the decomposition UIV where I is the identity matrix, so that if A = UΣV then the product A = UV amounts to replacing the singular values with ones. Equivalently, the solution is the unitary matrix R = UV of the Polar Decomposition M = RP = PR in either order of stretch and rotation, as described above.

A similar problem, with interesting applications in shape analysis, is the orthogonal Procrustes problem, which consists of finding an orthogonal matrix O which most closely maps A to B. Specifically,

{displaystyle mathbf {O} ={underset {Omega }{operatorname {argmin} }}|mathbf {A} {boldsymbol {Omega }}-mathbf {B} |_{F}quad {text{subject to}}quad {boldsymbol {Omega }}^{textsf {T}}{boldsymbol {Omega }}=mathbf {I} ,}

where |cdot |_{F} denotes the Frobenius norm.

This problem is equivalent to finding the nearest orthogonal matrix to a given matrix M = ATB.

The Kabsch algorithm[edit]

The Kabsch algorithm (called Wahba’s problem in other fields) uses SVD to compute the optimal rotation (with respect to least-squares minimization) that will align a set of points with a corresponding set of points. It is used, among other applications, to compare the structures of molecules.

Signal processing[edit]

The SVD and pseudoinverse have been successfully applied to signal processing,[4] image processing[5] and big data (e.g., in genomic signal processing).[6][7][8][9]

Astrodynamics[edit]

In Astrodynamics, the SVD and its variants are used as an option to determine suitable maneuver directions for transfer trajectory design[10] and Orbital station-keeping.[11]

Other examples[edit]

The SVD is also applied extensively to the study of linear inverse problems and is useful in the analysis of regularization methods such as that of Tikhonov. It is widely used in statistics, where it is related to principal component analysis and to correspondence analysis, and in signal processing and pattern recognition. It is also used in output-only modal analysis, where the non-scaled mode shapes can be determined from the singular vectors. Yet another usage is latent semantic indexing in natural-language text processing.

In general numerical computation involving linear or linearized systems, there is a universal constant that characterizes the regularity or singularity of a problem, which is the system’s «condition number» {displaystyle kappa :=sigma _{text{max}}/sigma _{text{min}}}. It often controls the error rate or convergence rate of a given computational scheme on such systems.[12][13]

The SVD also plays a crucial role in the field of quantum information, in a form often referred to as the Schmidt decomposition. Through it, states of two quantum systems are naturally decomposed, providing a necessary and sufficient condition for them to be entangled: if the rank of the mathbf{Sigma} matrix is larger than one.

One application of SVD to rather large matrices is in numerical weather prediction, where Lanczos methods are used to estimate the most linearly quickly growing few perturbations to the central numerical weather prediction over a given initial forward time period; i.e., the singular vectors corresponding to the largest singular values of the linearized propagator for the global weather over that time interval. The output singular vectors in this case are entire weather systems. These perturbations are then run through the full nonlinear model to generate an ensemble forecast, giving a handle on some of the uncertainty that should be allowed for around the current central prediction.

SVD has also been applied to reduced order modelling. The aim of reduced order modelling is to reduce the number of degrees of freedom in a complex system which is to be modeled. SVD was coupled with radial basis functions to interpolate solutions to three-dimensional unsteady flow problems.[14]

Interestingly, SVD has been used to improve gravitational waveform modeling by the ground-based gravitational-wave interferometer aLIGO.[15] SVD can help to increase the accuracy and speed of waveform generation to support gravitational-waves searches and update two different waveform models.

Singular value decomposition is used in recommender systems to predict people’s item ratings.[16] Distributed algorithms have been developed for the purpose of calculating the SVD on clusters of commodity machines.[17]

Low-rank SVD has been applied for hotspot detection from spatiotemporal data with application to disease outbreak detection.[18] A combination of SVD and higher-order SVD also has been applied for real time event detection from complex data streams (multivariate data with space and time dimensions) in disease surveillance.[19]

Proof of existence[edit]

An eigenvalue λ of a matrix M is characterized by the algebraic relation Mu = λu. When M is Hermitian, a variational characterization is also available. Let M be a real n × n symmetric matrix. Define

{displaystyle {begin{cases}f:mathbb {R} ^{n}to mathbb {R} \f:mathbf {x} mapsto mathbf {x} ^{textsf {T}}mathbf {M} mathbf {x} end{cases}}}

By the extreme value theorem, this continuous function attains a maximum at some u when restricted to the unit sphere {||x|| = 1}. By the Lagrange multipliers theorem, u necessarily satisfies

{displaystyle nabla mathbf {u} ^{textsf {T}}mathbf {M} mathbf {u} -lambda cdot nabla mathbf {u} ^{textsf {T}}mathbf {u} =0}

for some real number λ. The nabla symbol, , is the del operator (differentiation with respect to x). Using the symmetry of M we obtain

{displaystyle nabla mathbf {x} ^{textsf {T}}mathbf {M} mathbf {x} -lambda cdot nabla mathbf {x} ^{textsf {T}}mathbf {x} =2(mathbf {M} -lambda mathbf {I} )mathbf {x} .}

Therefore Mu = λu, so u is a unit length eigenvector of M. For every unit length eigenvector v of M its eigenvalue is f(v), so λ is the largest eigenvalue of M. The same calculation performed on the orthogonal complement of u gives the next largest eigenvalue and so on. The complex Hermitian case is similar; there f(x) = x* M x is a real-valued function of 2n real variables.

Singular values are similar in that they can be described algebraically or from variational principles. Although, unlike the eigenvalue case, Hermiticity, or symmetry, of M is no longer required.

This section gives these two arguments for existence of singular value decomposition.

Based on the spectral theorem[edit]

Let mathbf {M} be an m × n complex matrix. Since {displaystyle mathbf {M} ^{*}mathbf {M} } is positive semi-definite and Hermitian, by the spectral theorem, there exists an n × n unitary matrix mathbf {V} such that

{displaystyle mathbf {V} ^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} ={bar {mathbf {D} }}={begin{bmatrix}mathbf {D} &0\0&0end{bmatrix}},}

where mathbf{D} is diagonal and positive definite, of dimension {displaystyle ell times ell }, with ell the number of non-zero eigenvalues of {displaystyle mathbf {M} ^{*}mathbf {M} } (which can be shown to verify {displaystyle ell leq min(n,m)}). Note that mathbf {V} is here by definition a matrix whose i-th column is the i-th eigenvector of {displaystyle mathbf {M} ^{*}mathbf {M} }, corresponding to the eigenvalue {displaystyle {bar {mathbf {D} }}_{ii}}. Moreover, the j-th column of mathbf {V} , for {displaystyle j>ell }, is an eigenvector of {displaystyle mathbf {M} ^{*}mathbf {M} } with eigenvalue {displaystyle {bar {mathbf {D} }}_{jj}=0}. This can be expressed by writing mathbf {V} as {displaystyle mathbf {V} ={begin{bmatrix}mathbf {V} _{1}&mathbf {V} _{2}end{bmatrix}}}, where the columns of {displaystyle mathbf {V} _{1}} and {displaystyle mathbf {V} _{2}} therefore contain the eigenvectors of {displaystyle mathbf {M} ^{*}mathbf {M} } corresponding to non-zero and zero eigenvalues, respectively. Using this rewriting of mathbf {V} , the equation becomes:

{displaystyle {begin{bmatrix}mathbf {V} _{1}^{*}\mathbf {V} _{2}^{*}end{bmatrix}}mathbf {M} ^{*}mathbf {M} {begin{bmatrix}mathbf {V} _{1}&mathbf {V} _{2}end{bmatrix}}={begin{bmatrix}mathbf {V} _{1}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{1}&mathbf {V} _{1}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{2}\mathbf {V} _{2}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{1}&mathbf {V} _{2}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{2}end{bmatrix}}={begin{bmatrix}mathbf {D} &0\0&0end{bmatrix}}.}

This implies that

{displaystyle mathbf {V} _{1}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{1}=mathbf {D} ,quad mathbf {V} _{2}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{2}=mathbf {0} .}

Moreover, the second equation implies {displaystyle mathbf {M} mathbf {V} _{2}=mathbf {0} }.[20] Finally, the unitary-ness of mathbf {V} translates, in terms of {displaystyle mathbf {V} _{1}} and {displaystyle mathbf {V} _{2}}, into the following conditions:

{displaystyle {begin{aligned}mathbf {V} _{1}^{*}mathbf {V} _{1}&=mathbf {I} _{1},\mathbf {V} _{2}^{*}mathbf {V} _{2}&=mathbf {I} _{2},\mathbf {V} _{1}mathbf {V} _{1}^{*}+mathbf {V} _{2}mathbf {V} _{2}^{*}&=mathbf {I} _{12},end{aligned}}}

where the subscripts on the identity matrices are used to remark that they are of different dimensions.

Let us now define

{displaystyle mathbf {U} _{1}=mathbf {M} mathbf {V} _{1}mathbf {D} ^{-{frac {1}{2}}}.}

Then,

{displaystyle mathbf {U} _{1}mathbf {D} ^{frac {1}{2}}mathbf {V} _{1}^{*}=mathbf {M} mathbf {V} _{1}mathbf {D} ^{-{frac {1}{2}}}mathbf {D} ^{frac {1}{2}}mathbf {V} _{1}^{*}=mathbf {M} (mathbf {I} -mathbf {V} _{2}mathbf {V} _{2}^{*})=mathbf {M} -(mathbf {M} mathbf {V} _{2})mathbf {V} _{2}^{*}=mathbf {M} ,}

since {displaystyle mathbf {M} mathbf {V} _{2}=mathbf {0} .} This can be also seen as immediate consequence of the fact that {displaystyle mathbf {M} mathbf {V} _{1}mathbf {V} _{1}^{*}=mathbf {M} }. This is equivalent to the observation that if {displaystyle {{boldsymbol {v}}_{i}}_{i=1}^{ell }} is the set of eigenvectors of {displaystyle mathbf {M} ^{*}mathbf {M} } corresponding to non-vanishing eigenvalues {displaystyle {lambda _{i}}_{i=1}^{ell }}, then {displaystyle {mathbf {M} {boldsymbol {v}}_{i}}_{i=1}^{ell }} is a set of orthogonal vectors, and {displaystyle {lambda _{i}^{-1/2}mathbf {M} {boldsymbol {v}}_{i}}_{i=1}^{ell }} is a (generally not complete) set of orthonormal vectors. This matches with the matrix formalism used above denoting with {displaystyle mathbf {V} _{1}} the matrix whose columns are {displaystyle {{boldsymbol {v}}_{i}}_{i=1}^{ell }}, with {displaystyle mathbf {V} _{2}} the matrix whose columns are the eigenvectors of {displaystyle mathbf {M} ^{*}mathbf {M} } with vanishing eigenvalue, and {displaystyle mathbf {U} _{1}} the matrix whose columns are the vectors {displaystyle {lambda _{i}^{-1/2}mathbf {M} {boldsymbol {v}}_{i}}_{i=1}^{ell }}.

We see that this is almost the desired result, except that {displaystyle mathbf {U} _{1}} and {displaystyle mathbf {V} _{1}} are in general not unitary, since they might not be square. However, we do know that the number of rows of {displaystyle mathbf {U} _{1}} is no smaller than the number of columns, since the dimensions of mathbf{D} is no greater than m and n. Also, since

{displaystyle mathbf {U} _{1}^{*}mathbf {U} _{1}=mathbf {D} ^{-{frac {1}{2}}}mathbf {V} _{1}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{1}mathbf {D} ^{-{frac {1}{2}}}=mathbf {D} ^{-{frac {1}{2}}}mathbf {D} mathbf {D} ^{-{frac {1}{2}}}=mathbf {I_{1}} ,}

the columns in {displaystyle mathbf {U} _{1}} are orthonormal and can be extended to an orthonormal basis. This means that we can choose {displaystyle mathbf {U} _{2}} such that mathbf {U} ={begin{bmatrix}mathbf {U} _{1}&mathbf {U} _{2}end{bmatrix}} is unitary.

For V1 we already have V2 to make it unitary. Now, define

{displaystyle {boldsymbol {Sigma }}={begin{bmatrix}{begin{bmatrix}mathbf {D} ^{frac {1}{2}}&0\0&0end{bmatrix}}\0end{bmatrix}},}

where extra zero rows are added or removed to make the number of zero rows equal the number of columns of U2, and hence the overall dimensions of boldsymbol{Sigma} equal to mtimes n. Then

{displaystyle {begin{bmatrix}mathbf {U} _{1}&mathbf {U} _{2}end{bmatrix}}{begin{bmatrix}{begin{bmatrix}mathbf {} D^{frac {1}{2}}&0\0&0end{bmatrix}}\0end{bmatrix}}{begin{bmatrix}mathbf {V} _{1}&mathbf {V} _{2}end{bmatrix}}^{*}={begin{bmatrix}mathbf {U} _{1}&mathbf {U} _{2}end{bmatrix}}{begin{bmatrix}mathbf {D} ^{frac {1}{2}}mathbf {V} _{1}^{*}\0end{bmatrix}}=mathbf {U} _{1}mathbf {D} ^{frac {1}{2}}mathbf {V} _{1}^{*}=mathbf {M} ,}

which is the desired result:

{displaystyle mathbf {M} =mathbf {U} {boldsymbol {Sigma }}mathbf {V} ^{*}.}

Notice the argument could begin with diagonalizing MM rather than MM (This shows directly that MM and MM have the same non-zero eigenvalues).

Based on variational characterization[edit]

The singular values can also be characterized as the maxima of uTMv, considered as a function of u and v, over particular subspaces. The singular vectors are the values of u and v where these maxima are attained.

Let M denote an m × n matrix with real entries. Let Sk−1 be the unit (k-1)-sphere in {displaystyle mathbb {R} ^{k}}, and define {displaystyle sigma (mathbf {u} ,mathbf {v} )=mathbf {u} ^{textsf {T}}mathbf {M} mathbf {v} , mathbf {u} in S^{m-1},mathbf {v} in S^{n-1}.}

Consider the function σ restricted to Sm−1 × Sn−1. Since both Sm−1 and Sn−1 are compact sets, their product is also compact. Furthermore, since σ is continuous, it attains a largest value for at least one pair of vectors uSm−1 and vSn−1. This largest value is denoted σ1 and the corresponding vectors are denoted u1 and v1. Since σ1 is the largest value of σ(u, v) it must be non-negative. If it were negative, changing the sign of either u1 or v1 would make it positive and therefore larger.

Statement. u1, v1 are left and right-singular vectors of M with corresponding singular value σ1.

Proof. Similar to the eigenvalues case, by assumption the two vectors satisfy the Lagrange multiplier equation:

{displaystyle nabla sigma =nabla mathbf {u} ^{textsf {T}}mathbf {M} mathbf {v} -lambda _{1}cdot nabla mathbf {u} ^{textsf {T}}mathbf {u} -lambda _{2}cdot nabla mathbf {v} ^{textsf {T}}mathbf {v} }

After some algebra, this becomes

{displaystyle {begin{aligned}mathbf {M} mathbf {v} _{1}&=2lambda _{1}mathbf {u} _{1}+0\mathbf {M} ^{textsf {T}}mathbf {u} _{1}&=0+2lambda _{2}mathbf {v} _{1}end{aligned}}}

Multiplying the first equation from left by {displaystyle mathbf {u} _{1}^{textsf {T}}} and the second equation from left by {displaystyle mathbf {v} _{1}^{textsf {T}}} and taking ||u|| = ||v|| = 1 into account gives

sigma _{1}=2lambda _{1}=2lambda _{2}.

Plugging this into the pair of equations above, we have

{displaystyle {begin{aligned}mathbf {M} mathbf {v} _{1}&=sigma _{1}mathbf {u} _{1}\mathbf {M} ^{textsf {T}}mathbf {u} _{1}&=sigma _{1}mathbf {v} _{1}end{aligned}}}

This proves the statement.

More singular vectors and singular values can be found by maximizing σ(u, v) over normalized u, v which are orthogonal to u1 and v1, respectively.

The passage from real to complex is similar to the eigenvalue case.

Calculating the SVD[edit]

The singular value decomposition can be computed using the following observations:

  • The left-singular vectors of M are a set of orthonormal eigenvectors of MM.
  • The right-singular vectors of M are a set of orthonormal eigenvectors of MM.
  • The non-zero singular values of M (found on the diagonal entries of mathbf{Sigma}) are the square roots of the non-zero eigenvalues of both MM and MM.

Numerical approach[edit]

The SVD of a matrix M is typically computed by a two-step procedure. In the first step, the matrix is reduced to a bidiagonal matrix. This takes O(mn2) floating-point operations (flop), assuming that mn. The second step is to compute the SVD of the bidiagonal matrix. This step can only be done with an iterative method (as with eigenvalue algorithms). However, in practice it suffices to compute the SVD up to a certain precision, like the machine epsilon. If this precision is considered constant, then the second step takes O(n) iterations, each costing O(n) flops. Thus, the first step is more expensive, and the overall cost is O(mn2) flops (Trefethen & Bau III 1997, Lecture 31).

The first step can be done using Householder reflections for a cost of 4mn2 − 4n3/3 flops, assuming that only the singular values are needed and not the singular vectors. If m is much larger than n then it is advantageous to first reduce the matrix M to a triangular matrix with the QR decomposition and then use Householder reflections to further reduce the matrix to bidiagonal form; the combined cost is 2mn2 + 2n3 flops (Trefethen & Bau III 1997, Lecture 31).

The second step can be done by a variant of the QR algorithm for the computation of eigenvalues, which was first described by Golub & Kahan (1965). The LAPACK subroutine DBDSQR[21] implements this iterative method, with some modifications to cover the case where the singular values are very small (Demmel & Kahan 1990). Together with a first step using Householder reflections and, if appropriate, QR decomposition, this forms the DGESVD[22] routine for the computation of the singular value decomposition.

The same algorithm is implemented in the GNU Scientific Library (GSL). The GSL also offers an alternative method that uses a one-sided Jacobi orthogonalization in step 2 (GSL Team 2007). This method computes the SVD of the bidiagonal matrix by solving a sequence of 2 × 2 SVD problems, similar to how the Jacobi eigenvalue algorithm solves a sequence of 2 × 2 eigenvalue methods (Golub & Van Loan 1996, §8.6.3). Yet another method for step 2 uses the idea of divide-and-conquer eigenvalue algorithms (Trefethen & Bau III 1997, Lecture 31).

There is an alternative way that does not explicitly use the eigenvalue decomposition.[23] Usually the singular value problem of a matrix M is converted into an equivalent symmetric eigenvalue problem such as M M, MM, or

{displaystyle {begin{bmatrix}mathbf {O} &mathbf {M} \mathbf {M} ^{*}&mathbf {O} end{bmatrix}}.}

The approaches that use eigenvalue decompositions are based on the QR algorithm, which is well-developed to be stable and fast.
Note that the singular values are real and right- and left- singular vectors are not required to form similarity transformations. One can iteratively alternate between the QR decomposition and the LQ decomposition to find the real diagonal Hermitian matrices. The QR decomposition gives MQ R and the LQ decomposition of R gives RL P. Thus, at every iteration, we have MQ L P, update ML and repeat the orthogonalizations. Eventually,[clarification needed] this iteration between QR decomposition and LQ decomposition produces left- and right- unitary singular matrices. This approach cannot readily be accelerated, as the QR algorithm can with spectral shifts or deflation. This is because the shift method is not easily defined without using similarity transformations. However, this iterative approach is very simple to implement, so is a good choice when speed does not matter. This method also provides insight into how purely orthogonal/unitary transformations can obtain the SVD.

Analytic result of 2 × 2 SVD[edit]

The singular values of a 2 × 2 matrix can be found analytically. Let the matrix be
mathbf {M} =z_{0}mathbf {I} +z_{1}sigma _{1}+z_{2}sigma _{2}+z_{3}sigma _{3}

where z_{i}in mathbb {C} are complex numbers that parameterize the matrix, I is the identity matrix, and sigma _{i} denote the Pauli matrices. Then its two singular values are given by

{displaystyle {begin{aligned}sigma _{pm }&={sqrt {|z_{0}|^{2}+|z_{1}|^{2}+|z_{2}|^{2}+|z_{3}|^{2}pm {sqrt {(|z_{0}|^{2}+|z_{1}|^{2}+|z_{2}|^{2}+|z_{3}|^{2})^{2}-|z_{0}^{2}-z_{1}^{2}-z_{2}^{2}-z_{3}^{2}|^{2}}}}}\&={sqrt {|z_{0}|^{2}+|z_{1}|^{2}+|z_{2}|^{2}+|z_{3}|^{2}pm 2{sqrt {(operatorname {Re} z_{0}z_{1}^{*})^{2}+(operatorname {Re} z_{0}z_{2}^{*})^{2}+(operatorname {Re} z_{0}z_{3}^{*})^{2}+(operatorname {Im} z_{1}z_{2}^{*})^{2}+(operatorname {Im} z_{2}z_{3}^{*})^{2}+(operatorname {Im} z_{3}z_{1}^{*})^{2}}}}}end{aligned}}}

Reduced SVDs[edit]

Visualization of Reduced SVD variants. From top to bottom: 1: Full SVD, 2: Thin SVD (remove columns of U not corresponding to rows of V*), 3: Compact SVD (remove vanishing singular values and corresponding columns/rows in U and V*), 4: Truncated SVD (keep only largest t singular values and corresponding columns/rows in U and V*)

In applications it is quite unusual for the full SVD, including a full unitary decomposition of the null-space of the matrix, to be required. Instead, it is often sufficient (as well as faster, and more economical for storage) to compute a reduced version of the SVD. The following can be distinguished for an m×n matrix M of rank r:

Thin SVD[edit]

The thin, or economy-sized, SVD of a matrix M is given by[24]

{displaystyle mathbf {M} =mathbf {U} _{k}{boldsymbol {Sigma }}_{k}mathbf {V} _{k}^{*},}

where

{displaystyle k=operatorname {min} (m,n)},

the matrices Uk and Vk contain only the first k columns of U and V, and Σk contains only the first k singular values from Σ. The matrix Uk is thus m×k, Σk is k×k diagonal, and Vk* is k×n.

The thin SVD uses significantly less space and computation time if k ≪ max(m, n). The first stage in its calculation will usually be a QR decomposition of M, which can make for a significantly quicker calculation in this case.

Compact SVD[edit]

mathbf {M} =mathbf {U} _{r}{boldsymbol {Sigma }}_{r}mathbf {V} _{r}^{*}

Only the r column vectors of U and r row vectors of V* corresponding to the non-zero singular values Σr are calculated. The remaining vectors of U and V* are not calculated. This is quicker and more economical than the thin SVD if r ≪ min(m, n). The matrix Ur is thus m×r, Σr is r×r diagonal, and Vr* is r×n.

Truncated SVD[edit]

In many applications the number r of the non-zero singular values is large making even the Compact SVD impractical to compute. In such cases, the smallest singular values may need to be truncated to compute only t ≪ r non-zero singular values. The truncated SVD is no longer an exact decomposition of the original matrix M, but rather provides the optimal low-rank matrix approximation {tilde {mathbf {M} }} by any matrix of a fixed rank t

{tilde {mathbf {M} }}=mathbf {U} _{t}{boldsymbol {Sigma }}_{t}mathbf {V} _{t}^{*},

where matrix Ut is m×t, Σt is t×t diagonal, and Vt* is t×n.
Only the t column vectors of U and t row vectors of V* corresponding to the t largest singular values Σt are calculated. This can be much quicker and more economical than the compact SVD if tr, but requires a completely different toolset of numerical solvers.

In applications that require an approximation to the Moore–Penrose inverse of the matrix M, the smallest singular values of M are of interest, which are more challenging to compute compared to the largest ones.

Truncated SVD is employed in latent semantic indexing.[25]

Norms[edit]

Ky Fan norms[edit]

The sum of the k largest singular values of M is a matrix norm, the Ky Fan k-norm of M.[26]

The first of the Ky Fan norms, the Ky Fan 1-norm, is the same as the operator norm of M as a linear operator with respect to the Euclidean norms of Km and Kn. In other words, the Ky Fan 1-norm is the operator norm induced by the standard 2 Euclidean inner product. For this reason, it is also called the operator 2-norm. One can easily verify the relationship between the Ky Fan 1-norm and singular values. It is true in general, for a bounded operator M on (possibly infinite-dimensional) Hilbert spaces

|mathbf {M} |=|mathbf {M} ^{*}mathbf {M} |^{frac {1}{2}}

But, in the matrix case, (M* M)1/2 is a normal matrix, so ||M* M||1/2 is the largest eigenvalue of (M* M)1/2, i.e. the largest singular value of M.

The last of the Ky Fan norms, the sum of all singular values, is the trace norm (also known as the ‘nuclear norm’), defined by ||M|| = Tr[(M* M)1/2] (the eigenvalues of M* M are the squares of the singular values).

Hilbert–Schmidt norm[edit]

The singular values are related to another norm on the space of operators. Consider the Hilbert–Schmidt inner product on the n × n matrices, defined by

{displaystyle langle mathbf {M} ,mathbf {N} rangle =operatorname {tr} left(mathbf {N} ^{*}mathbf {M} right).}

So the induced norm is

{displaystyle |mathbf {M} |={sqrt {langle mathbf {M} ,mathbf {M} rangle }}={sqrt {operatorname {tr} left(mathbf {M} ^{*}mathbf {M} right)}}.}

Since the trace is invariant under unitary equivalence, this shows

|mathbf {M} |={sqrt {sum _{i}sigma _{i}^{2}}}

where σi are the singular values of M. This is called the Frobenius norm, Schatten 2-norm, or Hilbert–Schmidt norm of M. Direct calculation shows that the Frobenius norm of M = (mij) coincides with:

{sqrt {sum _{ij}|m_{ij}|^{2}}}.

In addition, the Frobenius norm and the trace norm (the nuclear norm) are special cases of the Schatten norm.

Variations and generalizations[edit]

Scale-invariant SVD[edit]

The singular values of a matrix A are uniquely defined and are invariant with respect to left and/or right unitary transformations of A. In other words, the singular values of UAV, for unitary U and V, are equal to the singular values of A. This is an important property for applications in which it is necessary to preserve Euclidean distances and invariance with respect to rotations.

The Scale-Invariant SVD, or SI-SVD,[27] is analogous to the conventional SVD except that its uniquely-determined singular values are invariant with respect to diagonal transformations of A. In other words, the singular values of DAE, for invertible diagonal matrices D and E, are equal to the singular values of A. This is an important property for applications for which invariance to the choice of units on variables (e.g., metric versus imperial units) is needed.

Bounded operators on Hilbert spaces[edit]

The factorization M = UΣV can be extended to a bounded operator M on a separable Hilbert space H. Namely, for any bounded operator M, there exist a partial isometry U, a unitary V, a measure space (Xμ), and a non-negative measurable f such that

mathbf {M} =mathbf {U} T_{f}mathbf {V} ^{*}

where T_{f} is the multiplication by f on L2(X, μ).

This can be shown by mimicking the linear algebraic argument for the matricial case above. VTfV* is the unique positive square root of M*M, as given by the Borel functional calculus for self-adjoint operators. The reason why U need not be unitary is because, unlike the finite-dimensional case, given an isometry U1 with nontrivial kernel, a suitable U2 may not be found such that

{begin{bmatrix}U_{1}\U_{2}end{bmatrix}}

is a unitary operator.

As for matrices, the singular value factorization is equivalent to the polar decomposition for operators: we can simply write

mathbf {M} =mathbf {U} mathbf {V} ^{*}cdot mathbf {V} T_{f}mathbf {V} ^{*}

and notice that U V* is still a partial isometry while VTfV* is positive.

Singular values and compact operators[edit]

The notion of singular values and left/right-singular vectors can be extended to compact operator on Hilbert space as they have a discrete spectrum. If T is compact, every non-zero λ in its spectrum is an eigenvalue. Furthermore, a compact self-adjoint operator can be diagonalized by its eigenvectors. If M is compact, so is MM. Applying the diagonalization result, the unitary image of its positive square root Tf  has a set of orthonormal eigenvectors {ei} corresponding to strictly positive eigenvalues {σi}. For any ψH,

{displaystyle mathbf {M} psi =mathbf {U} T_{f}mathbf {V} ^{*}psi =sum _{i}leftlangle mathbf {U} T_{f}mathbf {V} ^{*}psi ,mathbf {U} e_{i}rightrangle mathbf {U} e_{i}=sum _{i}sigma _{i}leftlangle psi ,mathbf {V} e_{i}rightrangle mathbf {U} e_{i},}

where the series converges in the norm topology on H. Notice how this resembles the expression from the finite-dimensional case. σi are called the singular values of M. {Uei} (resp. {Vei}) can be considered the left-singular (resp. right-singular) vectors of M.

Compact operators on a Hilbert space are the closure of finite-rank operators in the uniform operator topology. The above series expression gives an explicit such representation. An immediate consequence of this is:

Theorem. M is compact if and only if MM is compact.

History[edit]

The singular value decomposition was originally developed by differential geometers, who wished to determine whether a real bilinear form could be made equal to another by independent orthogonal transformations of the two spaces it acts on. Eugenio Beltrami and Camille Jordan discovered independently, in 1873 and 1874 respectively, that the singular values of the bilinear forms, represented as a matrix, form a complete set of invariants for bilinear forms under orthogonal substitutions. James Joseph Sylvester also arrived at the singular value decomposition for real square matrices in 1889, apparently independently of both Beltrami and Jordan. Sylvester called the singular values the canonical multipliers of the matrix A. The fourth mathematician to discover the singular value decomposition independently is Autonne in 1915, who arrived at it via the polar decomposition. The first proof of the singular value decomposition for rectangular and complex matrices seems to be by Carl Eckart and Gale J. Young in 1936;[28] they saw it as a generalization of the principal axis transformation for Hermitian matrices.

In 1907, Erhard Schmidt defined an analog of singular values for integral operators (which are compact, under some weak technical assumptions); it seems he was unaware of the parallel work on singular values of finite matrices. This theory was further developed by Émile Picard in 1910, who is the first to call the numbers sigma _{k} singular values (or in French, valeurs singulières).

Practical methods for computing the SVD date back to Kogbetliantz in 1954–1955 and Hestenes in 1958,[29] resembling closely the Jacobi eigenvalue algorithm, which uses plane rotations or Givens rotations. However, these were replaced by the method of Gene Golub and William Kahan published in 1965,[30] which uses Householder transformations or reflections. In 1970, Golub and Christian Reinsch[31] published a variant of the Golub/Kahan algorithm that is still the one most-used today.

See also[edit]

  • Canonical correlation
  • Canonical form
  • Correspondence analysis (CA)
  • Curse of dimensionality
  • Digital signal processing
  • Dimensionality reduction
  • Eigendecomposition of a matrix
  • Empirical orthogonal functions (EOFs)
  • Fourier analysis
  • Generalized singular value decomposition
  • Inequalities about singular values
  • K-SVD
  • Latent semantic analysis
  • Latent semantic indexing
  • Linear least squares
  • List of Fourier-related transforms
  • Locality-sensitive hashing
  • Low-rank approximation
  • Matrix decomposition
  • Multilinear principal component analysis (MPCA)
  • Nearest neighbor search
  • Non-linear iterative partial least squares
  • Polar decomposition
  • Principal component analysis (PCA)
  • Schmidt decomposition
  • Smith normal form
  • Singular value
  • Time series
  • Two-dimensional singular-value decomposition (2DSVD)
  • von Neumann’s trace inequality
  • Wavelet compression

Notes[edit]

  1. ^ DeAngelis, G. C.; Ohzawa, I.; Freeman, R. D. (October 1995). «Receptive-field dynamics in the central visual pathways». Trends Neurosci. 18 (10): 451–8. doi:10.1016/0166-2236(95)94496-R. PMID 8545912. S2CID 12827601.
  2. ^ Depireux, D. A.; Simon, J. Z.; Klein, D. J.; Shamma, S. A. (March 2001). «Spectro-temporal response field characterization with dynamic ripples in ferret primary auditory cortex». J. Neurophysiol. 85 (3): 1220–34. doi:10.1152/jn.2001.85.3.1220. PMID 11247991.
  3. ^ The Singular Value Decomposition in Symmetric (Lowdin) Orthogonalization and Data Compression
  4. ^ Sahidullah, Md.; Kinnunen, Tomi (March 2016). «Local spectral variability features for speaker verification». Digital Signal Processing. 50: 1–11. doi:10.1016/j.dsp.2015.10.011.
  5. ^ Mademlis, Ioannis; Tefas, Anastasios; Pitas, Ioannis (2018). Regularized SVD-based video frame saliency for unsupervised activity video summarization. ieeexplore.ieee.org. IEEE. pp. 2691–2695. doi:10.1109/ICASSP.2018.8462274. ISBN 978-1-5386-4658-8. S2CID 52286352. Retrieved 19 January 2023.
  6. ^
    O. Alter, P. O. Brown and D. Botstein (September 2000). «Singular Value Decomposition for Genome-Wide Expression Data Processing and Modeling». PNAS. 97 (18): 10101–10106. Bibcode:2000PNAS…9710101A. doi:10.1073/pnas.97.18.10101. PMC 27718. PMID 10963673.
  7. ^ O. Alter; G. H. Golub (November 2004). «Integrative Analysis of Genome-Scale Data by Using Pseudoinverse Projection Predicts Novel Correlation Between DNA Replication and RNA Transcription». PNAS. 101 (47): 16577–16582. Bibcode:2004PNAS..10116577A. doi:10.1073/pnas.0406767101. PMC 534520. PMID 15545604.
  8. ^ O. Alter; G. H. Golub (August 2006). «Singular Value Decomposition of Genome-Scale mRNA Lengths Distribution Reveals Asymmetry in RNA Gel Electrophoresis Band Broadening». PNAS. 103 (32): 11828–11833. Bibcode:2006PNAS..10311828A. doi:10.1073/pnas.0604756103. PMC 1524674. PMID 16877539.
  9. ^ Bertagnolli, N. M.; Drake, J. A.; Tennessen, J. M.; Alter, O. (November 2013). «SVD Identifies Transcript Length Distribution Functions from DNA Microarray Data and Reveals Evolutionary Forces Globally Affecting GBM Metabolism». PLOS ONE. 8 (11): e78913. Bibcode:2013PLoSO…878913B. doi:10.1371/journal.pone.0078913. PMC 3839928. PMID 24282503. Highlight.
  10. ^ Muralidharan, Vivek; Howell, Kathleen (2023). «Stretching directions in cislunar space: Applications for departures and transfer design». Astrodynamics. 7 (2): 153–178. Bibcode:2023AsDyn…7..153M. doi:10.1007/s42064-022-0147-z.
  11. ^ Muralidharan, Vivek; Howell, Kathleen (2022). «Leveraging stretching directions for stationkeeping in Earth-Moon halo orbits». Advances in Space Research. 69 (1): 620–646. Bibcode:2022AdSpR..69..620M. doi:10.1016/j.asr.2021.10.028.
  12. ^ Edelman, Alan (1992). «On the distribution of a scaled condition number» (PDF). Math. Comp. 58 (197): 185–190. Bibcode:1992MaCom..58..185E. doi:10.1090/S0025-5718-1992-1106966-2.
  13. ^ Shen, Jianhong (Jackie) (2001). «On the singular values of Gaussian random matrices». Linear Alg. Appl. 326 (1–3): 1–14. doi:10.1016/S0024-3795(00)00322-0.
  14. ^ Walton, S.; Hassan, O.; Morgan, K. (2013). «Reduced order modelling for unsteady fluid flow using proper orthogonal decomposition and radial basis functions». Applied Mathematical Modelling. 37 (20–21): 8930–8945. doi:10.1016/j.apm.2013.04.025.
  15. ^ Setyawati, Y.; Ohme, F.; Khan, S. (2019). «Enhancing gravitational waveform model through dynamic calibration». Physical Review D. 99 (2): 024010. arXiv:1810.07060. Bibcode:2019PhRvD..99b4010S. doi:10.1103/PhysRevD.99.024010. S2CID 118935941.
  16. ^ Sarwar, Badrul; Karypis, George; Konstan, Joseph A. & Riedl, John T. (2000). «Application of Dimensionality Reduction in Recommender System – A Case Study» (PDF). University of Minnesota.
  17. ^ Bosagh Zadeh, Reza; Carlsson, Gunnar (2013). «Dimension Independent Matrix Square Using MapReduce» (PDF). arXiv:1304.1467. Bibcode:2013arXiv1304.1467B.
  18. ^ Hadi Fanaee Tork; João Gama (September 2014). «Eigenspace method for spatiotemporal hotspot detection». Expert Systems. 32 (3): 454–464. arXiv:1406.3506. Bibcode:2014arXiv1406.3506F. doi:10.1111/exsy.12088. S2CID 15476557.
  19. ^ Hadi Fanaee Tork; João Gama (May 2015). «EigenEvent: An Algorithm for Event Detection from Complex Data Streams in Syndromic Surveillance». Intelligent Data Analysis. 19 (3): 597–616. arXiv:1406.3496. doi:10.3233/IDA-150734. S2CID 17966555.
  20. ^ To see this, we just have to notice that {displaystyle operatorname {Tr} (mathbf {V} _{2}^{*}mathbf {M} ^{*}mathbf {M} mathbf {V} _{2})=|mathbf {M} mathbf {V} _{2}|^{2}}, and remember that {displaystyle |A|=0Leftrightarrow A=0}.
  21. ^ Netlib.org
  22. ^ Netlib.org
  23. ^ mathworks.co.kr/matlabcentral/fileexchange/12674-simple-svd
  24. ^
    Demmel, James (2000). «Decompositions». Templates for the Solution of Algebraic Eigenvalue Problems. By Bai, Zhaojun; Demmel, James; Dongarra, Jack J.; Ruhe, Axel; van der Vorst, Henk A. Society for Industrial and Applied Mathematics. doi:10.1137/1.9780898719581. ISBN 978-0-89871-471-5.
  25. ^ Chicco, D; Masseroli, M (2015). «Software suite for gene and protein annotation prediction and similarity search». IEEE/ACM Transactions on Computational Biology and Bioinformatics. 12 (4): 837–843. doi:10.1109/TCBB.2014.2382127. hdl:11311/959408. PMID 26357324. S2CID 14714823.
  26. ^ Fan, Ky. (1951). «Maximum properties and inequalities for the eigenvalues of completely continuous operators». Proceedings of the National Academy of Sciences of the United States of America. 37 (11): 760–766. Bibcode:1951PNAS…37..760F. doi:10.1073/pnas.37.11.760. PMC 1063464. PMID 16578416.
  27. ^ Uhlmann, Jeffrey (2018), A Generalized Matrix Inverse that is Consistent with Respect to Diagonal Transformations (PDF), SIAM Journal on Matrix Analysis, vol. 239:2, pp. 781–800
  28. ^ Eckart, C.; Young, G. (1936). «The approximation of one matrix by another of lower rank». Psychometrika. 1 (3): 211–8. doi:10.1007/BF02288367. S2CID 10163399.
  29. ^ Hestenes, M. R. (1958). «Inversion of Matrices by Biorthogonalization and Related Results». Journal of the Society for Industrial and Applied Mathematics. 6 (1): 51–90. doi:10.1137/0106005. JSTOR 2098862. MR 0092215.
  30. ^ (Golub & Kahan 1965)
  31. ^ Golub, G. H.; Reinsch, C. (1970). «Singular value decomposition and least squares solutions». Numerische Mathematik. 14 (5): 403–420. doi:10.1007/BF02163027. MR 1553974. S2CID 123532178.

References[edit]

  • Banerjee, Sudipto; Roy, Anindya (2014), Linear Algebra and Matrix Analysis for Statistics, Texts in Statistical Science (1st ed.), Chapman and Hall/CRC, ISBN 978-1420095388
  • Chicco, D; Masseroli, M (2015). «Software suite for gene and protein annotation prediction and similarity search». IEEE/ACM Transactions on Computational Biology and Bioinformatics. 12 (4): 837–843. doi:10.1109/TCBB.2014.2382127. hdl:11311/959408. PMID 26357324. S2CID 14714823.
  • Trefethen, Lloyd N.; Bau III, David (1997). Numerical linear algebra. Philadelphia: Society for Industrial and Applied Mathematics. ISBN 978-0-89871-361-9.
  • Demmel, James; Kahan, William (1990). «Accurate singular values of bidiagonal matrices». SIAM Journal on Scientific and Statistical Computing. 11 (5): 873–912. CiteSeerX 10.1.1.48.3740. doi:10.1137/0911052.
  • Golub, Gene H.; Kahan, William (1965). «Calculating the singular values and pseudo-inverse of a matrix». Journal of the Society for Industrial and Applied Mathematics, Series B: Numerical Analysis. 2 (2): 205–224. Bibcode:1965SJNA….2..205G. doi:10.1137/0702016. JSTOR 2949777.
  • Golub, Gene H.; Van Loan, Charles F. (1996). Matrix Computations (3rd ed.). Johns Hopkins. ISBN 978-0-8018-5414-9.
  • GSL Team (2007). «§14.4 Singular Value Decomposition». GNU Scientific Library. Reference Manual.
  • Halldor, Bjornsson and Venegas, Silvia A. (1997). «A manual for EOF and SVD analyses of climate data». McGill University, CCGCR Report No. 97-1, Montréal, Québec, 52pp.
  • Hansen, P. C. (1987). «The truncated SVD as a method for regularization». BIT. 27 (4): 534–553. doi:10.1007/BF01937276. S2CID 37591557.
  • Horn, Roger A.; Johnson, Charles R. (1985). «Section 7.3». Matrix Analysis. Cambridge University Press. ISBN 978-0-521-38632-6.
  • Horn, Roger A.; Johnson, Charles R. (1991). «Chapter 3». Topics in Matrix Analysis. Cambridge University Press. ISBN 978-0-521-46713-1.
  • Samet, H. (2006). Foundations of Multidimensional and Metric Data Structures. Morgan Kaufmann. ISBN 978-0-12-369446-1.
  • Strang G. (1998). «Section 6.7». Introduction to Linear Algebra (3rd ed.). Wellesley-Cambridge Press. ISBN 978-0-9614088-5-5.
  • Stewart, G. W. (1993). «On the Early History of the Singular Value Decomposition». SIAM Review. 35 (4): 551–566. CiteSeerX 10.1.1.23.1831. doi:10.1137/1035134. hdl:1903/566. JSTOR 2132388.
  • Wall, Michael E.; Rechtsteiner, Andreas; Rocha, Luis M. (2003). «Singular value decomposition and principal component analysis». In D.P. Berrar; W. Dubitzky; M. Granzow (eds.). A Practical Approach to Microarray Data Analysis. Norwell, MA: Kluwer. pp. 91–109.
  • Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), «Section 2.6», Numerical Recipes: The Art of Scientific Computing (3rd ed.), New York: Cambridge University Press, ISBN 978-0-521-88068-8

External links[edit]

  • Online SVD calculator

Нежное введение в разложение по сингулярным числам для машинного обучения


  Перевод


  Ссылка на автора

Матричная декомпозиция, также известная как матричная факторизация, включает описание данной матрицы с использованием ее составляющих элементов.

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

В этом уроке вы обнаружите метод разложения по сингулярным значениям для разложения матрицы на составляющие ее элементы.

После завершения этого урока вы узнаете:

  • Что такое разложение по сингулярному значению и что в нем участвует.
  • Как рассчитать SVD и восстановить прямоугольную и квадратную матрицу из элементов SVD.
  • Как рассчитать псевдообратное и выполнить уменьшение размерности, используя SVD.

Давайте начнем.

  • Обновление март / 2018: Исправлена ​​опечатка в реконструкции. Для ясности изменено V в коде на VT. Исправлена ​​опечатка в псевдообратном уравнении.

Обзор учебника

Этот урок состоит из 5 частей; они есть:

  1. Разложение по сингулярному значению
  2. Рассчитать разложение по сингулярному значению
  3. Восстановить Матрицу из СВД
  4. СВД для псевдообратного
  5. SVD для уменьшения размерности

Разложение по сингулярному значению

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

Для случая простоты мы сосредоточимся на SVD для вещественных матриц и проигнорируем случай для комплексных чисел.

A = U . Sigma . V^T

Где A — действительная матрица mxn, которую мы хотим разложить, U — матрица mxm, Sigma (часто представляемая заглавной греческой буквой Sigma) — диагональная матрица mxn, а V ^ T — транспонирование матрицы nxn, где T верхний индекс.

Разложение по сингулярным значениям является основным моментом линейной алгебры.

— страница 371, Введение в линейную алгебру, Пятое издание, 2016.

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

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

Разложение по сингулярным значениям (SVD) предоставляет еще один способ разложить матрицу на сингулярные векторы и сингулярные значения. SVD позволяет нам обнаруживать некоторую информацию того же вида, что и собственное разложение. Тем не менее, SVD является более общим.

— страницы 44-45, Глубокое обучение, 2016

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

Декомпозиция сингулярных значений (SVD) имеет множество применений в статистике, машинном обучении и информатике. Нанесение SVD на матрицу похоже на рентгеновское зрение …

— Страница 297, Руководство по линейной алгебре, 2017

Рассчитать разложение по сингулярному значению

SVD можно рассчитать, вызвав функцию svd ().

Функция принимает матрицу и возвращает элементы U, Sigma и V ^ T. Диагональная матрица Сигмы возвращается как вектор сингулярных значений. Матрица V возвращается в транспонированной форме, например, Электронная лампа

В приведенном ниже примере определяется матрица 3 × 2 и вычисляется разложение по сингулярному значению.

# Singular-value decomposition
from numpy import array
from scipy.linalg import svd
# define a matrix
A = array([[1, 2], [3, 4], [5, 6]])
print(A)
# SVD
U, s, VT = svd(A)
print(U)
print(s)
print(VT)

При выполнении примера сначала печатается определенная матрица 3 × 2, затем матрица 3 × 3 U, вектор Sigma с 2 элементами и матричные элементы 2 × 2 V ^ T, вычисленные из разложения.

[[1 2]
 [3 4]
 [5 6]]

[[-0.2298477   0.88346102  0.40824829]
 [-0.52474482  0.24078249 -0.81649658]
 [-0.81964194 -0.40189603  0.40824829]]

[ 9.52551809  0.51430058]

[[-0.61962948 -0.78489445]
 [-0.78489445  0.61962948]]

Восстановить Матрицу из СВД

Исходная матрица может быть восстановлена ​​из элементов U, Sigma и V ^ T.

Элементы U, s и V, возвращаемые из svd (), не могут быть умножены напрямую.

Вектор s должен быть преобразован в диагональную матрицу с помощью функции diag (). По умолчанию эта функция создаст квадратную матрицу размером m x m относительно нашей исходной матрицы. Это вызывает проблему, поскольку размеры матриц не соответствуют правилам умножения матриц, где число столбцов в матрице должно соответствовать количеству строк в последующей матрице.

После создания квадратной диагональной матрицы Сигмы размеры матриц соответствуют исходной матрице m x n, которую мы разлагаем, следующим образом:

U (m x m) . Sigma (m x m) . V^T (n x n)

Где, на самом деле, мы требуем:

U (m x m) . Sigma (m x n) . V^T (n x n)

Мы можем достичь этого путем создания новой сигма-матрицы со всеми нулевыми значениями, которая равна m x n (например, больше строк), и заполнить первую n x n часть матрицы квадратной диагональной матрицей, вычисленной с помощью diag ().

# Reconstruct SVD
from numpy import array
from numpy import diag
from numpy import dot
from numpy import zeros
from scipy.linalg import svd
# define a matrix
A = array([[1, 2], [3, 4], [5, 6]])
print(A)
# Singular-value decomposition
U, s, VT = svd(A)
# create m x n Sigma matrix
Sigma = zeros((A.shape[0], A.shape[1]))
# populate Sigma with n x n diagonal matrix
Sigma[:A.shape[1], :A.shape[1]] = diag(s)
# reconstruct matrix
B = U.dot(Sigma.dot(VT))
print(B)

При выполнении примера сначала печатается исходная матрица, а затем матрица, восстановленная из элементов SVD.

[[1 2]
 [3 4]
 [5 6]]

[[ 1.  2.]
 [ 3.  4.]
 [ 5.  6.]]

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

# Reconstruct SVD
from numpy import array
from numpy import diag
from numpy import dot
from scipy.linalg import svd
# define a matrix
A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(A)
# Singular-value decomposition
U, s, VT = svd(A)
# create n x n Sigma matrix
Sigma = diag(s)
# reconstruct matrix
B = U.dot(Sigma.dot(VT))
print(B)

При выполнении примера печатается исходная матрица 3 × 3 и версия, восстановленная непосредственно из элементов SVD.

[[1 2 3]
 [4 5 6]
 [7 8 9]]

[[ 1.  2.  3.]
 [ 4.  5.  6.]
 [ 7.  8.  9.]]

СВД для псевдообратного

Псевдообращение — это обобщение обратной матрицы для квадратных матриц на прямоугольные матрицы, где число строк и столбцов не равно.

Он также называется инверсией Мура-Пенроуза после двух независимых исследователей метода или Обобщенной инверсией.

Инверсия матриц не определена для матриц, которые не являются квадратными. […] Когда A имеет больше столбцов, чем строк, то решение линейного уравнения с использованием псевдообратного представления дает одно из многих возможных решений.

— страница 46, Глубокое обучение, 2016

Псевдообращение обозначается как A ^ +, где A — это инвертируемая матрица, а + — верхний индекс.

Псевдообращение вычисляется с использованием сингулярного разложения A:

A^+ = V . D^+ . U^T

Или без точечной записи:

A^+ = VD^+U^T

Где A ^ + — псевдообратная, D ^ + — псевдообратная диагональная матрица Sigma, а U ^ T — транспонирование U.

Мы можем получить U и V из операции SVD.

A = U . Sigma . V^T

D ^ + можно рассчитать путем создания диагональной матрицы из Sigma, вычисления обратной величины каждого ненулевого элемента в Sigma и выполнения транспонирования, если исходная матрица была прямоугольной.

s11,   0,   0
Sigma = (  0, s22,   0)
           0,   0, s33
1/s11,     0,     0
D^+ = (    0, 1/s22,     0)
           0,     0, 1/s33

Псевдообращение обеспечивает один из способов решения уравнения линейной регрессии, в частности, когда строк больше, чем столбцов, что часто имеет место.

NumPy предоставляет функцию pinv () для вычисления псевдообращения прямоугольной матрицы.

Пример ниже определяет матрицу 4 × 2 и вычисляет псевдообратную форму.

# Pseudoinverse
from numpy import array
from numpy.linalg import pinv
# define matrix
A = array([
	[0.1, 0.2],
	[0.3, 0.4],
	[0.5, 0.6],
	[0.7, 0.8]])
print(A)
# calculate pseudoinverse
B = pinv(A)
print(B)

При выполнении примера сначала печатается определенная матрица, а затем вычисленная псевдообратная.

[[ 0.1  0.2]
 [ 0.3  0.4]
 [ 0.5  0.6]
 [ 0.7  0.8]]

[[ -1.00000000e+01  -5.00000000e+00   9.04289323e-15   5.00000000e+00]
 [  8.50000000e+00   4.50000000e+00   5.00000000e-01  -3.50000000e+00]]

Мы можем вычислить псевдообращение вручную через SVD и сравнить результаты с функцией pinv ().

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

Конкретная реализация:

A^+ = V . D^+ . U^V

Полный пример приведен ниже.

# Pseudoinverse via SVD
from numpy import array
from numpy.linalg import svd
from numpy import zeros
from numpy import diag
# define matrix
A = array([
	[0.1, 0.2],
	[0.3, 0.4],
	[0.5, 0.6],
	[0.7, 0.8]])
print(A)
# calculate svd
U, s, VT = svd(A)
# reciprocals of s
d = 1.0 / s
# create m x n D matrix
D = zeros(A.shape)
# populate D with n x n diagonal matrix
D[:A.shape[1], :A.shape[1]] = diag(d)
# calculate pseudoinverse
B = VT.T.dot(D.T).dot(U.T)
print(B)

При выполнении примера сначала печатается определенная прямоугольная матрица, а псевдообратная функция, которая соответствует приведенным выше результатам, получается из функции pinv ().

[[ 0.1  0.2]
 [ 0.3  0.4]
 [ 0.5  0.6]
 [ 0.7  0.8]]

[[ -1.00000000e+01  -5.00000000e+00   9.04831765e-15   5.00000000e+00]
 [  8.50000000e+00   4.50000000e+00   5.00000000e-01  -3.50000000e+00]]

SVD для уменьшения размерности

Популярное применение SVD для уменьшения размерности.

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

В результате получается матрица с более низким рангом, которая, как говорят, аппроксимирует исходную матрицу.

Для этого мы можем выполнить SVD-операцию с исходными данными и выбрать верхние k самых больших значений в Sigma. Эти столбцы можно выбрать из Sigma, а строки — из V ^ T.

Приближенный B исходного вектора A может быть восстановлен.

B = U . Sigmak . V^Tk

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

На практике мы можем сохранить и работать с описательным подмножеством данных, называемым T. Это плотная сводка матрицы или проекции.

T = U . Sigmak

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

T = V^Tk . A

Пример ниже демонстрирует сокращение данных с SVD.

Сначала определяется матрица 3 × 10 с большим количеством столбцов, чем строк. SVD рассчитывается и выбираются только первые две функции. Элементы рекомбинированы для точного воспроизведения исходной матрицы. Наконец, преобразование рассчитывается двумя разными способами.

from numpy import array
from numpy import diag
from numpy import zeros
from scipy.linalg import svd
# define a matrix
A = array([
	[1,2,3,4,5,6,7,8,9,10],
	[11,12,13,14,15,16,17,18,19,20],
	[21,22,23,24,25,26,27,28,29,30]])
print(A)
# Singular-value decomposition
U, s, VT = svd(A)
# create m x n Sigma matrix
Sigma = zeros((A.shape[0], A.shape[1]))
# populate Sigma with n x n diagonal matrix
Sigma[:A.shape[0], :A.shape[0]] = diag(s)
# select
n_elements = 2
Sigma = Sigma[:, :n_elements]
VT = VT[:n_elements, :]
# reconstruct
B = U.dot(Sigma.dot(VT))
print(B)
# transform
T = U.dot(Sigma)
print(T)
T = A.dot(VT.T)
print(T)

При выполнении примера сначала печатается определенная матрица, а затем восстановленное приближение, за которым следуют два эквивалентных преобразования исходной матрицы.

[[ 1  2  3  4  5  6  7  8  9 10]
 [11 12 13 14 15 16 17 18 19 20]
 [21 22 23 24 25 26 27 28 29 30]]

[[  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]
 [ 11.  12.  13.  14.  15.  16.  17.  18.  19.  20.]
 [ 21.  22.  23.  24.  25.  26.  27.  28.  29.  30.]]

[[-18.52157747   6.47697214]
 [-49.81310011   1.91182038]
 [-81.10462276  -2.65333138]]

[[-18.52157747   6.47697214]
 [-49.81310011   1.91182038]
 [-81.10462276  -2.65333138]]

Scikit-learn предоставляет класс TruncatedSVD, который напрямую реализует эту возможность.

Может быть создан класс TruncatedSVD, в котором необходимо указать количество желаемых функций или компонентов, например, например. 2. После создания вы можете подогнать преобразование (например, вычислите V ^ Tk), вызвав функцию fit (), затем примените ее к исходной матрице, вызвав функцию transform (). Результатом является преобразование A, названное T выше.

В приведенном ниже примере демонстрируется класс TruncatedSVD.

from numpy import array
from sklearn.decomposition import TruncatedSVD
# define array
A = array([
	[1,2,3,4,5,6,7,8,9,10],
	[11,12,13,14,15,16,17,18,19,20],
	[21,22,23,24,25,26,27,28,29,30]])
print(A)
# svd
svd = TruncatedSVD(n_components=2)
svd.fit(A)
result = svd.transform(A)
print(result)

При выполнении примера сначала печатается определенная матрица, а затем преобразованная версия матрицы.

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

[[ 1  2  3  4  5  6  7  8  9 10]
 [11 12 13 14 15 16 17 18 19 20]
 [21 22 23 24 25 26 27 28 29 30]]

[[ 18.52157747   6.47697214]
 [ 49.81310011   1.91182038]
 [ 81.10462276  -2.65333138]]

расширения

В этом разделе перечислены некоторые идеи по расширению учебника, которые вы, возможно, захотите изучить.

  • Поэкспериментируйте с методом SVD на ваших собственных данных.
  • Исследуйте и перечислите 10 применений СВД в машинном обучении.
  • Примените SVD как метод сокращения данных в табличном наборе данных.

Если вы исследуете какое-либо из этих расширений, я хотел бы знать.

Дальнейшее чтение

Этот раздел предоставляет больше ресурсов по теме, если вы хотите углубиться.

книги

  • Глава 12, Сингулярное значение и разложение Джордана, Линейная алгебра и матричный анализ для статистики 2014
  • Глава 4, Разложение по единственному значению и Глава 5, Подробнее о SVD, Численная линейная алгебра, 1997.
  • Раздел 2.4. Разложение по сингулярным числам, Матричные вычисления 2012.
  • Глава 7 Разложение по сингулярным числам (SVD), Введение в линейную алгебру, Пятое издание, 2016.
  • Раздел 2.8 Разложение по единственному значению, Глубокое обучение, 2016
  • Раздел 7.D Полярная декомпозиция и сингулярное разложение, Линейная алгебра сделано правильно Третье издание, 2015.
  • Лекция 3 Разложение по единственному значению, Численная линейная алгебра, 1997.
  • Раздел 2.6 Разложение по сингулярным значениям, Численные рецепты: искусство научных вычислений Третье издание, 2007.
  • Раздел 2.9. Псевдообращение Мура-Пенроуза. Глубокое обучение, 2016

API

  • API numpy.linalg.svd ()
  • API numpy.matrix.H
  • API numpy.diag ()
  • API numpy.linalg.pinv (),
  • sklearn.decomposition.TruncatedSVD API

статьи

  • Матричное разложение в Википедии
  • Разложение по сингулярным числам в Википедии
  • Единственное значение в Википедии
  • Инверсия Мура-Пенроуза в Википедии
  • Скрытый семантический анализ в Википедии

Резюме

В этом уроке вы обнаружили метод разложения по сингулярным значениям для разложения матрицы на составляющие ее элементы.

В частности, вы узнали:

  • Что такое разложение по сингулярному значению и что в нем участвует.
  • Как рассчитать SVD и восстановить прямоугольную и квадратную матрицу из элементов SVD.
  • Как рассчитать псевдообратное и выполнить уменьшение размерности, используя SVD.

У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.

Время на прочтение
6 мин

Количество просмотров 4.5K

Привет, Хабр! Меня зовут Илья Котов, я Data Scientist в Сбере, участник профессионального сообщества NTA. Эта статья — первая часть небольшого цикла, посвящённого алгоритмам вложения вершин графа в векторное пространство. Сегодня расскажу об алгоритмах, основанных на матричных факторизациях. В качестве примера в статье используется занимательная задача поиска сообществ в графе. Что же, приступим!

Начнём с постановки задачи

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

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

Тогда голову старшеклассника посетила гениальная мысль: «А почему бы не сделать систему, которая будет рекомендовать вашему пользователю потенциального друга?» Но как это сделать?

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

Разрабатываем алгоритм рекомендации «друзей» в социальной сети

 Нечто подобное вы могли видеть в vk.com.

Программисты из VK, безусловно, никогда не раскроют алгоритм рекомендации, но примерный принцип работы алгоритма понятен.

Вероятно, друг — это человек, с которым у вас есть что-то общее, возможно, хобби, работа, место учёбы, музыкальные предпочтения. Продолжать можно до бесконечности.

Как правило (но необязательно), вы знакомы с друзьями своего друга или даже с друзьями друга вашего друга. Также, скорее всего, у вас и вашего друга есть много общих друзей и знакомых. Соответственно, друзья и знакомые находятся примерно в общем социальном окружении, социальном кластере.

Зачем нам графы?

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

Общество очень удобно моделировать с помощью графа, его приложение вы точно встретите в социологии. Давайте считать вершинами графа пользователей, а отношения между этими вершинами будут только в том случае, если (пользователь X *дружит* с пользователем Y). Отношения обладают свойством симметричности (для нашего случая), то есть это означает, что если (пользователь X *дружит* с пользователем Y), то и (пользователь Y *дружит* с пользователем X). Это в идеальном мире, а вот в реальной жизни такая система не всегда работает.

В качестве набора данных выступает граф дружбы выборки пользователей из социальной сети Facebook (данные были анонимизированы, источник — Stanford Large Network Dataset Collection).

Как анализировать эти графы? Хотелось бы применять привычные и всеми любимые алгоритмы машинного обучения, нейросети и статистику, но уже к данным, представленным в виде графа. На самом деле старшекласснику не нужно изобретать что-то новое, требуется лишь найти способ перейти из вершин и отношений в обычное векторное пространство, сохраняя при этом топологию графа. Эти векторы дадут возможность использовать инструменты, перечисленные выше, в том числе и алгоритмы кластеризации, для нахождения кластеров вершин, это и нужно старшекласснику.

Матрица смежности приходит на помощь

Матрица смежности — довольно простой, но мощный инструмент.

Формальное определение звучит так:

Матрица смежности графа G — квадратная матрица размера N × N,где N-количество вершин графа G, в которой значение элемента A(i,j) равно числу рёбер из i вершины графа в j-ую.

В самом простом случае неориентированного графа — это симметричная матрица, заполненная нулями и единицами. 

Старшеклассник выгрузил данные пользователей из соседних классов, и вот что у него получилось:

import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10, 5))
graph = nx.Graph()
graph.add_edges_from(data)
plt.subplot(1, 2, 1)
nx.draw(graph)
plt.subplot(1, 2, 2)
plt.imshow(nx.adjacency_matrix(graph).toarray())

Жёлтый цвет означает единицу (то есть существует связь), тёмно-фиолетовый означает ноль (отсутствие связи).

Несложно заметить, что граф имеет 2 выраженные группы и 1 группу, которая их соединяет. В этом графе всё просто и наглядно, он является скорее примером для понимания, чем реальной задачей с неочевидной структурой.

Если вы посмотрите на строки этой матрицы как на векторы, то они уже могут характеризовать вершины графа.

Сингулярное разложение матрицы

SVD (Singular Value Decomposition) — крайне важный и красивый факт линейной алгебры. Это представление прямоугольной матрицы в виде произведения трёх матриц особого вида (обычно пишут U S V^t).

Чтобы разложить матрицу через SVD, вы можете использовать пакет из библиотеки numpy, называется он linalg.

import numpy as np

U, S, V_t = np.linalg.svd(X)

У сингулярного разложения есть наглядный геометрический смысл. Матрицы U и V (левые и правые сингулярные векторы) — унитарные матрицы (более общий случай ортогональных матриц, то есть они совершают повороты в пространстве или выворачивают его, в случае отрицательного детерминанта, сохраняя длину векторов), а S — это диагональная матрица, элементы на диагонали — сингулярные значения (то есть геометрически она совершает функцию масштабирования).

Теперь применим это к матрице смежности. Роль векторов вершин будут исполнять строки матрицы U. Так как сингулярные числа в диагональной матрице S идут по убыванию (то есть s1>s2.. > sn), можно отбросить последние столбцы матрицы U (если быть точнее, то последние сингулярные векторы матрицы U), потому что они имеют небольшой вклад в формирование матрицы, а места занимают много. Это в целом проблема для больших графов, где очень много вершин, а связей мало, матрица смежности становится разреженной. Такие графы лучше представлять в виде простого списка отношений. Сингулярное разложение матрицы тем и удобно, что даёт представление об общей структуре, помогает понять геометрический смысл, найти шумы и оставить только самые весомые признаки.

(значения на главной диагонали матрицы S)

Пусть r = 2, для того, чтобы была возможность визуализировать данные на плоскости.

На изображении видно, что часть информации утеряна, однако чётко выделяются 3 группы.

Вот как изменяется детализация матрицы смежности в зависимости от параметра r.  

plt.figure(figsize=(15, 5))

for i in range(1, 19):

            plt.subplot(2, 9, i)

            plt.title(‘r=’ + str(i))

            plt.imshow(U[:, :i] @ np.diag(S[:i]) @ V_t[:i, :])

Визуализируем векторы матрицы U(nx2).

Алгоритм готов!

Наконец, у старшеклассника есть всё необходимое, и он готов перевернуть индустрию.

Вот что нужно сделать:

  1. Найти матрицу смежности.

  2. Разложить её с помощью SVD и обрезать столбцы матрицы левых сингулярных векторов.

  3. Применить какой-нибудь алгоритм кластеризации.

Граф имеет довольно непростую структуру (см. первую картинку), однако всё равно различимы некоторые группы. Из-за сложности данных из матрицы левых сингулярных векторов нужно брать гораздо больше столбцов, чем в простейшем случае с двумя классами (в этом примере возьмём 100), иначе теряется  очень много информации.

import networkx as nx

import numpy as np

from sklearn.manifold import TSNE

#создадим простой граф и заполним его данными

graph = nx.Graph()

graph.add_edges_from(relations) #relations — это список, где элементом является кортеж вида ('n1', 'n2')

#матрица смежности

adj_matrix = nx.adjacency_matrix(graph)

#svd разложение

u, sigma, v_t = np.linalg.svd(adj_matrix.toarray())

#обрежем матрицу левых сингулярных векторов до 100

large_vectors = u[:, :100]

#снизим размерность до двух компонент для визуализации

emb = TSNE(n_components=2).fit_transform(large_vectors)

Далее используем алгоритм DBSCAN для кластеризации. Кластер, в котором находится пользователь, — это его социальное окружение. Людей, которые входят в него и при этом не дружат (не имеют контактов в социальной сети) с нашим пользователем, я и буду предлагать в качестве возможного друга или знакомого. Система довольно простая, но вы можете её расширять, например, обращать внимание на интересы пользователя, на какие группы он подписан, какую музыку слушает, где живёт и так далее, делая систему всё более эффективной.

from sklearn.cluster import DBSCAN

import seaborn as sns

df_scatterplot = pd.DataFrame(emb, columns=['e1', 'e2'])

df_scatterplot['label'] = DBSCAN(eps=2, min_samples=2).fit(emb).labels_

plt.figure(figsize=(10, 10))

sns.scatterplot(data=df_scatterplot, x='e1', y='e2', hue='label', s=8, palette='deep')

Собственно, на этом всё, конец первой части. Напомню, что сегодня я разобрал простой, но эффективный алгоритм, который может быть применён для ваших рабочих задач, где требуется анализ данных, представленных в виде графа. Алгоритмы, основанные на матричных факторизациях, обобщаются и на мультиграфы, только речь будет идти уже о тензорной факторизации (см. DistMult и т. п.). В следующей части я рассмотрю не менее интересные алгоритмы, основанные на случайных блужданиях.

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

Разложение матрицы

Иллюстрация разложения по сингулярным числам UΣV вещественной матрицы 2 × 2 M.

  • Вверху: Действие M, обозначенное его действием на единичный диск D и два канонических единичных вектора e 1 и e 2.
  • Слева: Действие V, вращение, на D, e 1 и e 2.
  • Внизу: Действие Σ, масштабирование сингулярными значениями σ 1 по горизонтали и σ 2 по вертикали.
  • Справа: Действие U, другое вращение.

В линейная алгебра, разложение по сингулярным числам (SVD ) — это факторизация вещественного или комплексная матрица, которая обобщает собственное разложение квадратной нормальной матрицы на любую m × n { displaystyle m times n}м  раз п матрица через расширение полярного разложения.

В частности, сингулярная val ue разложение m × n { displaystyle m times n}м  раз п вещественной или комплексной матрицы M { displaystyle mathbf {M}} mathbf {M} является факторизацией формы U Σ V ∗ { displaystyle mathbf {U Sigma V ^ {*}}}{ displaystyle  mathbf {U  Sigma V ^ {*}}} , где U { displaystyle mathbf {U}} mathbf {U} — это m × m { displaystyle m times m}m  раз м вещественная или комплексная унитарная матрица, Σ { displaystyle mathbf { Sigma} } mathbf { Sigma } — это m × n { displaystyle m times n}м  раз п прямоугольная диагональная матрица с неотрицательными действительными числами по диагонали, и V { displaystyle mathbf {V}} mathbf {V} — это n × n { displaystyle n times n}п  умножить на вещественная или комплексная унитарная матрица. Если M { displaystyle mathbf {M}} mathbf {M} реально, U { displaystyle mathbf {U}} mathbf {U} и VT = V ∗ { displaystyle mathbf {V ^ {T}} = mathbf {V ^ {*}}}{ displaystyle  mathbf {V ^ {T}} =  mathbf {V ^ {*}}} — вещественные ортогональные матрицы.

диагональные элементы σ i = Σ ii { displaystyle sigma _ {i} = Sigma _ {ii}}{ displaystyle  sigma _ {i} =  Sigma _ {ii}} из Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } известны как сингулярные значения из M { displaystyle mathbf {M}} mathbf {M} . Количество ненулевых особых значений равно рангу для M { displaystyle mathbf {M}} mathbf {M} . Столбцы U { displaystyle mathbf {U}} mathbf {U} и столбцы V { displaystyle mathbf {V}} mathbf {V} называются лево-сингулярные векторы и правые сингулярные векторы из M { displaystyle mathbf {M}} mathbf {M} соответственно.

SVD не уникален. Всегда можно выбрать разложение так, чтобы сингулярные значения Σ i i { displaystyle Sigma _ {ii}}{ displaystyle  Sigma _ {ii}} располагались в порядке убывания. В этом случае Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } (но не всегда U и V ) однозначно определяется M.

Термин иногда относится к компактному SVD, аналогичному разложению M = U Σ V ∗ { displaystyle mathbf {M} = mathbf {U Sigma V ^ {*}}}{ displaystyle  mathbf {M} =  mathbf {U  Sigma V ^ {*}}} , в котором Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } представляет собой квадратную диагональ размером r × r { displaystyle r times r}r  times r , где r ≤ min {m, n} { displaystyle r leq min {m, n }}{ displaystyle r  leq  min  {m, п }} — это ранг M, и имеет только ненулевые особые значения. В этом варианте U { displaystyle mathbf {U}} mathbf {U} представляет собой m × r { displaystyle m times r}m  times г полуунитарную матрицу и V { displaystyle mathbf {V}} mathbf {V} — это n × r { displaystyle n times r}n  times r полуунитарная матрица, такая что U * U = V * V = I r × r { displaystyle mathbf {U ^ {*} U} = mathbf {V ^ {*} V} = mathbf {I} _ {r times r} }{ displaystyle  mathbf {U ^ {*} U} =  mathbf {V ^ {*} V} =  mathbf {I} _ {r  times r}} .

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

Содержание

  • 1 Интуитивная интерпретация
    • 1.1 Вращение, масштабирование координат и отражение
    • 1.2 Особые значения как полуоси эллипса или эллипсоида
    • 1.3 Столбцы U и V являются ортонормированными основаниями
    • 1.4 Геометрическое значение
  • 2 Пример
  • 3 SVD и спектральное разложение
    • 3.1 Сингулярные значения, сингулярные векторы и их связь с SVD
    • 3.2 Связь с разложением по собственным значениям
  • 4 Приложения SVD
    • 4.1 Псевдообратная
    • 4.2 Решение однородных линейных уравнений
    • 4.3 Полная минимизация методом наименьших квадратов
    • 4.4 Диапазон, нулевое пространство и ранг
    • 4.5 Аппроксимация матрицы низкого ранга
    • 4.6 Разделимые модели
    • 4.7 Ближайшая ортогональная матрица
    • 4.8 Алгоритм Кабша
    • 4.9 Обработка сигналов
    • 4.10 Другие примеры
  • 5 Доказательства существования
    • 5.1 Ba sed по спектральной теореме
    • 5.2 На основе вариационной характеристики
  • 6 Расчет SVD
    • 6.1 Численный подход
    • 6.2 Аналитический результат 2 × 2 SVD
  • 7 Уменьшенные SVD
    • 7.1 Тонкий SVD
    • 7.2 Компактный SVD
    • 7.3 Усеченный SVD
  • 8 Нормы
    • 8.1 Нормы Ky Fan
    • 8.2 Норма Гильберта – Шмидта
  • 9 Вариации и обобщения
    • 9.1 Представление Mode-k
    • 9.2 Тензорный SVD
    • 9.3 Масштабно-инвариантный SVD
    • 9.4 HOSVD функций — численная реконструкция — преобразование модели TP
    • 9.5 Ограниченные операторы в гильбертовых пространствах
    • 9.6 Сингулярные числа и компактные операторы
  • 10 История
  • 11 См. Также
  • 12 Примечания
  • 13 Ссылки
  • 14 Внешние ссылки

Интуитивные интерпретации

Анимированная иллюстрация SVD реальной двумерной матрицы сдвига M. Сначала мы видим единичный диск синим цветом вместе с двумя каноническими единичными векторами. Затем мы видим действия M, который искажает диск в виде эллипса. SVD раскладывает M на три простых преобразования: начальное вращение V, масштабирование

Σ { displaystyle mathbf { Sigma}}

 mathbf { Sigma } по осям координат и окончательный поворот U . Длины σ 1 и σ 2 полуосей эллипса являются сингулярными значениями для M, а именно Σ1,1 и Σ2,2. Визуализация матричных умножений при разложении по сингулярным числам

Вращение, масштабирование координат и отражение

В специальном случай, когда M является вещественной квадратной матрицей размером m × m, матрицы U и V могут быть выбраны как действительные m × m матрицы тоже. В этом случае «унитарный» означает то же самое, что и «ортонормированный ». Затем, интерпретируя обе унитарные матрицы, а также диагональную матрицу, резюмированную здесь как A, как линейное преобразование x→Axпространства R, матрицы U и V представляют вращения или отражение пространства, а Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } представляет собой масштабирование каждой координаты xiна коэффициент σ i. Таким образом, SVD-декомпозиция разбивает любое обратимое линейное преобразование R на композицию трех геометрических преобразований : вращение или отражение (V ), за которым следует покоординатное масштабирование (Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } ), за которым следует другое вращение или отражение (U ).

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

Если матрица M является действительной, но не квадратной, а именно m × n с m ≠ n, ее можно интерпретировать как линейное преобразование из R в Р . Тогда U и V могут быть выбраны для поворота на R и R соответственно; и Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } , помимо масштабирования первого min {m, n} { displaystyle min {m, n }} min  {m, n } координаты, также расширяет вектор нулями, т.е. удаляет конечные координаты, чтобы превратить R в R.

особые значения как полуоси эллипса или эллипсоида

Как показано на рисунке сингулярные значения можно интерпретировать как величину полуосей эллипса в 2D. Эту концепцию можно обобщить на n-мерное евклидово пространство, где сингулярные значения любой квадратной матрицы n × n рассматриваются как величина полуоси n-мерного эллипсоид. Точно так же сингулярные значения любой матрицы m × n можно рассматривать как величину полуоси n-мерного эллипсоида в m-мерном пространстве, например, как эллипс в (наклонной) 2D плоскости. в трехмерном пространстве. Особые значения кодируют величину полуоси, а сингулярные векторы кодируют направление. Подробнее см. ниже.

Столбцы U и V являются ортонормированными основаниями

Поскольку U и V унитарны, столбцы каждого из них образуют набор ортонормированные векторы, которые можно рассматривать как базисные векторы. Матрица M отображает базисный вектор Viна растянутый единичный вектор σ iUi. По определению унитарной матрицы то же самое верно для их сопряженных транспозиций U и V, за исключением того, что геометрическая интерпретация сингулярных значений как отрезков теряется. Короче говоря, столбцы U, U, Vи V являются ортонормированными основаниями. Когда M { displaystyle mathbf {M}} mathbf {M} является нормальной матрицей, Uи V уменьшаются до унитарной, используемой для диагонализации M { Displaystyle mathbf {M}} mathbf {M} . Однако, когда M { displaystyle mathbf {M}} mathbf {M} не является нормальным, но все же диагонализуемым, его собственное разложение и разложение по сингулярным числам различны.

Геометрическое значение

Поскольку U и V являются унитарными, мы знаем, что столбцы U1,…, UmU дает ортонормированный базис K, а столбцы V1,…, VnV дают ортонормированный базис K (с учетом к стандартным скалярным произведениям на этих пространствах).

линейное преобразование

{T: K n → K mx ↦ M x { displaystyle { begin {cases} T: K ^ {n} в K ^ {m} x mapsto mathbf {M} x end {ases}}}{ begin {cases} T: K ^ {n}  to K ^ {m} \ x  mapsto  mathbf {M} x  end {cases}}

имеет особенно простое описание этих ортонормированных базисов:

T (V i) = σ i U i, i = 1,…, мин (м, п), { displaystyle T ( mathbf {V} _ {i}) = sigma _ {i} mathbf {U} _ {i}, qquad i = 1, ldots, min (m, n),}{ displaystyle T ( mathbf {V} _ {i}) =  sigma _ {i}  mathbf {U} _ { i},  qquad i = 1,  ldots,  min (m, n),}

где σ i — i-я диагональная запись в Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } , и T (Vi) = 0 для i>min (m, n).

Таким образом, геометрическое содержание теоремы SVD можно резюмировать следующим образом: для любого линейного отображения T: K → K можно найти ортонормированные базисы K и K такие, что T отображает i-й базисный вектор K на неотрицательное кратное i-го базисного вектора K, и отправляет оставшиеся базисные векторы в ноль. По отношению к этим базам отображение T поэтому представляется диагональной матрицей с неотрицательными действительными диагональными элементами.

Чтобы получить более наглядный вид сингулярных значений и факторизации SVD — по крайней мере, при работе с реальными векторными пространствами — рассмотрите сферу S радиуса один в R . Линейное отображение T отображает эту сферу на эллипсоид в R . Ненулевые особые значения — это просто длины полуосей этого эллипсоида. Особенно, когда n = m, и все сингулярные значения различны и отличны от нуля, SVD линейного отображения T может быть легко проанализировано как последовательность трех последовательных ходов: рассмотрим эллипсоид T (S) и, в частности, его оси; затем рассмотрите направления в R, отправленные T на эти оси. Эти направления оказываются взаимно ортогональными. Сначала примените изометрию V, посылая эти направления на оси координат R . На втором ходу примените эндоморфизм D, диагонализованный вдоль осей координат и растягивающий или сжимающий в каждом направлении, используя длины полуосей T (S) в качестве коэффициентов растяжения. Затем композиция D∘ Vотправляет единичную сферу на эллипсоид, изометричный T (S). Чтобы определить третий и последний ход U, примените изометрию к этому эллипсоиду, чтобы перенести его на T (S). Как легко проверить, композиция U∘ D∘ Vсовпадает с T.

Пример

Рассмотрим матрицу 4 × 5

M = [1 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0] { displaystyle mathbf {M} = { begin {bmatrix} 1 0 0 0 2 \ 0 0 3 0 0 \ 0 0 0 0 0 \ 0 2 0 0 0 end {bmatrix}}} mathbf {M} = { begin {bmatrix} 1 0 0 0 2 \ 0 0 3 0 0 \ 0 0 0 0 0   0 2 0 0 0 0  end {bmatrix}}

Разложение по единственному числу этой матрицы задается формулой UΣ { displaystyle mathbf { Sigma}} mathbf { Sigma } V

U = [0 — 1 0 0 — 1 0 0 0 0 0 0 — 1 0 0 — 1 0] Σ = [ 3 0 0 0 0 0 5 0 0 0 0 0 2 0 0 0 0 0 0 0] V ∗ = [0 0 — 1 0 0 — 0,2 0 0 0 — 0,8 0 — 1 0 0 0 0 0 0 1 0 — 0,8 0 0 0 0,2] { displaystyle { begin {align} mathbf {U} = { begin {bmatrix} color {Green} 0 color {Blue} -1 color {Cyan} 0 color { Изумруд} 0 \ цвет {зеленый} -1 цвет {синий} 0 цвет {голубой} 0 цвет {изумруд} 0 \ цвет {зеленый} 0 цвет {синий} 0 цвет {голубой} 0 color {Emerald} -1 \ color {Green} 0 color {Blue} 0 color {Cyan} -1 color {Emerald} 0 end {bmatrix}} \ [6pt] { boldsymbol { Sigma}} = { begin {bmatrix} 3 0 0 0 color {Gray} { mathit {0}} \ 0 { sqrt {5}} 0 0 co lor {Серый} { mathit {0}} \ 0 0 2 0 color {Серый} { mathit {0}} \ 0 0 0 color {Красный} mathbf {0} color {Серый} { mathit {0 }} end {bmatrix}} \ [6pt] mathbf {V} ^ {*} = { begin {bmatrix} color {Violet} 0 color {Violet} 0 color {Violet} -1 color {Violet} 0 color {Violet} 0 \ color {Plum} — { sqrt {0.2}} color {Plum} 0 color {Plum} 0 color {Plum} 0 color {Plum} — { sqrt {0.8}} \ color {Magenta} 0 color {Magenta} -1 color {Magenta} 0 color {Magenta} 0 color {Magenta} 0 \ color {Orchid} 0 color {Orchid} 0 color {Orchid} 0 color {Orchid} 1 color {Orchid} 0 \ color {Purple} — { sqrt {0.8}} color {Purple} 0 color {Purple} 0 color {Purple} 0 color {Purple} { sqrt {0.2}} end {bmatrix}} end {align}}}{ displaystyle { begin {align}  mathbf {U} = { begin {bmatrix}  color {Green} 0  color {Blue} - 1  color {Cyan} 0  color {Emerald} 0 \ color {Green} -1  color {Blue} 0  color {Cyan} 0  color {Emerald} 0 \ color {Green} 0  color {Blue} 0  color {Cyan} 0  color {Emerald} -1  \ color {Green} 0  color {Blue} 0  color {Cyan} -1  color {Emerald} 0  end {bmatrix}} \ [6pt] { boldsymbol { Sigma}} = { begin {bmatrix} 3 0 0 0  color {Серый} { mathit {0}} \ 0 { sqrt {5}} 0 0  color {Gray} { mathit {0}} \ 0 0 2 0  color {Grey} { mathit {0}} \ 0 0 0  color {Red}  mathbf {0}  color {Gray} { mathit {0}}  end {bmatrix}} \ [6pt]  mathbf {V} ^ {*} = { begin {bmatrix}  color {Violet} 0  color {Violet} 0  color {Violet} -1  color {Violet} 0  color {Violet} 0 \ color {Plum} - { sqrt {0.2}}  color {Plum} 0  color {Plum} 0  color {Plum} 0  color {Plum} - { sqrt {0.8}} \ color {Magenta} 0  color {Magenta} -1  color {Magenta} 0  color {Magenta} 0  co lor {Magenta} 0 \ color {Orchid} 0  color {Orchid} 0  color {Orchid} 0  color {Orchid} 1  color {Orchid} 0 \ color {Purple} - { sqrt {0.8).. }}  color {Purple} 0  color {Purple} 0  color {Purple} 0  color {Purple} { sqrt {0.2}}  end {bmatrix}}  end {align}}}

Матрица масштабирования Σ { displaystyle mathbf { Sigma }} mathbf { Sigma } равен нулю за пределами диагонали (серый курсив), а один диагональный элемент равен нулю (красный жирный шрифт). Кроме того, поскольку матрицы U и V являются унитарными, умножение на их соответствующие сопряженные транспозиции дает матриц идентичности, как показано ниже. В этом случае, поскольку U и V являются вещественными, каждая из них является ортогональной матрицей .

UU ∗ = [1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1] = I 4 VV ∗ = [1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1] = I 5 { displaystyle { begin {выровнено } mathbf {U} mathbf {U} ^ {*} = { begin {bmatrix} 1 0 0 0 \ 0 1 0 0 \ 0 0 1 0 \ 0 0 0 1 end {bmatrix}} = mathbf {I} _ {4} [6pt] mathbf {V} mathbf {V} ^ {*} = { begin {bmatrix} 1 0 0 0 0 \ 0 1 0 0 0 \ 0 0 1 0 0 0 \ 0 0 0 1 0 \ 0 0 0 0 1 end I mathbf} = } _ {5} end {align}}}{ displaystyle { begin {align}  mathbf {U}  mathbf {U} ^ {*} = { begin {bmatrix} 1 0 0 0 \ 0 1 0 0 \ 0 0 1 0 \ 0 0 0 1  end {bmatrix}} =  mathbf {I} _ {4} \ [6pt]  mathbf {V}  mathbf {V} ^ {*} = { begin {bmatrix} 1 0 0 0 0 \ 0 1 0 0 0 \ 0 0 1 0 0 \ 0 0 0 1 0   0 0 0 0 1  end {bmatrix}} =  mathbf {I} _ {5}  end {align}}}

Это конкретное разложение по сингулярным числам не является уникальным. Выбор V { displaystyle V}V так, чтобы

V ∗ = [0 1 0 0 0 0 0 1 0 0 0,2 0 0 0 0,8 0,4 0 0 0,5 — 0,1 — 0,4 0 0 0,5 0,1] { displaystyle mathbf {V} ^ {*} = { begin {bmatrix} color {Violet} 0 color {Violet} 1 color {Violet} 0 color {Violet} 0 color {Violet } 0 \ color {Plum} 0 color {Plum} 0 color {Plum} 1 color {Plum} 0 color {Plum} 0 \ color {Magenta} { sqrt {0.2}} color {Magenta} 0 color {Magenta} 0 color {Magenta} 0 color {Magenta} { sqrt {0.8}} \ color {Orchid} { sqrt {0.4}} color {Orchid} 0 color {Orchid} 0 color {Orchid} { sqrt {0.5}} color {Orchid} — { sqrt {0.1}} \ color {Purple} — { sqrt {0.4}} color {Purple} 0 color {Purple} 0 color {Purple} { sqrt {0.5}} color {Purple} { sqrt {0.1}} end {bmatrix}}}{ displaystyle  mathbf {V} ^ {*} = { begin {bmatrix}  color {Violet} 0  color {Violet} 1  color {V iolet} 0  color {Violet} 0  color {Violet} 0 \ color {Plum} 0  color {Plum} 0  colo r {Plum} 1  color {Plum} 0  color {Plum} 0 \ color {Magenta} { sqrt {0.2}}  color {Magenta} 0  color {Magenta} 0  color {Magenta} 0  color {Magenta} { sqrt {0.8 }} \ color {Орхидея} { sqrt {0.4}}  color {Orchid} 0  color {Orchid} 0  color {Orchid} { sqrt {0.5}}  color {Орхидея} - { sqrt {0.1}} \ color {Purple} - { sqrt {0.4}}  color {Purple} 0  color {Purple} 0  color {Purple} { sqrt {0.5}}  color {Purple} { sqrt {0.1}}  end {bmatrix}}}

также является допустимым единственным числом ценностная декомпозиция.

SVD и спектральное разложение

Сингулярные значения, сингулярные векторы и их связь с SVD

Неотрицательное действительное число σ является сингулярным значение для M тогда и только тогда, когда существуют векторы единичной длины u → { displaystyle { vec {u}}}{ vec {u}} в K и v → { displaystyle { vec {v}}}{ vec {v}} в K такое, что

M v → = σ u → и M ∗ u → = σ v →. { displaystyle mathbf {M} { vec {v}} = sigma { vec {u}} , { text {and}} mathbf {M} ^ {*} { vec {u}} = sigma { vec {v}}.}{ displaystyle  mathbf {M} { vec {v}} =  sigma { vec {u}} , { text {and}}  mathbf {M} ^ {*} { vec {u}} =  sigma { vec {v}}.}

Векторы u → { displaystyle { vec {u}}}{ vec {u}} и v → { displaystyle { vec {v}}}{ vec {v}} называются лево-сингулярными и право-сингулярными векторами для σ соответственно.

В любом разложении по сингулярным числам

M = U Σ V ∗ { displaystyle mathbf {M} = mathbf {U} { boldsymbol { Sigma}} mathbf {V} ^ {* }} мат hbf {M} =  mathbf {U} { boldsymbol { Sigma} }  mathbf {V} ^ {*}

диагональные элементы Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } равны сингулярным значениям M . Первые столбцы p = min (m, n) в U и V являются, соответственно, левыми и правыми сингулярными векторами для соответствующих сингулярных значений. Следовательно, из приведенной выше теоремы следует, что:

  • Матрица m × n M имеет не более p различных сингулярных значений.
  • Всегда можно найти унитарный базис Uдля K с подмножеством базисных векторов, охватывающих лево-сингулярные векторы каждого сингулярного значения M.
  • . Всегда можно найти унитарный базис V для K с подмножеством базисных векторов, охватывающих правые сингулярные векторы каждого сингулярного значения M.

Особое значение, для которого мы можем найти два левых (или правых) сингулярных вектора, которые являются линейно независимыми, называется вырожденным. Если u → 1 { displaystyle { vec {u}} _ {1}}{ displaystyle { vec {u}} _ {1}} и u → 2 { displaystyle { vec {u}} _ {2}}{ displaystyle { vec {u}} _ {2}} — это два сингулярных вектора слева, которые соответствуют сингулярному значению σ, тогда любая нормализованная линейная комбинация двух векторов также является сингулярным вектором слева, соответствующим сингулярному значению σ. Аналогичное утверждение верно и для правых сингулярных векторов. Количество независимых левых и правых сингулярных векторов совпадает, и эти особые векторы появляются в одних и тех же столбцах U и V, соответствующих диагональным элементам Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } все с одинаковым значением σ.

В качестве исключения левый и правый сингулярные векторы сингулярного значения 0 включают все единичные векторы в ядре и коядре, соответственно, в M, которое по теореме ранг – недействительность не может быть той же размерности, если m ≠ n. Даже если все сингулярные значения отличны от нуля, если m>n, то коядро нетривиально, и в этом случае U дополняется m — n ортогональными векторами из коядра. Наоборот, если m < n, then V дополняется n — m ортогональными векторами из ядра. Однако, если сингулярное значение 0 существует, дополнительные столбцы U или V уже появляются как левый или правый сингулярные векторы.

Невырожденные сингулярные значения всегда имеют уникальные лево- и правые сингулярные векторы с точностью до умножения на единичный фазовый множитель e (для реального случая с точностью до знака). Следовательно, если все сингулярные значения квадратной матрицы M невырождены и не равны нулю, то ее разложение по сингулярным значениям будет уникальным с точностью до умножения столбца U на коэффициент единичной фазы и одновременное умножение соответствующего столбца V на тот же коэффициент единичной фазы. В общем, SVD уникален до произвольных унитарных преобразований, применяемых единообразно к векторам-столбцам обоих U и V, охватывающих подпространства каждого сингулярного значения, и вплоть до произвольных унитарных преобразований на векторы U и V, охватывающие ядро ​​и коядро, соответственно, M.

Связь с разложением по собственным значениям

Разложение по сингулярным значениям является очень общим в том смысле, что его можно применить к любой матрице размера m × n, тогда как разложение по собственным значениям можно применить только к диагонализуемым матрицам. Тем не менее, эти два разложения связаны.

Для SVD M, как описано выше, выполняются следующие два соотношения:

M ∗ M = V Σ ∗ U ∗ U Σ V ∗ = V (Σ ∗ Σ) V * MM * знак равно U Σ V * V Σ * U * = U (Σ Σ *) U * { Displaystyle { begin {align} mathbf {M} ^ {*} mathbf {M} = mathbf {V} { boldsymbol { Sigma}} ^ {*} mathbf {U} ^ {*} , mathbf {U} { boldsymbol { Sigma}} mathbf {V} ^ {*} = mathbf {V} ({ boldsymbol { Sigma}} ^ {*} { boldsymbol { Sigma}}) mathbf {V} ^ {*} \ mathbf {M} mathbf {M} ^ { *} = mathbf {U} { boldsymbol { Sigma}} mathbf {V} ^ {*} , mathbf {V} { boldsymbol { Sigma}} ^ {*} mathbf {U} ^ {*} = mathbf {U} ({ boldsymbol { Sigma}} { boldsymbol { Sigma}} ^ {*}) mathbf {U} ^ {*} end {align}}}{ begin {align}  mathbf {M} ^ {*}  mathbf {M } =  mathbf {V} { boldsymbol { Sigma}} ^ {*}  mathbf {U} ^ {*} ,  mathbf {U} { boldsymbol { Sigma}}  mathbf {V} ^ {*} =  mathbf {V} ({ boldsymbol { Sigma}} ^ {*} { boldsymbol { Sigma}})  mathbf {V} ^ {*}  \ mathbf {M}  mathbf { M} ^ {*} =  mathbf {U} { boldsymbol { Sigma}}  mathbf {V} ^ {*} ,  mathbf {V} { boldsymbol { Sigma}} ^ {*}  mathbf {U} ^ {*} =  mathbf {U} ({ boldsymbol { Sigma}} { boldsymbol { Sigma}} ^ {*})  mathbf {U} ^ {*}  конец {выровнено} }

Правые части этих соотношений описывают разложения левых частей на собственные значения. Следовательно:

  • Столбцы V (правые сингулярные векторы) являются собственными векторами из MM.
  • . Столбцы U (лево-сингулярные векторы) являются собственные векторы MM.
  • Ненулевые элементы Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } (ненулевые особые значения) являются квадратными корнями ненулевого собственные значения из MMили MM.

В частном случае, когда M является нормальной матрицей, которая поопределению должна быть квадратная, спектральная теорема говорит, что он может быть единственно диагонализован с использованием базиса собственных векторов, так что его можно записать M= УДУ для унитарной матрицы U и диагональная матрица D . Когда M также является положительно полуопределенным, разложение M= UDU является также разложением по сингулярным числам. В противном случае его можно преобразовать в SVD, переместив фазу каждого σ в либо на соответствующее ему Vi, либо Ui. Естественная связь SVD с ненормальными матрицами осуществляется теоремы о полярном разложении : M= SR, где S= UΣ { displaystyle mathbf { Sigma}} mathbf { Sigma } Uположительно полуопределено и нормальный, а R= UVунитарный.

Таким образом, за исключением положительных полуопределенных нормальных матриц, разложение по собственным значениям и SVD для M, хотя и связаны, различаются: различаются: разложение по собственным значениям M= UDU, где U не обязательно унитарен и D не обязательно положительно полуопределен, тогда как SVD — это M= UΣ { displaystyle mathbf { Sigma}} mathbf { Sigma } V, где Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } — диагональные и положительно полуопределенные, а U и V — унитарные матрицы, которые не обязательно связаны, кроме как через матрицу M . Хотя только исправные квадратные матрицы имеют разложение по собственному значению, любая матрица m × n { displaystyle m times n}м  раз п SVD.

Приложения СВД

Псевдообратная

Разложение по сингулярным числам может быть приложение для вычисления псевдообратной матрицы. (Различные варианты используют разные обозначения для псевдообратной матрицы; здесь мы используем.) Действительно, псевдообратная матрица M с разложением по сингулярным значениям M= UΣVравно

M= VΣU

, где Σ — этодообратное Значение Σ, которое формируется заменой каждого ненулевого диагонального элемента его обратным и транспонированием полученной матрицы. Псевдообратная функция — это один из способов линейных наименьших квадратов.

Решение однородных линейных соотношений

Набор однородных линейных уравнений может быть записан как Ax= 0для матриц A и вектор х . Типичная ситуация состоит в том, что A известно и необходимо определить ненулевое значение x, которое удовлетворяет уравнению. Такой x принадлежит нулевому пространству A и иногда называется (правым) нулевым вектором A . Вектор x можно охарактеризовать как правый сингулярный вектор, соответствующему сингулярному значению A, равному нулю. Это наблюдение означает, что если A представляет собой квадратную матрицу и не имеет исчезающего сингулярного значения, уравнение не имеет ненулевого x в качестве решения. Это также означает, что при наличии нескольких вариантов любая линейная комбинация соответствующих правых сингулярных векторов является допустимым решением. Аналогично определению (правого) нулевого вектора ненулевой x, удовлетворяющий xA= 0, с x, обозначающим сопряженное обозначение x, является левым нулевым вектором A.

Минимизация наименьших квадратов

A Всего наименьших квадратов Задача относится к определению вектора x, который минимизирует 2-норму дату Ax при ограничении || x || = 1. Решением оказывается правый сингулярный вектор A, соответствующему наименьшему сингулярному значению.

Диапазон, пустое пространство и ранг

Другое применение SVD состоит в том, что обеспечивает явное представление диапазона диапазона и пустого пространства в матрица М . Право-сингулярные стандарты, соответствующие исчезающим сингулярным значениям M, охватывают нулевое пространство M и лево-сингулярные стандарты, соответствующие ненулевым сингулярным значениям M охватывают диапазон M . Например, в приведенном выше примере пустое пространство занято двумя последними строками V, а диапазон — первыми тремя столбцами U.

. Как следствие, ранг из M равенство количеству ненулевых сингулярных значений, которое совпадает с ненулевых диагональных элементов в Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } . В числовой шкале линейной алгебре могут быть введены различные ранговые матрицы, так как ошибка округления может привести к небольшому, но ненулевым сингулярным значениям в матрице с недостаточным рангом. Предполагается, что единичные значения за значительным промежутком численно эквивалентны нулю.

Аппроксимация матрицы низкого ранга

В некоторых практических приложениях необходимо решить аппроксимации матрицы M другой матрицей M ~ { displaystyle { tilde { mathbf {M }}}}{ tilde { mathbf {M}}} , считается усеченным, имеющим определенный ранг r. В случае, если аппроксимация на основе минимизации нормы Фробениуса разницы между M и M ~ { displaystyle { tilde { mathbf {M}}}}{ tilde { mathbf {M}}} при ограничении ранг ⁡ (M ~) = r { displaystyle operatorname {rank} left ({ tilde { mathbf {M}}} right) = r} operatorname {rank}  left ({  tilde { mathbf {M}}}  right) = r , оказывается, что решение задается SVD M, а именно

M ~ = U Σ ~ V ∗, { displaystyle { tilde { mathbf {M}}} = mathbf {U} { тильда { boldsymbol { Sigma}}} mathbf {V} ^ {*},}{ displaystyle { tilde { mathbf {M}}} =  mathbf {U} { тильда { boldsymbol { Sigma }}}  mathbf {V} ^ {*},}

где Σ ~ { displaystyle { tilde { boldsymbol { Sigma}}}}{ тильда { boldsymbol { Сигма}}} — это та же матрица, что и Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } , за исключением того, что она содержит только r наибольших сингулярных значений (остальные сингулярные значения заменяются нулем). Это известно как теорема Эккарта — Юнга, поскольку она была доказана этим двумя авторами в 1936 году (хотя позже выяснилось, что она известна более ранним авторам; см. Стюарт 1993).

Разделимые модели

SVD можно рассматривать как разложение матрицы на взвешенную упорядоченную сумму разделимых матриц. Под разделимой мы подразумеваем, что матрица A может быть записана как внешнее произведение векторов A= u⊗ v, или, в координатах, A ij = uivj { displaystyle A_ {ij } = u_ {i} v_ {j}}A_ {ij} = u_ {i} v_ {j} . В частности, матрица M может быть разложена как

M = ∑ i A i = ∑ i σ i U i ⊗ V i. { displaystyle mathbf {M} = sum _ {i} mathbf {A} _ {i} = sum _ {i} sigma _ {i} mathbf {U} _ {i} otimes mathbf {V} _ {i}.}{ displaystyle  mathbf {M} =  sum _ {i}  mathbf {A} _ {i} =  sum _ {i}  sigma _ {i}  mathbf {U} _ {i}  otimes  mathbf {V} _ {i}.}

Здесь Uiи Vi- это i-й столбец соответствующий матриц SVD, σ i — упорядоченные сингулярные значения, и каждый Aiотделимо. SVD можно использовать для нахождения разделения фильтра изображения обработки на отдельные горизонтальные и вертикальные фильтры. Обратите внимание, что количество ненулевых σ i — это внимание в точности ранг матрицы.

Разделимые модели часто возникают в биологических системах, и SVD-факторизация полезна для анализа таких систем. Например, некоторые восприимчивые поля простых клеток визуальной области V1 могут хорошо использовать с помощью фильтра Габора в пространственной области, умноженного на функцию модуляции во временной области. Таким образом, данный линейный фильтр, оцениваемый, например, посредством обратной корреляции, можно переставить два пространственных измерения в одно измерение, таким образом, получая двумерный фильтр (пространство, время), который может быть разложен с помощью SVD. Тогда первый столбец U в SVD-факторизации представляет собой Габор, а первый столбец V представляет модуль времени (или наоборот). Затем можно определить индекс отделимости

α = σ 1 2 ∑ я σ я 2, { displaystyle alpha = { frac { sigma _ {1} ^ {2}} { sum _ {i} sigma _ {i} ^ {2}}},} alpha = { frac { sigma _ {1} ^ {2}} { sum _ {i}  sigma _ {i} ^ {2 }}},

, которая представляет собой долю степени в матрице M, которая учитывается первой разделяемой матрицей в разложении.

Ближайшая ортогональная матрица

Можно использовать SVD квадратной матрицы A для определения ортогональной матрицы O, ближайшей к A . Точность подгонки измеряется нормой Фробениуса из O− A. Решением является продукт UV . Это интуитивно понятно, потому что ортогональная матрица будет иметь разложение UIV, где I — единичная матрица, так что если A= UΣ { displaystyle mathbf { Sigma}} mathbf { Sigma } V, то произведение A= UVсводится к замене единичных значений на единицу. Эквивалентно, решение представляет собой унитарную матрицу R= UVполярного разложения M= RP= P’Rв любом порядке растяжения и вращения, как описано выше.

Похожая проблема с интересными приложениями формы — это ортогональная проблема Прокруста, которая в нахождении ортогональной матрицы O, которая наиболее точно отображает А в В . В частности,

O = argmin Ω ‖ A Ω — B ‖ F при условии Ω T Ω = I, { displaystyle mathbf {O} = { underset { Omega} { operatorname {argmin}}} | mathbf {A} { boldsymbol { Omega}} — mathbf {B} | _ {F} quad { text {при условии}} quad { boldsymbol { Omega}} ^ { textf {T}} { boldsymbol { Omega}} = mathbf {I},}{ displaystyle  mathbf {O} = { underset { Omega} { operatorname {argmin}}}  |  mathbf {A} { boldsymbol { Omega}} -  mathbf {B}  | _ {F}  quad { text {при условии}}  quad { boldsymbol { Omega}} ^ { textf {T}} { boldsymbol { Omega}} =  mathbf {I},}

где ‖ ⋅ ‖ F { displaystyle | cdot | _ {F}} |  cdot  | _ {F} обозначает норму Фробениуса.

Эта проблема эквивалентна поиску ближайшей ортогональной матрицы к заданной матрице M= AB.

Алгоритм Кабша

Алгоритм Кабша (называемый проблемой Вахбы в других областях) использует SVD для вычисления оптимального поворота (относительно минимизации наименьших квадратов), который выровняет набор точек с соответствующим набором точек. Среди прочего, он используется для сравнения структур молекул.

Обработка сигналов

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

Другие примеры

SVD также широко применяется для изучения линейных обратных задач и полезен при анализе методов регуляризации например, Тихонова. Он широко используется в статистике, где он связан с анализом главных компонентов и с анализом соответствия, а также в обработке сигналов и распознавании образов <562.>. Он также используется в модальном анализе только для вывода, где немасштабированные формы колебаний могут быть определены из сингулярных векторов. Еще одно использование — скрытое семантическое индексирование при обработке текста на естественном языке.

В обычных численных вычислениях с участием линейных или линеаризованных систем существует универсальная константа, которая характеризует регулярность или особенность проблемы, которая является «числом обусловленности» системы κ: = σ max / σ min { displaystyle kappa: = sigma _ { text {max}} / sigma _ { text {min}}}{ displaystyle  kappa: =  sigma _ { text {max}} /  sigma _ { text {min}}} . Он часто контролирует частоту появления ошибок или скорость сходимости данной вычислительной схемы в таких системах.

SVD также играет решающую роль в области квантовой информации в форме, которую часто называют как разложение Шмидта. С его помощью состояния двух квантовых систем естественным образом разлагаются, обеспечивая необходимое и достаточное условие для их запутанности : если ранг Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } матрица больше единицы.

Одно из применений SVD к довольно большим матрицам — это численный прогноз погоды, где методы Ланцоша используются для оценки наиболее линейно быстро растущих нескольких возмущений центрального численного прогноз погоды на заданный начальный период времени; то есть сингулярные векторы, соответствующие наибольшим сингулярным значениям линеаризованного пропагатора для глобальной погоды за этот интервал времени. Выходными сингулярными векторами в этом случае являются целые погодные системы. Затем эти возмущения пропускаются через полную нелинейную модель для генерации ансамблевого прогноза , позволяющего справиться с некоторой неопределенностью, которая должна допускаться в отношении текущего центрального прогноза.

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

Интересно, что SVD использовался для улучшения моделирования формы гравитационных волн с помощью наземного гравитационно-волнового интерферометра. АЛИГО. SVD может помочь повысить точность и скорость генерации сигналов для поддержки поиска гравитационных волн и обновления двух различных моделей сигналов.

Декомпозиция по сингулярным значениям используется в рекомендательных системах для прогнозирования оценок пользователей. Распределенные алгоритмы были разработаны с целью вычисления SVD на кластерах обычных машин.

Другая реализация кода алгоритма рекомендации Netflix SVD (третий оптимальный алгоритм в конкурсе, проводимом Netflix, чтобы найти лучшую совместную фильтрацию методы прогнозирования пользовательских оценок фильмов на основе предыдущих обзоров) на платформе Apache Spark доступны в следующем репозитории GitHub, реализованном Александросом Иоаннидисом. Оригинальный алгоритм SVD, который в этом случае выполняется параллельно, поощряет пользователей веб-сайта GroupLens, консультируясь с предложениями по мониторингу новых фильмов, адаптированными к потребностям каждого пользователя.

СВД низкого ранга применялась для обнаружения горячих точек на основе пространственно-временных данных с применением для обнаружения болезни вспышки. Комбинация SVD и SVD более высокого порядка также применялась для обнаружения событий в реальном времени из сложных потоков данных (многомерные данные с пространственными и временными измерениями) в Наблюдение за заболеваниями.

Доказательства существования

Собственное значение λ матрицы M характеризуется алгебраическим использованием M u = λu. Когда M равно эрмитовскому, также доступна вариационная характеристика. Пусть M будет действительной симметричной матрицей размера n × n . Определите

{f: R n → R f (x) = x TM x { displaystyle { begin {cases} f: mathbb {R} ^ {n} to mathbb {R} \ f ( x) = x ^ { textf {T}} mathbf {M} x end {ases}}{ displaystyle { begin {cases} f:  mathbb {R} ^ {n}  to  mathbb {R} \ f (x) = x ^ {  textf {T}}  mathbf {M} x  end {cases}}}

Согласно теореме об экстремальных значениях, эта непрерывная функция использует максимума при некотором u, когда ограничен единичной сферой {|| х || = 1}. По теореме о множителях Лагранжа u обязательно удовлетворяет

∇ x TM x — λ ⋅ ∇ x T x = 0 { displaystyle nabla x ^ { textf {T}} mathbf {M} x — lambda cdot nabla x ^ { textf {T}} x = 0}{ displaystyle  nabla x ^ { textf {T}}  mathbf {M } x-  lambda  cdot  nabla x ^ { textf {T}} x = 0}

для некоторого действительного числа λ. Символ набла, ∇, является оператором del (дифференцирование по x). Используя симметрию M, получаем

∇ x T M x — λ ⋅ ∇ x T x = 2 (M — λ I) x. { displaystyle nabla x ^ { textf {T}} mathbf {M} x- lambda cdot nabla x ^ { textf {T}} x = 2 ( mathbf {M} — lambda mathbf {I}) x.}{ displaystyle  nabla x ^ { textf {T} }  mathbf {M} x-  lambda  cdot  nabla x ^ { textf {T}} x = 2 ( mathbf {M} -  lambda  mathbf {I}) x.}

Следовательно, M u = λu, поэтому u является собственным вектором единичной длины M . Для каждого собственного вектора v единичной длины элемента M его собственное значение равно f (v), поэтому λ является наибольшим значением длины M . То же вычисление, выполненное с ортогональным дополнением к u, дает следующее по величине собственное значение и так далее. Сложный эрмитов случай аналогичен; там f (x) = x * M x — вещественная функция от 2n вещественного числа.

Особые значения похожи в том, что они могут быть алгебраически или на основе вариационных принципов. Хотя, в отличие от случая собственных значений, эрмитичность или симметрия M больше не требуется.

В этом разделе приводятся эти два аргумента в использовании функций разложения по сингулярным числам.

На основе спектральной теоремы

Пусть M { displaystyle mathbf {M}} mathbf {M} будет комплексной матрицей размера m × n. <Времен313>M ∗ M { displaystyle mathbf {M} ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} является положительно полуопределенным и эрмитовым, по спектральной теореме, существует унитарная матрица размер n × n V { displaystyle mathbf {V}} mathbf {V} такая, что

V ∗ M ∗ MV = D ¯ = [D 0 0 0], { displaystyle mathbf {V} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} = { bar { mathbf {D}}} = { begin {bmatrix} mathbf {D} 0 \ 0 0 end {bmatrix}},}{ displaystyle  mathbf {V} ^ {*}  mathbf {M} ^ {*}  mathbf { M}  mathbf {V} = { bar { mathbf {D}}} = { begin {bmatrix}  mathbf {D} 0 \ 0 0  end {bmatrix}},}

где D { displaystyle mathbf {D}} mathbf {D} диагональный и положительно определенный размер ℓ × ℓ { displaystyle ell times ell}{ displaystyle  ell  times  ell} , где ℓ { displaystyle ell} ell количество ненулевых собственных значений M ∗ M { displaystyle mathbf {M } ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} (который можно показать для проверки ℓ ≤ min (n, m) { displaystyle ell leq min (n, m)}{ displaystyle  ell  leq  min (n, m)} ). Обратите внимание, что V { displaystyle mathbf {V}} mathbf {V} здесь по определению матрицы, i { displaystyle i}i -й столбец i { displaystyle i}i -й собственный вектор M ∗ M { displaystyle mathbf {M} ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} , соответствующее собственное значение D ¯ ii { displaystyle { bar { mathbf {D}}} _ {ii}}{ displaystyle { bar { mathbf { D}}} _ {ii}} . Кроме того, j { displaystyle j}j -й столбец V { displaystyle mathbf {V}} mathbf {V} для j>ℓ { displaystyle j> ell}{displaystyle j> ell} , является собственным вектором M ∗ M { displaystyle mathbf {M} ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} с собственным значением <3j13>D ¯ = 0 { displaystyle { bar { mathbf {D}}} _ {jj} = 0}{ displaystyle { bar { mathbf {D}}} _ {jj} = 0} . Это можно выразить записью V { displaystyle mathbf {V}} mathbf {V} как V = [V 1 V 2] { displaystyle mathbf {V} = { begin {bmatrix} mathbf {V} _ {1} mathbf {V} _ {2} end {bmatrix }}}{ displaystyle  mathbf {V} = { begin {bmatrix}  mathbf {V} _ {1}  mathbf {V} _ {2}  end {bmatrix}}} , где столбцы V 1 { displaystyle mathbf {V} _ {1}}{ displaystyle  mathbf {V} _ {1}} и V 2 { displaystyle mathbf {V} _ {2}}{ displaystyle  mathbf {V} _ {2}} , следовательно, содержат собственные конструкции M ∗ M { displaystyle mathbf {M} ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} , соответствующие нену левым и нулевым собственным значениям соответственно. Использование th переписывает V { displaystyle mathbf {V}} mathbf {V} , уравнение принимает следующий вид:

[V 1 ∗ V 2 ∗] M ∗ M [V 1 V 2] = [ V 1 * M * MV 1 V 1 * M * MV 2 V 2 * M * MV 1 V 2 * M * MV 2] = [D 0 0 0]. { displaystyle { begin {bmatrix} mathbf {V} _ {1} ^ {*} \ mathbf {V} _ {2} ^ {*} end {bmatrix}} mathbf {M} ^ { *} mathbf {M} { begin {bmatrix} mathbf {V} _ {1} mathbf {V} _ {2} end {bmatrix}} = { begin {bmatrix} mathbf {V} _ {1} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {1} mathbf {V} _ {1} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {2} \ mathbf {V} _ {2} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf { V} _ {1} mathbf {V} _ {2} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {2} end {bmatrix}} = { begin {bmatrix} mathbf {D} 0 \ 0 0 end {bmatrix}}.}{ displaystyle { begin {bmatrix}  mathbf {V} _ {1} ^ {*} \  mathbf {V} _ {2} ^ {*}  end {bma trix}}  mathbf {M} ^ {*}  mathbf {M} { begin {bmatrix}  mathbf {V} _ {1}  mathbf {V} _ {2}  end {bmatrix}} = { begin {bmatrix}  mathbf {V} _ {1} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ {1}  mathbf {V} _ {1} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ {2} \ mathbf { V} _ {2} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ {1}  mathbf {V} _ {2} ^ {*}  mathbf { M} ^ {*}  mathbf {M}  mathbf {V} _ {2}  end {bmatrix}} = { begini п {bmatrix}  mathbf {D} 0 \ 0 0  end {bmatrix}}.}

Отсюда следует, что

V 1 ∗ M ∗ MV 1 = D, V 2 ∗ M ∗ MV 2 = 0. { Displaystyle mathbf {V} _ {1} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {1} = mathbf {D }, quad mathbf {V} _ {2} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {2} = mathbf {0}.}{ displaystyle  mathbf {V} _ {1} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ { 1} =  mathbf {D},  quad  mathbf {V} _ {2} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ {2} =  mathbf {0}.}

Кроме того, второе уравнение подразумевает MV 2 = 0 { displaystyle mathbf {M} m athbf {V} _ {2} = mathbf {0}}{ displaystyle  mathbf {M}  mathbf {V} _ {2} =  mathbf {0}} . Наконец, унитарность V { displaystyle mathbf {V}} mathbf {V} переводится в терминах V 1 { displaystyle mathbf {V} _ {1}}{ displaystyle  mathbf {V} _ {1}} и V 2 { displaystyle mathbf {V} _ {2}}{ displaystyle  mathbf {V} _ {2}} , в следующих условиях:

V 1 * V 1 = I 1, V 2 * В 2 знак равно I 2, В 1 В 1 * + В 2 В 2 * = I 12, { Displaystyle { begin {align} mathbf {V} _ {1} ^ {*} mathbf {V} _ {1} = mathbf {I} _ {1}, \ mathbf {V} _ {2} ^ {*} mathbf {V} _ {2} = mathbf {I} _ {2}, \ mathbf { V} _ {1} mathbf {V} _ {1} ^ {*} + mathbf {V} _ {2} mathbf {V} _ {2} ^ {*} = mathbf {I} _ {12}, end {align}}}{ displaystyle { begin {align}  mathbf {V} _ {1} ^ {*}  mathbf {V} _ {1} =  mathbf {I} _ { 1}, \ mathbf {V} _ {2} ^ {*}  mathbf {V} _ {2} =  mathbf {I} _ {2}, \ mathbf {V} _ {1}  mathbf {V} _ {1} ^ {*} +  mathbf {V} _ {2}  mathbf {V} _ {2} ^ {*} =  mathbf {I} _ {12},  end {align}}}

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

Давайте теперь определим

U 1 = MV 1 D — 1 2. { displaystyle mathbf {U} _ {1} = mathbf {M} mathbf {V} _ {1} mathbf {D} ^ {- { frac {1} {2}}}.}{ displaystyle  mathbf {U} _ {1} =  mathbf {M}  mathbf {V} _ {1}  mathbf {D} ^ {- { frac {1} {2} }}.}

Тогда

U 1 D 1 2 V 1 ∗ = MV 1 D — 1 2 D 1 2 V 1 ∗ = M (I — V 2 V 2 ∗) = M — (MV 2) V 2 ∗ = M, { Displaystyle mathbf {U} _ {1} mathbf {D} ^ { frac {1} {2}} mathbf {V} _ {1} ^ {*} = mathbf {M} mathbf {V} _ {1} mathbf {D} ^ {- { frac {1} {2}}} mathbf { D} ^ { frac {1} {2}} mathbf {V} _ {1} ^ {*} = mathbf {M} ( mathbf {I} — mathbf {V} _ {2} mathbf {V} _ {2} ^ {*}) = mathbf {M} — ( mathbf {M} mathbf {V} _ {2}) mathbf {V} _ {2} ^ {*} = mathbf {M},}{ displaystyle  mathbf {U} _ {1}  mathbf {D} ^ { frac {1} {2}}  mathbf {V} _ {1} ^ { *} =  mathbf {M}  mathbf {V} _ {1}  mathbf {D} ^ {- { frac {1} {2}}}  mathbf {D} ^ { frac {1} {2 }}  mathbf {V} _ {1} ^ {*} =  mathbf {M} ( mathbf {I} -  mathbf {V} _ {2}  mathbf {V} _ {2} ^ {*}) =  mathbf {M} - ( mathbf {M}  mathbf {V} _ { 2})  mathbf {V} _ {2} ^ {*} =  mathbf {M},}

, поскольку MV 2 = 0. { displaystyle mathbf {M} mathbf {V} _ {2} = mathbf {0}.}{ displaystyle  mathbf {M}  mathbf {V} _ {2} =  mathbf {0}.} Это также можно рассматривать как непосредственное следствие факта, что MV 1 V 1 * = М { Displaystyle mathbf {M} mathbf {V} _ {1} mathbf {V} _ {1} ^ {* } = mathbf {M}}{ displaystyle  mathbf {M}  mathbf {V} _ {1 }  mathbf {V} _ {1} ^ {*} =  mathbf {M}} . Обратите внимание, как это эквивалентно наблюдению, если {vi} i = 1 l { displaystyle {{ boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}}{ displaystyle  {{ boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}} — это набор собственных векторов M ∗ M { displaystyle mathbf {M} ^ {*} mathbf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} , соответствующим ненулевым собственным значениям, тогда {M vi} i = 1 l { displaystyle { mathbf {M} { boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}}{ displaystyle  { mathbf {M} { boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}} — это набор ортогональных векторов, а {λ — 1/2 M vi} i = 1 l { displaystyle { lambda ^ {- 1/2} mathbf {M} { boldsymbol {v}} _ {i } } _ {i = 1} ^ {l}}{ displaystyle  { lambda ^ {- 1/2}  mathbf {M} { boldsymbol {v}} _ {i} } _ {я = 1} ^ {l}} набор (обычно неполный) ортонормированных векторов. Это соответствует матричному формализму, используемому выше, обозначающему V 1 { displaystyle mathbf {V} _ {1}}{ displaystyle  mathbf {V} _ {1}} матрицу, столбцы которой равны {vi} i = 1 l { displaystyle {{ boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}}{ displaystyle  {{ boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}} , с V 2 { displaystyle mathbf {V} _ {2}}{ displaystyle  mathbf {V} _ {2}} матрица, столбцы которой являются собственными векторами M ∗ M { displaystyle mathbf {M} ^ {*} math bf {M}}{ displaystyle  mathbf {M} ^ {*}  mathbf {M}} которая исчезает собственное значение и U 1 { displaystyle mathbf {U} _ {1}}{ displaystyl е  mathbf {U} _ {1}} матрица, столбцы которой являются векторами {λ — 1/2 M vi} i = 1 l { displaystyle { lambda ^ {- 1/2} mathbf {M} { boldsymbol {v}} _ {i} } _ {i = 1} ^ {l}}{ displaystyle  { lambda ^ {- 1/2}  mathbf {M} { boldsymbol {v}} _ {i} } _ {я = 1} ^ {l}} .

Мы видим, что это почти желаемый результат, за исключением того, что U 1 { displaystyle mathbf {U} _ {1}}{ displaystyl е  mathbf {U} _ {1}} и V 1 { displaystyle mathbf {V} _ {1} }{ displaystyle  mathbf {V} _ {1}} в общем случае не унитарны, поскольку они могут не быть квадратными. Однако мы знаем, что количество строк U 1 { displaystyle mathbf {U} _ {1}}{ displaystyl е  mathbf {U} _ {1}} не меньше количества столбцов, поскольку размеры D { displaystyle mathbf {D}} mathbf {D} не больше, чем m { displaystyle m}m и n { displaystyle n}n . Кроме того, поскольку

U 1 * U 1 = D — 1 2 V 1 * M * MV 1 D — 1 2 = D — 1 2 DD — 1 2 = I 1, { displaystyle mathbf {U} _ { 1} ^ {*} mathbf {U} _ {1} = mathbf {D} ^ {- { frac {1} {2}}} mathbf {V} _ {1} ^ {*} mathbf {M} ^ {*} mathbf {M} mathbf {V} _ {1} mathbf {D} ^ {- { frac {1} {2}}} = mathbf {D} ^ {- { frac {1} {2}}} mathbf {D} mathbf {D} ^ {- { frac {1} {2}}} = mathbf {I_ {1}},}{ displaystyle  mathbf {U} _ {1} ^ {*}  mathbf {U} _ {1} =  mathbf {D} ^ {- { frac {1} {2}}}  mathbf {V} _ {1} ^ {*}  mathbf {M} ^ {*}  mathbf {M}  mathbf {V} _ {1 }  mathbf {D} ^ {- { frac {1} {2}}} =  mathbf {D} ^ {- { frac {1} {2}}}  mathbf {D}  mathbf {D} ^ {- { frac {1} {2}}} =  mathbf {I_ {1}},}

столбцы в U 1 { displaystyle mathbf {U} _ {1}}{ displaystyl е  mathbf {U} _ {1}} являются ортонормированными и могут быть расширены до ортонормированного базиса. Это означает, что мы можем выбрать U 2 { displaystyle mathbf {U} _ {2}}{ displaystyle  mathbf {U} _ {2}} так, чтобы U = [U 1 U 2] { displaystyle mathbf {U } = { begin {bmatrix} mathbf {U} _ {1} mathbf {U} _ {2} end {bmatrix}}} mathbf {U} = { begin {bmatrix}  mathbf {U} _ {1}  mathbf {U} _ {2}  end {bmatrix}} унитарен.

Для V1у нас уже есть V2, чтобы сделать его унитарным. Теперь определите

Σ = [[D 1 2 0 0 0] 0], { displaystyle { boldsymbol { Sigma}} = { begin {bmatrix} { begin {bmatrix} mathbf {D} ^ { frac {1} {2}} 0 \ 0 0 end {bmatrix}} \ 0 end {bmatrix}},}{ displaystyle { boldsymbol { Sigma}} = { begin {bmatrix} { begin {bmatrix}  mathbf {D} ^ { frac {1} {2}} 0 \ 0 0  конец {bmatrix}} \ 0  конец {bmatrix}},}

где дополнительные нулевые строки добавляются или удаляются для создания количество нулевых строк равно количеству столбцов U2, и, следовательно, общие размеры Σ { displaystyle { boldsymbol { Sigma}}} boldsymbol { Sigma} равны m × п { Displaystyle м раз п}м  раз п . Тогда

[U 1 U 2] [[D 1 2 0 0 0] 0] [V 1 V 2] ∗ = [U 1 U 2] [D 1 2 V 1 ∗ 0] = U 1 D 1 2 V 1 * знак равно M, { Displaystyle { begin {bmatrix} mathbf {U} _ {1} mathbf {U} _ {2} end {bmatrix}} { begin {bmatrix} { begin { bmatrix} mathbf {} D ^ { frac {1} {2}} 0 \ 0 0 end {bmatrix}} \ 0 end {bmatrix}} { begin {bmatrix} mathbf {V} _ { 1} mathbf {V} _ {2} end {bmatrix}} ^ {*} = { begin {bmatrix} mathbf {U} _ {1} mathbf {U} _ {2} end {bmatrix}} { begin {bmatrix} mathbf {D} ^ { frac {1} {2}} mathbf {V} _ {1} ^ {*} \ 0 end {bmatrix}} = mathbf {U} _ {1} mathbf {D} ^ { frac {1} {2}} mathbf {V} _ {1} ^ {*} = mathbf {M},}{ displaystyle { begin {bmatrix}  mathbf {U} _ {1}  mathbf {U} _ {2}  end {bmatrix}} { begin {bmatrix} { begin {bmatrix}  mathbf {} D ^ { frac {1} {2}} 0 \ 0 0  конец {bmatrix}} \ 0  end {bmatrix}} { begin {bmatrix}  mathbf {V} _ {1}  mathbf {V} _ {2}  end {bmatrix}} ^ {*} = { begin {bmatrix}  mathbf {U} _ {1}  mathbf {U} _ {2}  end {bmatrix}} { begin {bmatrix}  mathbf {D} ^ { frac {1} { 2}}  mathbf {V} _ {1} ^ {*} \ 0  end {bmatrix}} =  mathbf {U} _ {1}  mathbf {D} ^ { frac {1} {2} }  mathbf {V} _ {1} ^ {*} =  mathbf {M},}

который является желаемый результат:

M = U Σ V ∗. { displaystyle mathbf {M} = mathbf {U} { boldsymbol { Sigma}} mathbf {V} ^ {*}.}{ displaystyle  mathbf {M} =  mathbf {U} { boldsymbol { Sigma}}  mathbf {V} ^ {*}.}

Обратите внимание, что аргумент может начинаться с диагонализации MM а не MM(это прямо показывает, что MM и MMимеют одинаковые ненулевые собственные значения).

На основе вариационной характеристики

Особые значения также могут быть охарактеризованы как максимумы uMv, рассматриваемые как функция u и v, над определенными подпространствами. Сингулярные векторы — это значения u и v, где достигаются эти максимумы.

Пусть M обозначает матрицу m × n с действительными элементами. Пусть S будет единицей (k — 1) { displaystyle (k-1)}(k-1) -sphere in R k { displaystyle mathbb {R} ^ {k}}{ displaystyle  mathbb {R} ^ {k}} , и положим σ (u, v) = u TM v, u ∈ S m — 1, v ∈ S n — 1. { displaystyle sigma ( mathbf {u}, mathbf {v}) = mathbf {u} ^ {textf {T}} mathbf {M} mathbf {v}, qquad mathbf {u} in S ^ {m-1}, mathbf {v} in S ^ {n-1}.}{ displaystyle  sigma ( mathbf {u},  mathbf {v}) =  mathbf {u} ^ { textf {T}}  mathbf {M}  mathbf {v},  qquad  mathbf {u}  in S ^ {m-1},  mathbf {v}  in S ^ {n-1}.}

Рассмотрим функцию σ, ограниченную на S × S. Поскольку и S, и S компактны, их изделие также компактно. Кроме того, поскольку σ непрерывно, оно достигает наибольшего значения по крайней мере для одной пары векторов u ∈ S и v ∈ S. Это наибольшее значение обозначается σ 1, а соответствующие векторы обозначены u1и v1. Поскольку σ 1 является наибольшим значением σ (u, v), оно должно быть неотрицательным. Если бы он был отрицательным, изменение знака u1или v1сделало бы его положительным и, следовательно, больше.

Утверждение. u1, v1- левый и правый сингулярные векторы M с соответствующим сингулярным значением σ 1.

Доказательство. Подобно случаю собственных значений, по предположению, два вектора удовлетворяют критерию Лагранжа уравнение множителя:

∇ σ = ∇ u TM v — λ 1 ⋅ ∇ u T u — λ 2 ⋅ ∇ v T v { displaystyle nabla sigma = nabla mathbf {u} ^ {textf {T }} mathbf {M} mathbf {v} — lambda _ {1} cdot nabla mathbf {u} ^ {textf {T}} mathbf {u} — lambda _ {2} cdot nabla mathbf {v} ^ {textf {T}} mathbf {v}}{ displaystyle  nabla  sigma =  nabla  mathbf {u} ^ { textf {T}}  mathbf {M}  mathbf {v} -  лямбда _ {1}  cdot  nabla  mathbf {u} ^ { textf {T}}  mathbf {u} -  lambda _ {2}  cdot  nabla  mathbf {v} ^ { textf {T} }  mathbf {v}}

После некоторой алгебры это становится

M v 1 = 2 λ 1 u 1 + 0 MT u 1 = 0 + 2 λ 2 v 1 { displaystyle { begin {align} mathbf {M} mathbf {v} _ {1} = 2 lambda _ {1} mathbf {u} _ {1} +0 \ mathbf {M} ^ {textf {T}} mathbf {u} _ {1} = 0 + 2 lambda _ {2} mathbf {v} _ {1} end {align}}}{ displaystyle { begin {выровнено}  mathbf {M}  mathbf {v} _ {1} = 2  lambda _ {1}  mathbf {u} _ {1} +0 \ mathbf {M} ^ { textf {T}}  mathbf {u} _ { 1} = 0 + 2  lambda _ {2}  mathbf {v} _ {1}  end {align}}}

Умножив первое уравнение слева на u 1 T { displaystyle mathbf {u} _ {1} ^ {textf {T}}}{ displaystyle  mathbf {u} _ {1} ^ { textf {T}}} и второе уравнение слева на v 1 T { displaystyle mathbf {v} _ {1} ^ {textf {T}}}{ displaystyle  mathbf {v} _ {1} ^ { textf {T}}} и таки нг || и || = || v || = 1 дает

σ 1 = 2 λ 1 = 2 λ 2. { displaystyle sigma _ {1} = 2 lambda _ {1} = 2 lambda _ {2}.} sigma _ {1} = 2  lambda _ {1} = 2  lambda _ {2}.

Подставляя это в пару уравнений выше, мы получаем

M v 1 = σ 1 U 1 MT U 1 знак равно σ 1 v 1 { Displaystyle { begin {align} mathbf {M} mathbf {v} _ {1} = sigma _ {1} mathbf {u} _ {1} \ mathbf {M} ^ {textf {T}} mathbf {u} _ {1} = sigma _ {1} mathbf {v} _ {1} end {align}}}{ displaystyle { begin {align}  mathbf {M}  mathbf {v} _ {1} =  sigma _ {1}  mathbf {u} _ {1} \ mathbf {M} ^ { textf {T}}  mathbf {u} _ {1} =  sigma _ {1}  mathbf {v} _ {1}  end {align} }}

Это доказывает утверждение.

Больше сингулярных векторов и сингулярных значений можно найти, максимизируя σ (u, v) по сравнению с нормализованным u, v, которые ортогональны u1и v1соответственно.

Переход от действительного числа к комплексному аналогичен случаю собственных значений.

Вычисление SVD

Разложение по сингулярным значениям может быть вычислено с использованием следующих наблюдений:

  • Лево-сингулярные векторы M представляют собой набор ортонормированные собственные векторы из MM.
  • Право-сингулярные векторы M представляют собой набор ортонормированных собственных векторов MM.
  • неотрицательных сингулярных значений M (находится на диагональных элементах Σ { displaystyle mathbf { Sigma}} mathbf { Sigma } ) — квадратные корни неотрицательных собственных значений обоих MMи MM.

Численный подход

SVD матрицы M обычно вычисляется с помощью двухэтапной процедуры. На первом этапе матрица сокращается до двунаправленной матрицы. Это требует O (mn) операций с плавающей запятой (flop), предполагая, что m ≥ n. Второй шаг — вычислить SVD двухдиагональной матрицы. Этот шаг может быть выполнен только с помощью итеративного метода (как и в случае с алгоритмами собственных значений ). Однако на практике достаточно вычислить SVD с определенной точностью, как машина эпсилон. Если эта точность считается постоянной, то второй шаг занимает O (n) итераций, каждая из которых стоит O (n) провалов. Таким образом, первый этап более дорогой, а общая стоимость составляет O (млн) операций (Trefethen Bau III 1997, Lecture 31).

Первый шаг может быть выполнен с использованием отражений Хаусхолдера за 4 млн — 4n / 3 флопов, предполагая, что нужны только сингулярные значения, а не сингулярные векторы. Если m намного больше, чем n, то предпочтительно сначала уменьшить матрицу M до треугольной матрицы с помощью QR-разложения , а затем использовать отражения Хаусхолдера для дальнейшего уменьшения матрицы до двухдиагональной формы. ; общая стоимость составляет 2 млн + 2 тыс. операций (Trefethen Bau III 1997, Лекция 31).

Второй шаг может быть выполнен с помощью варианта QR-алгоритма для вычисления собственных значений, который впервые был описан Golub Kahan (1965) harvtxt error : несколько целей (2 ×): CITEREFGolubKahan1965 (справка ). Подпрограмма DBDSQR LAPACK реализует этот итерационный метод с некоторыми изменениями, чтобы охватить случай, когда особые значения очень малы (Demmel Kahan 1990). Вместе с первым шагом с использованием отражений Хаусхолдера и, при необходимости, QR-разложения, это формирует процедуру DGESVD для вычисления разложения по сингулярным значениям.

Тот же алгоритм реализован в Научной библиотеке GNU (GSL). GSL также предлагает альтернативный метод, использующий односторонний на шаге 2 (GSL Team 2007). Этот метод вычисляет SVD двухдиагональной матрицы путем решения последовательности задач SVD 2 × 2, аналогично тому, как алгоритм собственных значений Якоби решает последовательность методов собственных значений 2 × 2 (Golub Van Loan 1996, §8.6.3). Еще один метод для шага 2 использует идею алгоритмов собственных значений «разделяй и властвуй» (Trefethen Bau III 1997, Lecture 31).

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

(O M M ∗ O). { displaystyle { begin {pmatrix} mathbf {O} mathbf {M} \ mathbf {M} ^ {*} mathbf {O} end {pmatrix}}.}{ begin {pmatrix}  mathbf {O}  mathbf {M} \ mathbf {M} ^ {*}  mathbf {O}  end {pmatrix }}.

Подходы которые используют разложение по собственным значениям, основаны на алгоритме QR, который хорошо разработан, чтобы быть стабильным и быстрым. Обратите внимание, что сингулярные значения являются действительными, а правые и левые сингулярные векторы не требуются для формирования преобразований подобия. Можно итеративно переключаться между QR-разложением и LQ-разложением, чтобы найти действительные диагональные эрмитовы матрицы. Разложение QR дает M⇒ QR, а разложение LQ для R дает R⇒ LP. Таким образом, на каждой итерации у нас есть M⇒ QLP, обновляем M⇐ Lи повторяем ортогонализации. В конце концов, эта итерация между QR-разложением и LQ-разложением дает левую и правую унитарные сингулярные матрицы. Этот подход нельзя легко ускорить, поскольку алгоритм QR может иметь спектральные сдвиги или дефляцию. Это связано с тем, что метод сдвига нелегко определить без использования преобразований подобия. Однако этот итеративный подход очень просто реализовать, поэтому он является хорошим выбором, когда скорость не имеет значения. Этот метод также дает представление о том, как чисто ортогональные / унитарные преобразования могут получить SVD.

Аналитический результат 2 × 2 SVD

Сингулярные значения матрицы 2 × 2 могут быть найдены аналитически. Пусть матрица имеет вид M = z 0 I + z 1 σ 1 + z 2 σ 2 + z 3 σ 3 { displaystyle mathbf {M} = z_ {0} mathbf {I} + z_ {1} sigma _ {1} + z_ {2} sigma _ {2} + z_ {3} sigma _ {3}} mathbf {M} = z_ {0}  mathbf {I} + z_ {1}  sigma _ {1} + z_ {2}  сигма _ {2} + z_ {3}  sigma _ {3}

где zi ∈ C { displaystyle z_ {i} in mathbb {C}}z_ {i }  in  mathbb {C} — комплексные числа, которые параметризуют матрицу, I — единичная матрица, а σ i { displaystyle sigma _ {i}} sigma _ {i} обозначают матрицы Паули. Тогда его два сингулярных значения равны

σ ± = | z 0 | 2 + | z 1 | 2 + | z 2 | 2 + | z 3 | 2 ± (| z 0 | 2 + | z 1 | 2 + | z 2 | 2 + | z 3 | 2) 2 — | z 0 2 — z 1 2 — z 2 2 — z 3 2 | 2 = | z 0 | 2 + | z 1 | 2 + | z 2 | 2 + | z 3 | 2 ± 2 (Re ⁡ z 0 z 1 ∗) 2 + (Re ⁡ z 0 z 2 ∗) 2 + (Re ⁡ z 0 z 3 ∗) 2 + (Im ⁡ z 1 z 2 ∗) 2 + (Im ⁡ z 2 z 3 ∗) 2 + (Im ⁡ z 3 z 1 ∗) 2 { displaystyle { begin {align} sigma _ { pm} = { sqrt {| z_ {0} | ^ {2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2} pm { sqrt {(| z_ {0} | ^ {2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2}) ^ {2} — | z_ {0} ^ {2} -z_ {1} ^ {2} -z_ {2} ^ {2} -z_ {3} ^ {2} | ^ {2}}}}} \ = { sqrt {| z_ {0} | ^ { 2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2} pm 2 { sqrt {( operatorname {Re} z_ { 0} z_ {1} ^ {*}) ^ {2} + ( operatorname {Re} z_ {0} z_ {2} ^ {*}) ^ {2} + ( operatorname {Re} z_ {0} z_ {3} ^ {*}) ^ {2} + ( operatorname {Im} z_ {1} z_ {2} ^ {*}) ^ {2} + ( operatorname {Im} z_ {2} z_ { 3} ^ {*}) ^ {2} + ( operatorname {Im} z_ {3} z_ {1} ^ {*}) ^ {2}}}}} end {align}}}{ displaystyle { begin {align}  sigma _ { pm} = { sqrt {| z_ {0} | ^ {2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2}  pm { sqrt {(| z_ {0} | ^ {2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2}) ^ {2} - | z_ {0} ^ {2} -z_ {1} ^ {2} -z_ {2} ^ {2} -z_ {3} ^ {2} | ^ {2}}}}} \ = { sqrt {| z_ {0} | ^ {2} + | z_ {1} | ^ {2} + | z_ {2} | ^ {2} + | z_ {3} | ^ {2}  pm 2 { sqrt {( operatorname {Re} z_ {0} z_ {1} ^ {*}) ^ {2} + ( operatorname {Re} z_ {0} z_ {2} ^ {*}) ^ {2} + ( operatorname {Re} z_ {0} z_ {3} ^ {*}) ^ {2} + ( operatorname {Im} z_ {1} z_ {2} ^ {* }) ^ {2} + ( operatorname {Im} z_ {2} z_ {3} ^ {*}) ^ {2} + ( operatorname {Im} z_ {3} z_ {1} ^ {*}) ^ {2}}}}}  конец {выровнено}}}

Уменьшено SVD

В приложениях довольно необычно, чтобы полное SVD, включая полное унитарное разложение нулевого пространства матрицы, требовалось. Вместо этого часто бывает достаточно (а также быстрее и экономичнее для хранения) вычислить сокращенную версию SVD. Для матрицы M размера m × n ранга r можно выделить следующее:

Тонкий SVD

M = U n Σ n V ∗ { displaystyle mathbf {M} = mathbf {U} _ {n} { boldsymbol { Sigma}} _ {n} mathbf {V} ^ {*}} mathbf {M} =  mathbf {U} _ {n} { boldsymbol { Sigma}} _ {п}  mathbf {V} ^ {*}

Вычисляются только n векторов-столбцов U, соответствующих векторам-строкам V *. Остальные векторы-столбцы U не вычисляются. Это значительно быстрее и экономичнее, чем полный SVD, если n m. Матрица U ‘n, таким образом, имеет размер m × n, Σ n имеет диагональ n × n, а V имеет размер n × n.

Первым этапом вычисления тонкого SVD обычно будет QR-разложение M, которое может значительно ускорить вычисление, если n m.

Компактный SVD

M = U р Σ r V r ∗ { displaystyle mathbf {M} = mathbf {U} _ {r} { boldsymbol { Sigma}} _ {r} mathbf {V} _ {r} ^ {*}} mathbf {M} =  mathbf {U} _ {r} { boldsymbol { Sigma}} _ {r}  mathbf {V} _ {r} ^ {*}

Вычисляются только r векторов-столбцов U и r векторов-строк V *, соответствующих ненулевым сингулярным значениям Σ r. Остальные векторы U и V * не вычисляются. Это быстрее и экономичнее, чем тонкий СВД, если r ≪ n. Матрица U r, таким образом, имеет размер m × r, Σ r — диагональ r × r, а V r * — это r × n.

Усеченный SVD

M ~ = U t Σ t V t ∗ { displaystyle { tilde { mathbf {M}}} = mathbf {U} _ {t} { boldsymbol { Sigma}} _ {t} mathbf {V} _ {t} ^ {*}}{ tilde { mathbf {M}}} =  mathbf {U} _ {t} { boldsymbol { Sigma}} _ {t}  mathbf {V} _ {t} ^ {*}

Только t векторов-столбцов U и t векторов-строк V *, соответствующие t наибольшим сингулярным значениям Σ t рассчитаны. Остальная часть матрицы отбрасывается. Это может быть намного быстрее и экономичнее, чем компактный SVD, если t≪r. Матрица U t, таким образом, имеет вид m × t, Σ t — диагональ t × t, а V t * — это t × n.

Конечно, усеченный SVD больше не является точным разложением исходной матрицы M, но, как обсуждалось выше, приблизительной матрицей M ~ { displaystyle { tilde { mathbf {M}}}}{ tilde { mathbf {M}}} в очень полезном смысле является ближайшим приближением к M, которое может быть достигнуто с помощью матрицы ранга t.

Нормы

Нормы Ky Fan

Сумма k наибольших сингулярных значений M представляет собой матричную норму, Ky Fan k-норма M.

Первая из норм Ky Fan, 1-норма Ky Fan, совпадает с оператором norm M как линейным оператором относительно к евклидовой норме K и K. Другими словами, 1-норма Ки Фана — это операторная норма, индуцированная стандартным ℓ евклидовым скалярным произведением. По этой причине его еще называют операторной 2-нормой. Нетрудно проверить связь между 1-нормой Ky Fan и сингулярными значениями. В общем случае это верно для ограниченного оператора M в (возможно, бесконечномерном) гильбертовом пространстве

‖ M ‖ = ‖ M ∗ M ‖ 1 2 { displaystyle | mathbf {M} | = | mathbf {M} ^ {*} mathbf {M} | ^ { frac {1} {2}}} |  mathbf {M}  | =  |  mathbf {M} ^ {*}  mathbf {M}  | ^ { frac {1} {2}}

Но в матричном случае (M * M) является нормальной матрицей, поэтому || M * M || — наибольшее собственное значение (M * M), то есть наибольшее сингулярное значение M.

Последняя из норм Ки Фана, сумма всех сингулярных значений, является нормой следа (также известная как «ядерная норма»), определяемая как || M || = Tr [(M * M)] (собственные значения M * M — это квадраты сингулярных значений).

Норма Гильберта – Шмидта

Сингулярные значения связаны с другой нормой в пространстве операторов. Рассмотрим скалярное произведение Гильберта – Шмидта на матрицах n × n, определенное как

⟨M, N⟩ = trace ⁡ (N ∗ M). { displaystyle langle mathbf {M}, mathbf {N} rangle = operatorname {trace} left ( mathbf {N} ^ {*} mathbf {M} right).} langle  mathbf {M},  mathbf {N}  rangle =  operatorname {trace}  left ( mathbf {N} ^ {*}  mathbf {M}  right).

Итак индуцированная норма равна

‖ M ‖ = ⟨M, M⟩ = trace ⁡ (M ∗ M). { displaystyle | mathbf {M} | = { sqrt { langle mathbf {M}, mathbf {M} rangle}} = { sqrt { operatorname {trace} left ( mathbf { M} ^ {*} mathbf {M} right)}}.} |  mathbf {M}  | = { sqrt { langle  mathbf {M},  mathbf {M}  rangle}} = { sqrt { operatorname {trace}  left ( mathbf {M} ^ {*}  mathbf {M}  верно)}}.

Поскольку след инвариантен относительно унитарной эквивалентности, это показывает

‖ M ‖ = ∑ i σ i 2 { displaystyle | mathbf {M} | = { sqrt { sum _ {i} sigma _ {i} ^ {2}}}} |  mathbf {M}  | = { sqrt { sum _ {i}  sigma _ {i} ^ {2}}}

где σ i — сингулярные значения М . Это называется нормой Фробениуса, 2-нормой Шаттена или нормой Гильберта – Шмидта из M . Прямой расчет показывает, что норма Фробениуса M = (m ij) совпадает с:

∑ i j | м я j | 2. { displaystyle { sqrt { sum _ {ij} | m_ {ij} | ^ {2}}}.}{ sqrt { сумма _ {ij} | m_ {ij} | ^ {2}}}.

Кроме того, норма Фробениуса и норма следа (ядерная норма) являются частными случаями Норма Шаттена.

Вариации и обобщения

Представление Mode-k

M = USVT { displaystyle M = USV ^ {textf {T}}}{ displaystyle M = USV ^ { textf {T} }} может быть представлено с использованием умножения режима-k матрицы S { displaystyle S}S с применением × 1 U { displaystyle times _ {1} U}{ displaystyle  times _ {1} U} затем × 2 V { displaystyle times _ {2} V}{ displaystyle  times _ {2} V} для результата; то есть M = S × 1 U × 2 V { displaystyle M = S times _ {1} U times _ {2} V}{ displaystyle M = S  times _ {1} U  times _ {2} V} .

Tensor SVD

Два типа тензора существуют декомпозиции, которые обобщают SVD на многоходовые массивы. Один из них разбивает тензор на сумму тензоров ранга 1, что называется разложением тензорного ранга . Второй тип разложения вычисляет ортонормированные подпространства, связанные с различными факторами, появляющимися в тензорном произведении векторных пространств, в которых живет тензор. Это разложение упоминается в литературе как SVD высшего порядка (HOSVD) или Tucker3 / TuckerM. Кроме того, полилинейный анализ главных компонентов в обучении полилинейных подпространств включает в себя те же математические операции, что и разложение Таккера, и используется в другом контексте уменьшения размерности.

Масштабно-инвариантный SVD

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

Масштабно-инвариантный SVD, или SI-SVD, аналогичен обычному SVD, за исключением того, что его однозначно определенные сингулярные значения инвариантны относительно диагональных преобразований A. Другими словами, сингулярные значения DAE для невырожденных диагональных матриц D и E равны сингулярным значениям A. Это важное свойство для приложений, для которых требуется инвариантность к выбору единиц измерения переменных (например, метрических единиц по сравнению с имперскими).

HOSVD функций — численная реконструкция — преобразование модели TP

преобразование модели TP численно восстанавливает HOSVD функций. Для получения дополнительной информации посетите:

Ограниченные операторы в гильбертовых пространствах

Факторизация M= UΣ { displaystyle mathbf { Sigma}} mathbf { Sigma } Vможет быть расширена до ограниченного оператора M в сепарабельном гильбертовом пространстве H. А именно, для любого ограниченного оператора M существует частичная изометрия U, унитарное V, пространство с мерой (X, μ) и неотрицательное измеримое f, такое что

M = UT f V ∗ { displaystyle mathbf {M} = mathbf {U} T_ {f} mathbf {V} ^ {*}} mathbf {M} =  mathbf {U} T_ {f}  mathbf {V} ^ {*}

где T f { displaystyle T_ {f}}T_ {f} — умножение на f на L (X, μ).

Это можно показать, имитируя линейный алгебраический аргумент для матричного случая выше. VT f V * — это уникальный положительный квадратный корень из M * M, как указано в функциональном исчислении Бореля для самосопряженных операторов. Причина, по которой U не обязательно должен быть унитарным, заключается в том, что, в отличие от конечномерного случая, при заданной изометрии U 1 с нетривиальным ядром подходящее U 2 может не быть найдено так, что

[U 1 U 2] { displaystyle { begin {bmatrix} U_ {1} \ U_ {2} end {bmatrix}}}{ begin {bmatrix} U_ {1} \ U_ {2}  конец {bmatrix}}

— унитарный оператор.

Что касается матриц, факторизация по сингулярным числам эквивалентна полярному разложению для операторов: мы можем просто написать

M = UV ∗ ⋅ VT f V ∗ { displaystyle mathbf {M} = mathbf {U} mathbf {V} ^ {*} cdot mathbf {V} T_ {f} mathbf {V} ^ {*}} mathbf {M } =  mathbf {U}  mathbf {V} ^ {*}  cdot  mathbf {V} T_ {f}  mathbf {V} ^ {*}

и обратите внимание, что UV * по-прежнему частичная изометрия при положительном значении VT f V *.

Сингулярные значения и компактные операторы

Понятие сингулярных значений и левых / правых сингулярных векторов может быть расширено до компактного оператора в гильбертовом пространстве, поскольку они имеют дискретный спектр. Если T компактно, каждое ненулевое λ в его спектре является собственным значением. Более того, компактный самосопряженный оператор может быть диагонализован по его собственным векторам. Если M компактно, то MMтоже. Применяя результат диагонализации, унитарный образ его положительного квадратного корня T f имеет набор ортонормированных собственных векторов {e i }, соответствующих строго положительным собственным значениям {σ i }. Для любого ψ ∈ H

M ψ = UT f V ∗ ψ = ∑ i ⟨UT f V ∗ ψ, U ei⟩ U ei = ∑ i σ i ⟨ψ, V ei⟩ U ei, { displaystyle mathbf {M} psi = mathbf {U} T_ {f} mathbf {V} ^ {*} psi = sum _ {i} left langle mathbf {U} T_ {f} mathbf { V} ^ {*} psi, mathbf {U} e_ {i} right rangle mathbf {U} e_{i} = sum _ {i} sigma _ {i} left langle psi, mathbf {V} e_ {i} right rangle mathbf {U} e_ {i},}{ Displaystyle  м athbf {M}  psi =  mathbf {U} T_ {f}  mathbf {V} ^ {*}  psi =  sum _ {i}  left  langle  mathbf {U} T_ {f}  mathbf {V} ^ {*}  psi,  mathbf {U} e_ {i}  right  rangle  mathbf {U} e_ {i} =  sum _ {i}  sigma _ {i}  left  langle  psi,  mathbf {V} e_ {i}  right  rangle  mathbf {U} e_ {i},}

где ряд сходится в топологии нормы на H. Обратите внимание, как это похоже на выражение из специального кейс. σ i называются сингулярными значениями M . {Uei} (соответственно {Vei}) можно рассматривать как лево-сингулярные (соответственно право-сингулярные) топ-строение для M.

Компактные операторы в гильбертовом пространстве являются контактированием операторами конечного ранга в единой операторнойологии. Вышеупомянутое выражение ряда дает явное представление. Непосредственным следствием этого является:

Теорема. Mкомпактна тогда и только тогда, когда MMкомпактна.

История

Разложение по сингулярным числам было разработано различными геометрами, который хотел определить, может ли реальная билинейная форма быть сделана равной другой посредством других ортогональных преобразователей двух пространств, в которых она действует. Эухенио Бельтрами и Камилла Джордан независимо от друга в 1873 и 1874 годах разработаны, что сингулярные значения билинейных форм, представленные в виде матрицы, образуют полный набор инвариантов для билинейных форм при ортогональных подстановках. Джеймс Джозеф Сильвестр также пришел к разложению по сингулярным числам для вещественных квадратных матриц в 1889 году, по-внешнему, независимо от Бельтрами и Джордана. Сильвестр назвал сингулярные значения каноническими множителями матрицы A. Четвертым математиком, открывшим независимое разложение по сингулярным числам, является Autonne в 1915 году, который пришел к нему с помощью полярного разложения. Первое доказательство разложения по сингулярным числам для прямоугольных и комплексных матриц, по-видимому, было сделано Карлом Эккартом и Гейлом Дж. Янгом в 1936 году; они рассматривали это как обобщение преобразования главной оси для эрмитовых матриц.

В 1907 г. Эрхард Шмидт определил аналог сингулярных значений для интегральных операторов (компактные при некоторых слабых технических предположениях); похоже, он не знал о параллельной работе над сингулярными значениями конечных матриц. Эта теория была развита Эмилем Пикаром в 1910 году, который первым назвал числа σ k { displaystyle sigma _ {k}} sigma _ {k} сингулярными значениями (или по-французски valeurs singulières).

Практические методы вычисления SVD восходят к Когбетлянцу в 1954, 1955 году и Хестенсу в 1958 году. Они очень похожи на алгоритм собственных значений Якоби, который использует вращения плоскости или вращения Гивенса. Однако они были заменены методом Джина Голуба и Уильяма Кахана, опубликованным в 1965 году, который использует преобразования Хаусхолдера или отражения. В 1970 году Голуб и Кристиан Райнш опубликовали вариант алгоритма Голуба / Кахана, который до сих пор остается наиболее часто используемым.

См. Также

Примечания

Ссылки

  • Банерджи, Судипто; Рой, Аниндия (2014), Линейная алгебра и матричный анализ для статистики, Тексты в статистической науке (1-е изд.), Chapman and Hall / CRC, ISBN 978-1420095388
  • Trefethen, Lloyd N. ; Бау III, Дэвид (1997). Численная линейная алгебра. Филадельфия: Общество промышленной и прикладной математики. ISBN 978-0-89871-361-9. CS1 maint: ref = harv (ссылка )
  • Деммел, Джеймс ; Кахан, Уильям (1990). «Точные сингулярные значения двухдиагональных матриц». SIAM Journal on Scientific and Statistical Computing. 11 (5): 873–912. CiteSeerX 10.1.1.48.3740. doi : 10.1137 / 0911052.
  • Голуб, Джин Х. ; Кахан, Уильям (1965). «Вычисление сингулярных чисел и псевдообратной матрицы». Журнал Общества промышленной и прикладной математики, серия B: численный анализ. 2 (2): 205–224. Bibcode : 1965SJNA…. 2..205G. doi : 10.1137 / 0702016. JSTOR 2949777.
  • Голуб, Джин Х. ; Ван Лоан, Чарльз Ф. (1996). Matrix Computations (3-е изд.). Johns Hopkins. ISBN 978-0 -8018-5414-9.
  • GSL Team (2007). «§14.4 Разложение по сингулярным значениям». Научная библиотека GNU. Справочное руководство.
  • Халлдор, Бьорнссон и Венегас, Сил через А. (1997). «Руководство по анализу климатических данных EOF и SVD». Университет Макгилла, Отчет CCGCR № 97-1, Монреаль, Квебек, 52 стр.
  • Hansen, P. C. (1987). «Усеченный СВД как метод регуляризации». НЕМНОГО. 27 (4): 534–553. doi : 10.1007 / BF01937276. CS1 maint: ref = harv (ссылка )
  • Хорн, Роджер А.; Джонсон, Чарльз Р. (1985). «Раздел 7.3». Матричный анализ. Cambridge University Press. ISBN 978-0-521-38632-6.
  • Хорн, Роджер А.; Джонсон, Чарльз Р. (1991). «Глава 3». Темы матричного анализа. Издательство Кембриджского университета. ISBN 978-0-521-46713-1.
  • Самет, Х. (2006). Основы многомерных и метрических структур данных. Морган Кауфманн. ISBN 978-0-12-369446-1.
  • Стренг Г. (1998). «Раздел 6.7». Линейную алгебру (3-е изд.). Wellesley-Cambridge Press. ISBN 978-0-9614088-5-5.
  • Стюарт, Г. У. (1993). «О ранней истории разложения сингулярных значений». Обзор SIAM. 35 (4): 551–566. CiteSeerX 10.1.1.23.1831. DOI : 10.1137 / 1035134. HDL : 1903/566. JSTOR 2132388. CS1 maint: ref = harv (ссылка )
  • Уолл, Майкл Э.; Рехтштайнер, Андреас; Роча, Луис М. (2003). «Разложение по сингулярным значениям и анализ главного компонента». В Д.П. Беррар; В. Дубицки; М. Гранцов (ред.). Практический подход к анализу данных микрочипов. Норвелл, Массачусетс: Kluwer. Стр. 91–109.
  • Нажмите, WH; Теукольский С.А.; Феттерлинг, штат Вашингтон; Flannery, BP (2007), «Раздел 2.6», Численные рецепты: Искусство научных вычислений (3-е изд.), Нью-Йорк: Cambridge University Press, ISBN 978-0-521-88068-8

Внешние ссылки

Понравилась статья? Поделить с друзьями:
  • Как составить план текста документа
  • Как найти телефон под подушкой реально работает
  • Вздувшийся дсп как исправить
  • Как составить рассказ про имя существительное
  • Как найти периметр 4 угольника по диагоналям