Lecture 9 The SVD in Machine Learning

降维

矩阵表示

示例

其实是利用从列向量乘法来分解的,$X$第一列是由:

这不是SVD,不是奇异值。

$X$的秩是2,列向量、行向量最大为2.

上面接下来才是SVD。

Python numpy SVD结果如下:

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
import numpy as np
A = np.mat([[1, -1, -1, 1],
[-1, 1, -1, 1],
[1, -1, -1, 1],
[-1, 1, -1, 1],
[1, -1, 0, 0]])
u, s, vt = np.linalg.svd(A)
print("U:", u,'\n', "Sigma:", s, '\n', "VT:",vt)

OUT:

U: [[-4.47213595e-01 -5.00000000e-01 7.11769812e-01 2.08287624e-01
1.00420616e-17]
[ 4.47213595e-01 -5.00000000e-01 -3.37852315e-02 -1.24600260e-01
7.30296743e-01]
[-4.47213595e-01 -5.00000000e-01 -7.00888060e-01 2.34632102e-01
-6.08580619e-02]
[ 4.47213595e-01 -5.00000000e-01 2.29034795e-02 -3.18319466e-01
-6.69438681e-01]
[-4.47213595e-01 -5.55111512e-17 -2.17635041e-02 -8.85839452e-01
1.21716124e-01]]
Sigma: [3.16227766e+00 2.82842712e+00 2.95877601e-16 4.03361097e-17]

VT: [[-7.07106781e-01 7.07106781e-01 0.00000000e+00 0.00000000e+00]
[-7.02166694e-17 -7.02166694e-17 7.07106781e-01 -7.07106781e-01]
[ 2.98602000e-01 2.98602000e-01 -6.40965557e-01 -6.40965557e-01]
[ 6.40965557e-01 6.40965557e-01 2.98602000e-01 2.98602000e-01]]

$X^T=\tilde V \tilde \Sigma \tilde U^T $

最小二乘的SVD

SVD最小二乘

对于均是方阵$(AB)=B^{-1}A^{-1}$。另外$U^TU=U^TU=I=UU^{-1}$。

式2变为:

$V^TV=VV^T=I=VV^{-1} \Rightarrow V^T=V^{-1}$

因为$n \ge p$,$\Sigma$矩阵是瘦长型,下面全是0.$\Sigma$是$n \times p$,那么$\Sigma^T\Sigma$是$p \times p$。即

那么,竖线后面全是0

又叫做$\Sigma$的pseudo-inverse。

$ w$估计为:

证明: