Русская Википедия:Сингулярное разложение
Сингуля́рное разложе́ние — определённого типа разложение прямоугольной матрицы, имеющее широкое применение, в силу своей наглядной геометрической интерпретации, при решении многих прикладных задач. Переформулировка сингулярного разложения, так называемое разложение Шмидта, имеет приложения в квантовой теории информации, например, в запутанности.
Сингулярное разложение матрицы <math>M</math> позволяет вычислять сингулярные числа данной матрицы, а также левые и правые сингулярные векторы матрицы <math>M</math>:
- левые сингулярные векторы матрицы <math>M</math> — это собственные векторы матрицы <math>MM^{*}</math>;
- правые сингулярные векторы матрицы <math>M</math> — это собственные векторы матрицы <math>M^{*}M</math>.
Где <math>M^{*}</math>— эрмитово-сопряжённая матрица к матрице <math>M</math>, для вещественной матрицы <math>M^{*} = M^{T} </math>.
Сингулярные числа матрицы не следует путать с собственными числами той же матрицы.
Сингулярное разложение является удобным при вычислении ранга матрицы, ядра матрицы и псевдообратной матрицы.
Сингулярное разложение также используется для приближения матриц матрицами заданного ранга.
Определение
Пусть матрица <math>M</math> порядка <math>m \times n</math> состоит из элементов из поля <math>K</math>, где <math>K</math> — либо поле вещественных чисел, либо поле комплексных чисел.
Сингулярные числа и сингулярные векторы
Неотрицательное вещественное число <math>\sigma</math> называется сингулярным числом матрицы <math>M</math>, когда существуют два вектора единичной длины <math>u \in K^m</math> и <math>v \in K^n</math> такие, что:
- <math>Mv = \sigma u,</math> и <math>M^{*} u = \sigma v.</math>
Такие векторы <math>u</math> и <math>v</math> называются, соответственно, левым сингулярным вектором и правым сингулярным вектором, соответствующим сингулярному числу <math>\sigma</math>.
Разложение матрицы
Сингулярным разложением матрицы <math>M</math> порядка <math>m \times n</math> является разложение следующего вида
- <math>M = U\Sigma V^{*},</math>
где <math>\Sigma</math> — матрица размера <math>m \times n</math> с неотрицательными элементами, у которой элементы, лежащие на главной диагонали — это сингулярные числа (а все элементы, не лежащие на главной диагонали, являются нулевыми), а матрицы <math>U</math> (порядка <math>m</math>) и <math>V</math> (порядка <math>n</math>) — это две унитарные матрицы, состоящие из левых и правых сингулярных векторов соответственно (а <math>V^*</math> — это сопряжённо-транспонированная матрица к <math>V</math>).
Пример
Пусть дана матрица:
- <math>M =
\begin{bmatrix} 1 & 0 & 0 & 0 & 2\\ 0 & 0 & 3 & 0 & 0\\ 0 & 0 & 0 & 0 & 0\\ 0 & 4 & 0 & 0 & 0\end{bmatrix} </math>
Одним из сингулярных разложений этой матрицы является разложение <math>M = U \Sigma V^*</math>, где матрицы <math>U</math>, <math>\Sigma</math> и <math>V^*</math> следующие:
- <math>
U = \begin{bmatrix} 0 & 0 & 1 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & -1\\ 1 & 0 & 0 & 0\end{bmatrix}, \quad
\Sigma = \begin{bmatrix} 4 & 0 & 0 & 0 & 0\\ 0 & 3 & 0 & 0 & 0\\ 0 & 0 & \sqrt{5} & 0 & 0\\ 0 & 0 & 0 & 0 & 0\end{bmatrix}, \quad
V^* = \begin{bmatrix} 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0\\ \sqrt{0.2} & 0 & 0 & 0 & \sqrt{0.8}\\ 0 & 0 & 0 & 1 & 0\\ -\sqrt{0.8} & 0 & 0 & 0 & \sqrt{0.2}\end{bmatrix}, </math> так как матрицы <math>U</math> и <math>V</math> унитарны (<math>UU^* = I</math> и <math>VV^* = I</math>, где <math>I</math> — единичная матрица), а <math>\Sigma</math> — прямоугольная диагональная матрица, то есть <math>\Sigma_{ij} = 0</math>, если <math>i \neq j</math>.
Геометрический смысл
Пусть матрице <math>A</math> поставлен в соответствие линейный оператор. Сингулярное разложение можно переформулировать в геометрических терминах. Линейный оператор, отображающий элементы пространства <math>\R^n</math> в себя, представим в виде последовательно выполняемых линейных операторов вращения и растяжения. Поэтому компоненты сингулярного разложения наглядно показывают геометрические изменения при отображении линейным оператором <math>A</math> множества векторов из векторного пространства в себя или в векторное пространство другой размерности[1].
Для более визуального представления рассмотрим сферу <math>S</math> единичного радиуса в пространстве <math>\R^n</math>. Линейное отображение <math>T</math> отображает эту сферу в эллипсоид пространства <math>\R^m</math>. Тогда ненулевые сингулярные значения диагонали матрицы <math>\Sigma</math> являются длинами полуосей этого эллипсоида. В случае когда <math>n = m</math> и все сингулярные величины различны и отличны от нуля, сингулярное разложение линейного отображения <math>T</math> может быть легко проанализировано как последствие трех действий: рассмотрим эллипсоид <math>T(S)</math> и его оси; затем рассмотрим направления в <math>\R^n</math>, которые отображение <math>T</math> переводит в эти оси. Эти направления ортогональны. Вначале применим изометрию <math>\mathbf{v}^*</math>, отобразив эти направления на координатные оси <math>\R^n</math>. Вторым шагом применим эндоморфизм <math>\mathbf{d}</math>, диагонализированный вдоль координатных осей и расширяющий/сжимающий эти направления, используя длины полуосей <math>T(S)</math> как коэффициенты растяжения. Тогда произведение <math>\mathbf{d} \otimes \mathbf{v}^*</math> отображает единичную сферу на изометричный эллипсоид <math>T(S)</math>. Для определения последнего шага <math>u</math> просто применим изометрию к этому эллипсоиду так, чтобы перевести его в <math>T(S)</math>. Как можно легко проверить, произведение <math>\mathbf{u} \otimes \mathbf{d} \otimes \mathbf{v}^*</math> совпадает с <math>T</math>.
Приложения
Псевдообратная матрица
Сингулярное разложение может быть использовано для нахождения псевдообратных матриц, которые применяются, в частности, в методе наименьших квадратов.
Если <math>M = U\Sigma V^*</math>, то псевдообратная к ней матрица находится по формуле:
- <math> M^+ = V \Sigma^{-1} U^*,</math>
где <math>\Sigma^{-1}</math> — псевдообратная к матрице <math>\Sigma</math>, получающаяся из неё заменой каждого диагонального элемента <math>\sigma</math> на обратный к нему: <math>{\sigma}^{-1}</math> и транспонированием.
Приближение матрицей меньшего ранга
В некоторых практических задачах требуется приближать заданную матрицу <math>M</math> некоторой другой матрицей <math>M_k</math> с заранее заданным рангом <math>k</math>. Известна следующая теорема, которую иногда называют теоремой Эккарта — Янга.[2]
Если потребовать, чтобы такое приближение было наилучшим в том смысле, что евклидова норма разности матриц <math>M</math> и <math>M_k</math> минимальна, при ограничении <math>\mbox{rank}(M_k) = k</math>, то оказывается, что наилучшая такая матрица <math>M_k</math> получается из сингулярного разложения матрицы <math>M</math> по формуле:
- <math>M_k = U \Sigma_k V^*,</math>
где <math>\Sigma_k</math> — матрица <math>\Sigma</math>, в которой заменили нулями все диагональные элементы, кроме <math>k</math> наибольших элементов.
Если элементы матрицы <math>\Sigma</math> упорядочены по невозрастанию, то выражение для матрицы <math>M_k</math> можно переписать в такой форме:
- <math>M_k = U_k \Sigma_k V_k^*,</math>
где матрицы <math>U_k</math>, <math>\Sigma_k</math> и <math>V_k</math> получаются из соответствующих матриц в сингулярном разложении матрицы <math>M</math> обрезанием до ровно <math>k</math> первых столбцов.
Таким образом видно, что приближая матрицу <math>M</math> матрицей меньшего ранга, мы выполняем своего рода сжатие информации, содержащейся в <math>M</math>: матрица <math>M</math> размера <math>m \times n</math> заменяется меньшими матрицами размеров <math>m \times k</math> и <math>k \times n</math> и диагональной матрицей с <math>k</math> элементами. При этом сжатие происходит с потерями — в приближении сохраняется лишь наиболее существенная часть матрицы <math>M</math>.
Во многом благодаря этому свойству сингулярное разложение и находит широкое практическое применение: в сжатии данных, обработке сигналов, численных итерационных методах для работы с матрицами, методе главных компонент, латентно-семантическом анализе и прочих областях.
Сокращенное представление
Для матрицы <math>M</math> порядка <math>m \times n</math> при необходимости приближения матрицей ранга <math>r</math> меньшего чем <math>n</math> часто используют компактное представление разложения[3]:
- <math>M = U_r \Sigma_r V_r^*.</math>
Вычисляются только <math>r</math> столбцов <math>U</math> и <math>r</math> строк <math>V^*</math>. Остальные столбцы <math>U</math> и строки <math>V^*</math> не вычисляются. Это экономит большое количество памяти при <math>r \ll n</math>.
Приведем пример, допустим <math>m</math> это количество пользователей, каждый из которых проставил часть оценок фильмам, общее количество которых будем обозначать <math>n</math>, тогда матрица (сильно разреженная, т. к. каждый пользователь оценил лишь малую часть фильмов) будет обозначаться <math>M</math> и иметь достаточно большую размерность <math>[m\times n]</math>.
При желании работать с матрицей меньшей размерности мы должны вычислить сингулярное разложение:
<math>M = U\Sigma V^{*}</math> при этом матрица <math>\Sigma</math> как было сказано ранее является диагональной. После чего, если мы хотим сохранить только <math>90\% </math> информации, то мы должны взять <math>r</math>, таким образом, чтобы сумма квадратов первых элементов <math>\Sigma</math> была <math>90\% </math> от общей суммы всех квадратов диагональных элементов <math>\Sigma</math>.
Таким образом мы получим <math>U</math> размерностью <math>[m\times r]</math> (взяв <math>r</math> столбцов), <math>\Sigma</math> с размерностью <math>[r\times r]</math> и <math>V^*</math> с <math>[r\times n]</math>. После, вместо матрицы <math>M</math> мы можем манипулировать матрицей <math>M' = U\Sigma</math> с меньшей размерностью <math>[m\times r]</math>, которую часто интерпретируют, как матрицу оценок пользователей по категориям фильмов.
Программные реализации
Численные алгоритмы нахождения сингулярного разложения встроены во многие математические пакеты. Например, в системах MATLAB и GNU Octave его можно найти командой
[U, S, V] = svd(M);
SVD входит в список основных методов многих математических библиотек, в том числе свободно распространяемых.
Так, например, существуют реализации
- В GNU Scientific library (GSL):
https://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html
- Во framework'е ROOT, разрабатываемом в CERN и широко используемом в научной среде:
https://root.cern.ch/root/htmldoc/guides/users-guide/LinearAlgebra.html#svd
- В библиотеке Intel® Math Kernel Library (Intel® MKL).
https://software.intel.com/en-us/intel-mkl
- В библиотеке numpy для линейной алгебры в Python:
https://numpy.org/doc/stable/reference/generated/numpy.linalg.svd.html
- В библиотеке для машинного обучения tensorflow:
https://www.tensorflow.org/api_docs/python/tf/linalg/svd
- И некоторые другие
https://tedlab.mit.edu/~dr/SVDLIBC/
http://www.alglib.net/matrixops/general/svd.php
См. также
Примечания
Литература
Ссылки
Статьи
- Статья о сингулярном разложении на machinelearning.ru
- Статья на MathWorld и пример использования для сжатия изображения.Шаблон:Ref-en
Лекции on-line
- Лекция о сингулярном разложении в контексте метода главных компонент, Хайдельбергский университет, проф. Fred HamprechtШаблон:Ref-en
- ↑ Шаблон:Cite web
- ↑ Eckart, C., and Young, G. The approximation of one matrix by another of lower rank. Psychometrika, 1936, 1, 211—218.
- ↑ Шаблон:Книга