线性代数 (三): SVD数学证明与理解

SVD 数学证明与理解

命题

只讨论实矩阵.

任意矩阵 A m , n A_{m,n} 可以分解为:

A m , n = U Σ V T A_{m,n} = U\Sigma V^T

其中 U m , m U_{m,m} V n , n V_{n, n} 为由 R m \R^m R n \R^n 下的标准正交基组成, Σ \Sigma 为对角矩阵

证明

A T A A^TA 为半正定矩阵, 特征值都为非负数, 记其特征值为 σ ( A T A ) = { σ 1 2 . . . σ n 2 } \sigma (A^TA) = \{\sigma_1^2...\sigma_n^2\} , 并按照从大到小顺序排列

A T A A^T A 的秩为 r r , 则 σ 1 . . . σ r 0 = σ r + 1 = . . . = σ n \sigma_1 \ge ... \ge \sigma_r \ge 0 = \sigma_{r+1} = ... = \sigma_n

Σ = d i a g ( σ 1 . . . σ n ) , V = [ v 1 . . . v n ] \Sigma = diag(\sigma_1...\sigma_n), V=[v_1 ... v_n] 为其特征值平方根矩阵和对应的标准正交特征向量组

其中

Σ 1 = d i a g ( σ 1 . . . σ r ) , V 1 = [ v 1 . . . v r ] \Sigma_1 = diag(\sigma_1 ... \sigma_r) , V_1 = [v_1 ... v_r]

Σ 2 = d i a g ( σ r + 1 . . . σ n ) = 0 , V 2 = [ v r + 1 . . . v n ] \Sigma_2 = diag(\sigma_{r+1} ... \sigma_n) = \bold 0, V_2 = [v_{r+1} ... v_n]

于是有

A T A V 1 = V 1 Σ 1 2 A^TAV_1 = V_1\Sigma_1^2

变形得

Σ 1 1 V 1 T A T A V 1 Σ 1 1 = I \Sigma_1^{-1}V_1^TA^TAV_1\Sigma_1^{-1} = I (公式 I )

又有

$A^T A V_2 = V_2 \bold0 $

变形得

V 2 T A T A V 2 = ( A V 2 ) T ( A V 2 ) = 0 V_2^TA^TAV_2 = (AV_2)^T (AV_2)= \bold 0

因此

A V 2 = 0 AV_2 = \bold 0

U 1 = A V 1 Σ 1 1 U_1 = AV_1\Sigma_1^{-1}

公式 I, 有 U 1 T U 1 = I U_1^TU_1 = I

选择任意 U 2 U_2 使得 U = [ U 1 , U 2 ] U = [U_1, U_2] 为正交矩阵

于是有

U T A V = [ U 1 , U 2 ] T A [ V 1 , V 2 ] = [ U 1 A V 1 U 1 A V 2 U 2 A V 1 U 2 A V 2 ] = [ Σ 1 0 U 2 T U 1 Σ 1 0 ] = [ Σ 1 0 0 0 ] = Σ U^TAV = [U_1, U_2]^TA[V_1, V_2] = \begin{bmatrix}U_1AV_1&U_1AV_2\\U_2AV_1&U_2AV_2\end{bmatrix} = \begin{bmatrix}\Sigma _1&\bold 0\\U_2^TU_1\Sigma _1 & \bold 0\end{bmatrix} = \begin{bmatrix}\Sigma_1 & \bold 0 \\ \bold 0 & \bold 0\end{bmatrix} =\Sigma

所以

A = U Σ V T A = U\Sigma V^T

理解

在我看来, SVD 的功劳是, 它实现了对任意矩阵的特征值分解.

特征值分解的好处是, 它将一个矩阵分解为有限个同阶子矩阵的代权和, 从而实现了有损压缩.

对于本身即可对角化的方阵来说, SVD的速度比常规手段更快

因此, 在PCA中, SVD的角色是实现快速的特征值分解, 因为协方差矩阵本身就可对角化.

猜你喜欢

转载自blog.csdn.net/vinceee__/article/details/89040453