Простой итерационный алгоритм сингулярного разложения
Материал из MachineLearning.
(→Идея сингулярного разложения матрицы данных: дополнение) |
м (→Идея сингулярного разложения матрицы данных: викификация) |
||
(2 промежуточные версии не показаны) | |||
Строка 3: | Строка 3: | ||
== Идея сингулярного разложения матрицы данных == | == Идея сингулярного разложения матрицы данных == | ||
- | Если <tex>\operatorname{X}=\left\{x_1,..., x_m \right\}^T</tex> — матрица, составленная из векторов-строк центрированных данных, то <tex> C = \frac{1}{m-1}\operatorname{X}^T\operatorname{X}</tex> и задача о спектральном разложении ковариационной матрицы <tex> C </tex> превращается в задачу о ''сингулярном разложении'' матрицы данных <tex>\operatorname{X}</tex>. | + | Если <tex>\operatorname{X}=\left\{x_1,..., x_m \right\}^T</tex> — матрица, составленная из векторов-строк центрированных данных, то выборочная ковариационная матрица <tex> C = \frac{1}{m-1}\operatorname{X}^T\operatorname{X}</tex> и задача о спектральном разложении ковариационной матрицы <tex> C </tex> превращается в задачу о ''сингулярном разложении'' матрицы данных <tex>\operatorname{X}</tex>. |
Число <tex> \sigma \geq 0 </tex> называется '''сингулярным числом''' матрицы <tex>\operatorname{X}</tex> тогда и только тогда, когда существуют '''правый и левый сингулярные векторы''': такие <tex>m</tex>-мерный вектор-строка <tex>b_{\sigma}</tex> и <tex>n</tex>-мерный вектор-столбец <tex>a_{\sigma}</tex> (оба единичной длины), что выполнено два равенства: | Число <tex> \sigma \geq 0 </tex> называется '''сингулярным числом''' матрицы <tex>\operatorname{X}</tex> тогда и только тогда, когда существуют '''правый и левый сингулярные векторы''': такие <tex>m</tex>-мерный вектор-строка <tex>b_{\sigma}</tex> и <tex>n</tex>-мерный вектор-столбец <tex>a_{\sigma}</tex> (оба единичной длины), что выполнено два равенства: | ||
Строка 12: | Строка 12: | ||
<tex>C =\frac{1}{m-1}\operatorname{X} ^T \operatorname{X} </tex>, отвечающими положительным собственным числам <tex> \lambda_l=\frac{1}{m-1}\sigma_l^2 > 0 </tex>. | <tex>C =\frac{1}{m-1}\operatorname{X} ^T \operatorname{X} </tex>, отвечающими положительным собственным числам <tex> \lambda_l=\frac{1}{m-1}\sigma_l^2 > 0 </tex>. | ||
- | Хотя формально задачи сингулярного разложения матрицы данных и спектрального разложения ковариационной матрицы совпадают, | + | Хотя формально задачи сингулярного разложения матрицы данных и спектрального разложения ковариационной матрицы совпадают, [[алгоритм]]ы вычисления сингулярного разложения напрямую, без вычисления спектра ковариационной матрицы, более эффективны и устойчивы <ref>''Bau III, D., Trefethen, L. N.'', [http://books.google.com/books?id=bj-Lu6zjWbEC&pg=PA136&dq=isbn:9780898713619&sig=BmAatL8LDJZZRhfJIFVRHLQNJw0#PPP1,M1 Numerical linear algebra], Philadelphia: Society for Industrial and Applied Mathematics, 1997. (Lecture 31) ISBN 978-0-89871-361-9 </ref>. Это следует из того, что задача сингулярного разложения матрицы <tex>\operatorname{X}</tex> лучше обусловлена, чем задача разложения матрицы <tex>C =\frac{1}{m-1}\operatorname{X} ^T \operatorname{X} </tex>: для ненулевых собственных и сингулярных чисел |
:<tex>\frac{\lambda_{\max}}{\lambda_{\min}}= \left(\frac{\sigma_{\max}}{\sigma_{\min}}\right)^2.</tex> | :<tex>\frac{\lambda_{\max}}{\lambda_{\min}}= \left(\frac{\sigma_{\max}}{\sigma_{\min}}\right)^2.</tex> | ||
Строка 36: | Строка 36: | ||
Для квадратных симметричных положительно определённых матриц описанный алгоритм превращается в метод прямых итераций для поиска собственных векторов. | Для квадратных симметричных положительно определённых матриц описанный алгоритм превращается в метод прямых итераций для поиска собственных векторов. | ||
+ | |||
+ | == Сингулярное разложение тензоров и тензорный метод главных компонент == | ||
+ | |||
+ | Часто вектор данных имеет дополнительную структуру прямоугольной таблицы (например, плоское изображение) или даже многомерной таблицы - то есть [[тензор]]а: <tex>x_{i_{1}i_{2}...i_{q}}</tex>, <tex>1 \leq i_{j} \leq n_j</tex>. В этом случае также эффективно применять сингулярное разложение. Определение, основные формулы и алгоритмы переносятся практически без изменений: вместо матрицы данных имеем <tex>q+1</tex>-индексную величину <tex>\operatorname{X}=(x_{i_{0}i_{1}i_{2}...i_{q}})</tex>, где первый индекс <tex>i_{0}</tex>-номер точки (тензора) данных. | ||
+ | |||
+ | Основная процедура — поиск наилучшего приближения тензора <tex>x_{i_{0}i_{1}i_{2}...i_{q}}</tex> тензором вида <tex>a^0_{i_{0}} a^1_{i_{1}}a^2_{i_{2}}...a^q_{i_{q}}</tex> (где <tex>a^0=(a^0_{i_{0}})</tex> — <tex>m</tex>-мерный вектор (<tex>m</tex> - число точек данных), <tex>a^l=(a^l_{i_{l}})</tex> — вектор размерности <tex>n_l</tex> при <tex>l>0</tex>) методом наименьших квадратов: | ||
+ | :<tex>F= \frac{1}{2}\sum_{i_{0}=1}^m \sum_{i_{1}=1}^{n_1}...\sum_{i_{q}=1}^{n_q} (x_{i_{0}i_{1}...i_{q}} - a^0_{i_{0}} a^1_{i_{1}}...a^q_{i_{q}})^2 \to \min</tex> | ||
+ | Решение этой задачи дается последовательными итерациями по явным формулам. Если заданы все векторы-сомножители кроме одного <tex>a^k_{i_{k}}</tex>, то этот оставшийся определяется явно из достаточных условий минимума. | ||
+ | :<tex>a^k_{i_{k}}= \frac{\sum_{i_{0}=1}^m \sum_{i_{1}=1}^{n_1}... \sum_{i_{k-1}=1}^{n_{k-1}}\sum_{i_{k+1}=1}^{n_{k+1}}...\sum_{i_{q}=1}^{n_{q}}x_{i_{0}i_{1}...i_{k-1}i_{k}i_{k+1}...i_{q}} a^0_{i_{0}}a^{k-1}_{i_{k-1}}a^{k+1}_{i_{k+1}}...a^q_{i_{q}}}{\prod_{j\neq k}\|a^j\|^2 }\, . </tex> | ||
+ | B качестве начального приближения векторов <tex>a^l=(a^l_{i_{l}})</tex> (<tex>l>0</tex>) возьмем случайные векторы единичной длины, вычислим вектор <tex>a^0</tex>, далее для этого вектора <tex>a^0</tex> и данных векторов <tex>a^2 , a^3, ...</tex>вычисляем вектор <tex>a^1</tex> и т. д. (циклически перебирая индексы) Каждый шаг уменьшает значение <tex>F(b, a)</tex>. Алгоритм, очевидно, сходится. В качестве критерия остановки используется малость относительного уменьшения значения минимизируемого функционала <tex>F</tex> за цикл или малость самого значения <tex>F</tex>. Далее, из тензора <tex>\operatorname {X}</tex> вычитаем полученное приближение <tex>a^0_{i_{0}} a^1_{i_{1}}a^2_{i_{2}}...a^q_{i_{q}}</tex> и для остатка вновь ищем наилучшее приближение этого же вида и т. д., пока, например, норма очередного остатка не станет достаточно малой. | ||
+ | |||
+ | Это многокомпонентное сингулярное разложение (тензорный метод главных компонент) успешно применяется при обработка изображений, видеосигналов, и, шире, любых данных, имеющих табличную или тензорную структуру. | ||
+ | |||
== Примечания == | == Примечания == |
Текущая версия
Простой итерационный алгоритм сингулярного разложения матриц допускает простую высокопараллельную (в том числе, нейросетевую) реализацию. Сингулярное разложение матриц (англ. Singular value decomposition) необходимо для решения многих задач анализа данных. В том числе, анализ главных компонент сводится к сингулярному разложению матрицы центрированных данных.
Содержание |
Идея сингулярного разложения матрицы данных
Если — матрица, составленная из векторов-строк центрированных данных, то выборочная ковариационная матрица и задача о спектральном разложении ковариационной матрицы превращается в задачу о сингулярном разложении матрицы данных .
Число называется сингулярным числом матрицы тогда и только тогда, когда существуют правый и левый сингулярные векторы: такие -мерный вектор-строка и -мерный вектор-столбец (оба единичной длины), что выполнено два равенства:
Пусть — ранг матрицы данных. Сингулярное разложение матрицы данных — это её представление в виде
где — сингулярное число, — соответствующий правый сингулярный вектор-столбец, а — соответствующий левый сингулярный вектор-строка (). Правые сингулярные векторы-столбцы , участвующие в этом разложении, являются векторами главных компонент и собственными векторами эмпирической ковариационной матрицы , отвечающими положительным собственным числам .
Хотя формально задачи сингулярного разложения матрицы данных и спектрального разложения ковариационной матрицы совпадают, алгоритмы вычисления сингулярного разложения напрямую, без вычисления спектра ковариационной матрицы, более эффективны и устойчивы [1]. Это следует из того, что задача сингулярного разложения матрицы лучше обусловлена, чем задача разложения матрицы : для ненулевых собственных и сингулярных чисел
Теория сингулярного разложения была создана Дж. Дж. Сильвестром (англ. J. J. Sylvester) в 1889 г. и изложена во всех подробных руководствах по теории матриц [1].
Простой итерационный алгоритм сингулярного разложения
Основная процедура — поиск наилучшего приближения произвольной матрицы матрицей вида (где — -мерный вектор, а — -мерный вектор) методом наименьших квадратов:
Решение этой задачи дается последовательными итерациями по явным формулам. При фиксированном векторе значения , доставляющие минимум форме , однозначно и явно определяются из равенств :
Аналогично, при фиксированном векторе определяются значения :
B качестве начального приближения вектора возьмем случайный вектор единичной длины, вычисляем вектор , далее для этого вектора вычисляем вектор и т. д. Каждый шаг уменьшает значение . В качестве критерия остановки используется малость относительного уменьшения значения минимизируемого функционала за шаг итерации () или малость самого значения .
В результате для матрицы получили наилучшее приближение матрицей вида (здесь верхним индексом обозначен номер итерации). Далее, из матрицы вычитаем полученную матрицу , и для полученной матрицы уклонений вновь ищем наилучшее приближение этого же вида и т. д., пока, например, норма не станет достаточно малой. В результате получили итерационную процедуру разложения матрицы в виде суммы матриц ранга 1, то есть . Полагаем и нормируем векторы : В результате получена аппроксимация сингулярных чисел и сингулярных векторов (правых — и левых — ).
К достоинствам этого алгоритма относится его исключительная простота и возможность почти без изменений перенести его на данные с пробелами[1], а также взвешенные данные.
Существуют различные модификации базового алгоритма, улучшающие точность и устойчивость. Например, векторы главных компонент при разных должны быть ортогональны «по построению», однако при большом числе итерации (большая размерность, много компонент) малые отклонения от ортогональности накапливаются и может потребоваться специальная коррекция на каждом шаге, обеспечивающая его ортогональность ранее найденным главным компонентам.
Для квадратных симметричных положительно определённых матриц описанный алгоритм превращается в метод прямых итераций для поиска собственных векторов.
Сингулярное разложение тензоров и тензорный метод главных компонент
Часто вектор данных имеет дополнительную структуру прямоугольной таблицы (например, плоское изображение) или даже многомерной таблицы - то есть тензора: , . В этом случае также эффективно применять сингулярное разложение. Определение, основные формулы и алгоритмы переносятся практически без изменений: вместо матрицы данных имеем -индексную величину , где первый индекс -номер точки (тензора) данных.
Основная процедура — поиск наилучшего приближения тензора тензором вида (где — -мерный вектор ( - число точек данных), — вектор размерности при ) методом наименьших квадратов:
Решение этой задачи дается последовательными итерациями по явным формулам. Если заданы все векторы-сомножители кроме одного , то этот оставшийся определяется явно из достаточных условий минимума.
B качестве начального приближения векторов () возьмем случайные векторы единичной длины, вычислим вектор , далее для этого вектора и данных векторов вычисляем вектор и т. д. (циклически перебирая индексы) Каждый шаг уменьшает значение . Алгоритм, очевидно, сходится. В качестве критерия остановки используется малость относительного уменьшения значения минимизируемого функционала за цикл или малость самого значения . Далее, из тензора вычитаем полученное приближение и для остатка вновь ищем наилучшее приближение этого же вида и т. д., пока, например, норма очередного остатка не станет достаточно малой.
Это многокомпонентное сингулярное разложение (тензорный метод главных компонент) успешно применяется при обработка изображений, видеосигналов, и, шире, любых данных, имеющих табличную или тензорную структуру.
Примечания