Сингулярное разложение (SVD)

Вы можете помочь, добавив навигационные ссылки.

## Определение

Предположим, что

X
∈

R

N
×
D

,
r
a
n
k
# X
R

{\displaystyle X \in \mathbb{R}^{N \times D}, rank X = R}

.
Тогда существуют

* U
∈

R

N
×
R

{\displaystyle U \in \mathbb{R}^{N \times R}}
* Σ
∈

R

R
×
R

{\displaystyle \Sigma \in \mathbb{R}^{R \times R}}
* V
T

∈

R

R
×
D

{\displaystyle V^T \in \mathbb{R}^{R \times D}}

такие, что

# * X
U
Σ

V
T

{\displaystyle X = U\Sigma V^T}
# * Σ
d
i
a
g
{

σ
1

,
.
.
.
,

σ
R

}
,

σ
1

≥

σ
2

≥
.
.
.
≥

σ
R

>
0

{\displaystyle \Sigma = diag\{\sigma\_1, ..., \sigma\_R\}, \sigma\_1 \geq \sigma\_2 \geq ... \geq \sigma\_R > 0}

;
* U
T

# U
I
,

V
T

# V
I

{\displaystyle U^TU=I, V^TV=I}

.

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

σ
i
2

,
# i
1
…
R

{\displaystyle \sigma\_i^2, i = 1 \dots R}

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

## Свойства SVD-разложения и Связь с главными компонентами

Приглядимся поближе к SVD-разложению. Что мы увидим?

1. Столбцы

U

{\displaystyle U}

 — ортонормированный базис (ОНБ) столбцов

X

{\displaystyle X}

.
2. Строки

V
T

{\displaystyle V^T}

 — ОНБ строк

X

{\displaystyle X}

.
3. Строки

U

{\displaystyle U}

 — нормированные координаты строк

V
T

{\displaystyle V^T}

.
4. Σ

{\displaystyle \Sigma}

 — масштабирование, то есть

σ
1

,
…
,

σ
R

{\displaystyle \sigma\_1, \dots, \sigma\_R}

 — величины "вхождения" каждой строки

V
T

{\displaystyle V^T}

.
5. X

X
T

# U
U

Σ
2

⇒

{\displaystyle X X^T U = U \Sigma^2 \Rightarrow}

 столбцы

U

{\displaystyle U}

 — собственные векторы матрицы

X

X
T

{\displaystyle X X^T}

, отвечающие собственным значениям

σ
1
2

,
…
,

σ
R
2

{\displaystyle \sigma\_1^2, \dots, \sigma\_R^2}

.
6. X
T

X
# V
V

Σ
2

⇒

{\displaystyle X^T X V = V \Sigma^2 \Rightarrow}

 столбцы

V

{\displaystyle V}

 — собственные векторы матрицы

X
T

X

{\displaystyle X^TX}

, отвечающие собственным значениям

σ
1
2

,
…
,

σ
R
2

{\displaystyle \sigma\_1^2, \dots, \sigma\_R^2}

, а значит, **матрица

V

{\displaystyle V}

 состоит из первых

R

{\displaystyle R}

 главных компонент**.

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

* Снижение размерности: вместо

X
∈

R

N
×
D

{\displaystyle X \in \mathbb{R}^{N \times D}}

 можно использовать

U
K

∈

R

N
×
K

{\displaystyle U\_K \in \mathbb{R}^{N \times K}}
* Снижение потребления памяти

1. X
∈

R

N
×
D

{\displaystyle X \in \mathbb{R}^{N \times D}}

 требует

O
(
N
D
)

{\displaystyle O(ND)}

 памяти.
2. U
,
Σ
,
V

{\displaystyle U, \Sigma, V}

 требуют

O
(
N
R

R
2

R
D
# )
O
(
N
R
)

{\displaystyle O(NR + R^2 + RD) = O(NR)}

 памяти (при условии

N
>>
D

{\displaystyle N >> D}

).
3. Аналогично,

U
K

,

Σ
K

,

V
K

{\displaystyle U\_K, \Sigma\_K, V\_K}

 требуют

O
(
N
K
)

{\displaystyle O(NK)}

 памяти.

* Увеличение производительности

1. Перемножение вида

X
q

{\displaystyle Xq}

 производится за

O
(
N
D
)

{\displaystyle O(ND)}

 времени.
2. Перемножение вида

U
K

Σ
K

V
K
T

# q
(

U
K

Σ
K

)
(

V
K
T

q
)

{\displaystyle U\_K\Sigma\_K V\_K^Tq = (U\_K\Sigma\_K)(V\_K^Tq)}

 производится за

O
(
N
K
K
D
)

{\displaystyle O(NK + KD)}

 так как произведение

U
K

Σ
K

{\displaystyle U\_K\Sigma\_K}

 можно предпосчитать.

* Рекомендательные системы

Предположим, что

X

{\displaystyle X}

 такая матрица, что

X

i
j

{\displaystyle X\_{ij}}

 — оценка, которую поставил

i

{\displaystyle i}

-ый пользователь

j

{\displaystyle j}

-ому фильму.
Пусть

# X
U
Σ

V
T

{\displaystyle X = U\Sigma V^T}

. Тогда матрица

U

{\displaystyle U}

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

V

{\displaystyle V}

 будет описывать каждый фильм.

    Возможно написать что-то еще.