矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)

这篇具有很好参考价值的文章主要介绍了矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 特征值分解(EVD)

        设 A n × n A_{n \times n} An×n n n n个线性无关的特征向量 x 1 , … , x n \boldsymbol{x}_{1}, \ldots, \boldsymbol{x}_{n} x1,,xn,对应特征值分别为 λ 1 , … , λ n \lambda_{1}, \ldots, \lambda_{n} λ1,,λn

A [ x 1 ⋯ x n ] = [ λ 1 x 1 ⋯ λ n x n ] A\left[\begin{array}{lll}\boldsymbol{x}_{1} & \cdots & \boldsymbol{x}_{n}\end{array}\right]=\left[\begin{array}{lll}\lambda_{1} \boldsymbol{x}_{1} & \cdots & \lambda_{n} \boldsymbol{x}_{n}\end{array}\right] A[x1xn]=[λ1x1λnxn]

        所以:
A = [ x 1 ⋯ x n ] [ λ 1 ⋱ λ n ] [ x 1 ⋯ x n ] − 1 A = \left[\begin{array}{lll}\boldsymbol{x}_{1} & \cdots & \boldsymbol{x}_{n}\end{array}\right]\left[\begin{array}{lll}\lambda_{1} & & \\& \ddots & \\& & \lambda_{n}\end{array}\right]\left[\begin{array}{lll}\boldsymbol{x}_{1} & \cdots & \boldsymbol{x}_{n}\end{array}\right]^{-1} A=[x1xn]λ1λn[x1xn]1
        因此有EVD分解
A X = X Λ A = X Λ X − 1 A X=X \Lambda \quad \quad \quad A=X \Lambda X^{-1} AX=XΛA=XΛX1
        其中 X X X x 1 , … , x n ( 列 向 量 ) \boldsymbol{x}_{1}, \ldots, \boldsymbol{x}_{n}\left(\right. 列向量) x1,,xn()构成的矩阵, Λ = diag ⁡ ( λ 1 , … , λ n ) \Lambda=\operatorname{diag}\left(\lambda_{1}, \ldots, \lambda_{n}\right) Λ=diag(λ1,,λn)。即使固定 Λ \Lambda Λ X X X也不唯一。

        更为特殊的是,当矩阵 A A A是一个对称矩阵时,则存在一个对称对角化分解,即
A = X Λ X T A=X \Lambda X^{T} A=XΛXT
        其中, X X X的每一列都是相互正交的特征向量,且是单位向量, Λ \Lambda Λ对角线上的元素是从大到小排列的特征值。

        注意到要进行特征分解,矩阵 A A A必须为方阵。那么如果 A A A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是可以,此时我们的SVD登场了。


2 奇异值分解(SVD)

2.1 引言

        特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有 m m m个学生,每个学生有 n n n科成绩,这样形成的一个 m × n m\times n m×n的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:
A = U Σ V T A = U\Sigma V^T A=UΣVT

        假设 A A A是一个 m × n m\times n m×n的矩阵,那么得到的 U U U是一个 m × m m\times m m×m的方阵(里面的向量是正交的, U U U里面的向量称为左奇异向量), Σ \Sigma Σ是一个 m × n m\times n m×n的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值), V T V^T VT(V的转置)是一个 n × m n\times m n×m的矩阵,里面的向量也是正交的, V V V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片

矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)

        那么奇异值和特征值是怎么对应起来的呢?首先,我们将将A的转置和A做矩阵乘法,将会得到一个方阵,我们用这个方阵求特征值可以得到:
( A T A ) v i = λ i v i (A^TA)v_i = \lambda_i v_i (ATA)vi=λivi

        这样我们就可以得到矩阵 A T A A^TA ATA n n n个特征值和对应的 n n n个特征向量 v v v了。将 A T A A^TA ATA的所有特征向量张成一个 n × n n\times n n×n的矩阵 V V V,就是我们SVD公式里面的 V V V矩阵了。

        如果我们将 A A A A A A的转置做矩阵乘法,那么会得到 m × m m\times m m×m的一个方阵 A A T AA^T AAT。既然 A A T AA^T AAT是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:
( A A T ) u i = λ i u i (AA^T)u_i = \lambda_i u_i (AAT)ui=λiui

        这样我们就可以得到矩阵 A A T AA^T AAT m m m个特征值和对应的 m m m个特征向量 u u u了。将 A A T AA^T AAT的所有特征向量张成一个 m × m m\times m m×m的矩阵 U U U,就是我们SVD公式里面的 U U U矩阵了。

         U U U V V V我们都求出来了,现在就剩下奇异值矩阵 Σ \Sigma Σ没有求出了。由于 Σ \Sigma Σ除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值 σ \sigma σ就可以了。

        我们注意到:
A = U Σ V T ⇒ A V = U Σ V T V ⇒ A V = U Σ ⇒ A v i = σ i u i ⇒ σ i = A v i / u i A=U\Sigma V^T \Rightarrow AV=U\Sigma V^TV \Rightarrow AV=U\Sigma \Rightarrow Av_i = \sigma_i u_i \Rightarrow \sigma_i = Av_i / u_i A=UΣVTAV=UΣVTVAV=UΣAvi=σiuiσi=Avi/ui

        进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方,也就是说特征值和奇异值满足如下关系:
σ i = λ i \sigma_i = \sqrt{\lambda_i} σi=λi

        这里的 σ \sigma σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值 σ \sigma σ跟特征值类似,在矩阵 Σ \Sigma Σ中也是从大到小排列,而且 σ \sigma σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前 r r r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
A m × n ≈ U m × r Σ r × r V r × n T A_{m\times n} \approx U_{m\times r}\Sigma_{r\times r}V_{r\times n}^T Am×nUm×rΣr×rVr×nT

         r r r是一个远小于 m 、 n m、n mn的数,这样矩阵的乘法看起来像是下面的样子:

矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)

        右边的三个矩阵相乘的结果将会是一个接近于 A A A的矩阵,在这儿, r r r越接近于 n n n,则相乘的结果越接近于 A A A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵 A A A,我们如果想要压缩空间来表示原矩阵 A A A,我们存下这里的三个矩阵: U 、 Σ 、 V U、\Sigma、V UΣV就好了。

2.2 定义

        将一个非零的 m × n m\times n m×n实矩阵 A , A ∈ R m × n A,A\in R^{m\times n} A,ARm×n,表示为如下三个实矩阵的乘积形式的运算,即进行矩阵的因子分解:

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

        其中, U U U m m m阶正交矩阵, V V V n n n阶正交矩阵, Σ \Sigma Σ是由降序排列的非负对角元素组成的 m × n m\times n m×n矩形对角矩阵,用符号描述如下:

U U T = I , V V T = I Σ = d i a g ( σ 1 , σ 2 , . . . , σ p ) , σ 1 ≥ σ 2 ≥ ⋯ ≥ σ p ≥ 0 , p = m i n ( m , n ) UU^T=I,VV^T=I\\ \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p),\sigma_1\geq\sigma_2\geq\cdots\geq\sigma_p\geq 0,p=min(m,n) UUT=I,VVT=IΣ=diag(σ1,σ2,...,σp),σ1σ2σp0,p=min(m,n)

2.3 构造性的证明

1. 求 Σ , V \Sigma,V Σ,V
        由于 A A A m × n m\times n m×n阶的矩阵,所以 A T A A^TA ATA是一个 n × n n\times n n×n实对称矩阵,故可以对其做正交分解使得:

V T ( A T A ) V = Λ V^T(A^TA)V=\Lambda VT(ATA)V=Λ

        其中, V V V为n阶正交实矩阵, Λ \Lambda Λ n n n阶对角阵,其对角线元素由 A T A A^TA ATA的特征值构成,且这些特征值非负,下面简单说明,假设 λ \lambda λ A T A A^TA ATA的一个特征值, x x x是对应的特征向量,那么

∣ ∣ A x ∣ ∣ 2 = x T A T A x = λ x T x = λ ∣ ∣ x ∣ ∣ 2 ||Ax||^2=x^TA^TAx=\lambda x^Tx=\lambda ||x||^2 Ax2=xTATAx=λxTx=λx2

        所以:

λ = ∣ ∣ A x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 > 0 \lambda=\frac{||Ax||^2}{||x||^2}>0 λ=x2Ax2>0

        我们可以通过调整正交矩阵 V V V的排列损失使得对应的特征值形成降序排列:

λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p ≥ 0 \lambda_1\geq\lambda_2\geq \cdots \geq\lambda_p\geq 0 λ1λ2λp0

        接着计算奇异值:

σ j = λ j , j = 1 , 2 , . . . , p \sigma_j=\sqrt{\lambda_j},j=1,2,...,p σj=λj ,j=1,2,...,p

        假设 A A A的秩为 r r r,则 A T A A^TA ATA的秩也为r,所以有:

λ 1 ≥ λ 2 ≥ ⋯ ≥ λ r > 0 , λ r + 1 = λ r + 2 = ⋯ = λ p = 0 \lambda_1\geq\lambda_2\geq \cdots \geq\lambda_r> 0,\lambda_{r+1}=\lambda_{r+2}=\cdots=\lambda_p=0 λ1λ2λr>0,λr+1=λr+2==λp=0

        相应的,我们令:

V 1 = [ v 1 , . . . , v r ] , V 2 = [ v r + 1 , . . . , v p ] V_1=[v_1,...,v_r],V_2=[v_{r+1},...,v_p] V1=[v1,...,vr],V2=[vr+1,...,vp]

        则:

V = [ V 1   V 2 ] V=[V_1\ V_2] V=[V1 V2]

        同样地,我们令:

Σ 1 = d i a g ( σ 1 , . . . , σ r ) \Sigma_1=diag(\sigma_1,...,\sigma_r) Σ1=diag(σ1,...,σr)

        对其余部分填充0,使得:

Σ = [ Σ 1 0 0 0 ] \Sigma=\begin{bmatrix} \Sigma_1 & 0\\ 0 & 0 \end{bmatrix} Σ=[Σ1000]

2. 求 U U U

        接下来构造 m m m阶正交实对称矩阵 U U U,我们令:

u j = 1 σ j A v j , j = 1 , 2 , . . . , r u_j=\frac{1}{\sigma_j}Av_j,j=1,2,...,r uj=σj1Avj,j=1,2,...,r

        令:

U 1 = [ u 1 , . . . , u r ] U_1=[u_1,...,u_r] U1=[u1,...,ur]

        那么,如下关系就可以成立了:

A V 1 = U 1 Σ 1 AV_1=U_1\Sigma_1 AV1=U1Σ1

        接下来,再为 U 1 U_1 U1扩充 m − r m-r mr个标准正交向量,令 [ u r + 1 , . . . , u m ] [u_{r+1},...,u_m] [ur+1,...,um] N ( A T ) N(A^T) N(AT)的一组正交基,并令:

U 2 = [ u r + 1 , . . . , u m ] U = [ U 1   U 2 ] U_2=[u_{r+1},...,u_m]\\ U=[U_1\ U_2] U2=[ur+1,...,um]U=[U1 U2]

        所以:

U Σ V T = [ U 1 U 2 ] [ Σ 1 0 0 0 ] [ V 1 T V 2 T ] = U 1 Σ 1 V 1 T = A V 1 V 1 T = A U\Sigma V^T=\begin{bmatrix} U_1 & U_2 \end{bmatrix} \begin{bmatrix} \Sigma_1 & 0\\ 0 & 0 \end{bmatrix} \begin{bmatrix} V_1^T\\ V_2^T \end{bmatrix}=U_1\Sigma_1V_1^T=AV_1V_1^T=A UΣVT=[U1U2][Σ1000][V1TV2T]=U1Σ1V1T=AV1V1T=A

2.4 奇异值分解(SVD)的求法

        第一步:求出 A m × n T A m × n \pmb{A}^T_{m \times n}\pmb{A}_{m \times n} AAAm×nTAAAm×n n n n个特征值 λ 1 , λ 2 , ⋯   , λ r , λ r + 1 = 0 , ⋯   , λ n = 0 \lambda_1,\lambda_2, \cdots,\lambda_r , \lambda_{r+1}=0, \cdots, \lambda_{n} = 0 λ1,λ2,,λr,λr+1=0,,λn=0(并按照从大到小排列)和对应的标准正交的特征向量 v 1 , v 2 , ⋯   , v r , v r + 1 , ⋯   , v n \pmb{v}_1, \pmb{v}_2, \cdots,\pmb{v}_r,\pmb{v}_{r+1}, \cdots, \pmb{v}_{n} vvv1,vvv2,,vvvr,vvvr+1,,vvvn

        第二步:取标准正交的特征向量构成正交矩阵
V n × n = ( v 1 , v 2 , ⋯   , v r , v r + 1 , ⋯   , v n ) n × n \pmb{V}_{n \times n}=(\pmb{v}_1, \pmb{v}_2, \cdots,\pmb{v}_r,\pmb{v}_{r+1}, \cdots, \pmb{v}_{n})_{n \times n} VVVn×n=(vvv1,vvv2,,vvvr,vvvr+1,,vvvn)n×n

        取正奇异值,即前 r r r个奇异值,即非零特征值开根号 λ 1 , λ 2 , ⋯   , λ r \sqrt{\lambda_1}, \sqrt{\lambda_2}, \cdots,\sqrt{\lambda_r} λ1 ,λ2 ,,λr ,构成对角矩阵
D r × r = ( λ 1 λ 2 ⋱ λ r ) r × r \pmb{D}_{r \times r} = \begin{pmatrix} \sqrt{\lambda_1} \\ & \sqrt{\lambda_2} \\ & & \ddots \\ & & & \sqrt{\lambda_r} \end{pmatrix}_{r \times r} DDDr×r=λ1 λ2 λr r×r

        添加额外的0组成 m × n m\times n m×n的矩阵
Σ m × n = ( D r × r 0 0 0 ) m × n = ( λ 1 λ 2 0 ⋱ λ r 0 0 ) m × n \pmb{\Sigma}_{m \times n} = \begin{pmatrix} \pmb{D}_{r \times r} & \pmb{0} \\ \pmb{0} & \pmb{0} \end{pmatrix}_{m \times n} = \begin{pmatrix} \sqrt{\lambda_1} \\ & \sqrt{\lambda_2} & & & {\pmb{0}} \\ & & \ddots \\ & & & \sqrt{\lambda_r} \\ & {\pmb{0}} & & &{\pmb{0}} \end{pmatrix}_{m \times n} ΣΣΣm×n=(DDDr×r000000000)m×n=λ1 λ2 000λr 000000m×n

        第三步:构成前 r r r个标准正交向量 u 1 , u 2 , ⋯   , u r \pmb{u}_1, \pmb{u}_2, \cdots,\pmb{u}_r uuu1,uuu2,,uuur,其中 u i = 1 λ i A v i , i = 1 , 2 , ⋯   , r \pmb{u}_{i} = \frac{1}{\sqrt{\lambda_i}}\pmb{A}\pmb{v}_i\quad, i = 1, 2, \cdots,r uuui=λi 1AAAvvvi,i=1,2,,r

        第四步:将 u 1 , u 2 , ⋯   , u r \pmb{u}_1, \pmb{u}_2, \cdots,\pmb{u}_r uuu1,uuu2,,uuur扩充为 m m m维向量空间 R m \mathbb{R}^m Rm的标准正交基 u 1 , u 2 , ⋯   , u r , b 1 , ⋯   , b m − r \pmb{u}_1, \pmb{u}_2, \cdots,\pmb{u}_r, \pmb{b}_{1}, \cdots,\pmb{b}_{m-r} uuu1,uuu2,,uuur,bbb1,,bbbmr,组成正交矩阵
U m × m = ( u 1 , u 2 , ⋯   , u r , b 1 , ⋯   , b m − r ) m × m \pmb{U}_{m \times m} = (\pmb{u}_1, \pmb{u}_2, \cdots,\pmb{u}_r, \pmb{b}_{1}, \cdots,\pmb{b}_{m-r})_{ m \times m} UUUm×m=(uuu1,uuu2,,uuur,bbb1,,bbbmr)m×m

        第五步:写出即可:
A m × n = U m × m Σ m × n V n × n T = U m × m ( λ 1 λ 2 0 ⋱ λ r 0 0 ) m × n V n × n T \pmb{A}_{m \times n} =\pmb{U}_{m \times m} \pmb{\Sigma}_{ m \times n} \pmb{V}^T_{n \times n} = \pmb{U}_{m \times m} \begin{pmatrix} \sqrt{\lambda_1} \\ & \sqrt{\lambda_2} & & & {\pmb{0}} \\ & & \ddots \\ & & & \sqrt{\lambda_r} \\ & {\pmb{0}} & & &{\pmb{0}} \end{pmatrix}_{m \times n} \pmb{V}^T_{n \times n} AAAm×n=UUUm×mΣΣΣm×nVVVn×nT=UUUm×mλ1 λ2 000λr 000000m×nVVVn×nT

2.5 紧奇异值分解

        上面第二节的分解方式称为完全奇异分解,大家可以发现,如果 r < p r<p r<p,我们完全没有必要对 U 1 U_1 U1以及 V 1 V_1 V1进行扩充,因为通过 U 1 , Σ 1 , V 1 U_1,\Sigma_1,V_1 U1,Σ1,V1就可以无损还原 A A A,即:

A = U 1 Σ 1 V 1 T A=U_1\Sigma_1V_1^T A=U1Σ1V1T

        这便是紧奇异分解。

2.6 截断奇异值分解

        另外,我们也可以只取最大的 k k k个奇异值( k < r k<r k<r)对应的部分去近似 A A A,这便是截断奇异值分解,即:

A ≈ U k Σ k V k T A \approx U_k\Sigma_kV_k^T AUkΣkVkT

        这里, U k U_k Uk是一个 m × k m\times k m×k的矩阵,由 U U U的前 k k k列得到, V k V_k Vk n × k n\times k n×k矩阵,由 V V V的前 k k k列得到, Σ k \Sigma_k Σk k k k阶对角矩阵,由 Σ \Sigma Σ的前 k k k k k k列得到。

        矩阵 A = [ a i j ] m × n A = [ a _ { i j } ] _ { m \times n } A=[aij]m×n的弗罗贝尼乌斯范数定义为
∥ A ∥ F = ( ∑ i = 1 m ∑ j = 1 n ( a i j ) 2 ) 1 2 \| A \| _ { F } = ( \sum _ { i = 1 } ^ { m } \sum _ { j = 1 } ^ { n } ( a _ { i j } ) ^ { 2 } ) ^ { \frac { 1 } { 2 } } AF=(i=1mj=1n(aij)2)21

        在秩不超过 k k k m × n m \times n m×n矩阵的集合中,存在矩阵 A A A的弗罗贝尼乌斯范数意义下的最优近似矩阵 X X X。秩为 k k k的截断奇异值分解得到的矩阵 A k A_k Ak能够达到这个最优值。奇异值分解是弗罗贝尼乌斯范数意义下,也就是平方损失意义下的矩阵最优近似。详细了解,请阅读:奇异值分解的低秩逼近

2.7 案例分析

        SVD的Python实现:

# 实现奇异值分解, 输入一个numpy矩阵,输出 U, sigma, V
# https://zhuanlan.zhihu.com/p/54693391

import numpy as np


#基于矩阵分解的结果,复原矩阵
def rebuildMatrix(U, sigma, V):
    a = np.dot(U, sigma)
    a = np.dot(a, np.transpose(V))
    return a


#基于特征值的大小,对特征值以及特征向量进行排序。倒序排列
def sortByEigenValue(Eigenvalues, EigenVectors):
    index = np.argsort(-1 * Eigenvalues)
    Eigenvalues = Eigenvalues[index]
    EigenVectors = EigenVectors[:, index]
    return Eigenvalues, EigenVectors


#对一个矩阵进行奇异值分解
def SVD(matrixA, NumOfLeft=None):
    #NumOfLeft是要保留的奇异值的个数,也就是中间那个方阵的宽度
    #首先求transpose(A)*A
    matrixAT_matrixA = np.dot(np.transpose(matrixA), matrixA)
    #然后求右奇异向量
    lambda_V, X_V = np.linalg.eig(matrixAT_matrixA)
    lambda_V, X_V = sortByEigenValue(lambda_V, X_V)
    #求奇异值
    sigmas = lambda_V
    sigmas = list(map(lambda x: np.sqrt(x)
                      if x > 0 else 0, sigmas))  #python里很小的数有时候是负数
    sigmas = np.array(sigmas)
    sigmasMatrix = np.diag(sigmas)
    if NumOfLeft == None:
        rankOfSigmasMatrix = len(list(filter(lambda x: x > 0,
                                             sigmas)))  #大于0的特征值的个数
    else:
        rankOfSigmasMatrix = NumOfLeft
    sigmasMatrix = sigmasMatrix[0:rankOfSigmasMatrix, :]  #特征值为0的奇异值就不要了

    #计算右奇异向量
    X_U = np.zeros(
        (matrixA.shape[0], rankOfSigmasMatrix))  #初始化一个右奇异向量矩阵,这里直接进行裁剪
    for i in range(rankOfSigmasMatrix):
        X_U[:, i] = np.transpose(np.dot(matrixA, X_V[:, i]) / sigmas[i])

    #对右奇异向量和奇异值矩阵进行裁剪
    X_V = X_V[:, 0:NumOfLeft]
    sigmasMatrix = sigmasMatrix[0:rankOfSigmasMatrix, 0:rankOfSigmasMatrix]
    #print(rebuildMatrix(X_U, sigmasMatrix, X_V))

    return X_U, sigmasMatrix, X_V

        下面是SVD进图像进行压缩的实践:

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(18, 4))
im = plt.imread("./demo.jpg")
ks = [800, 500, 200, 100, 50, 10, 5]        # 分别截取不同的 k
for idx, k in enumerate(ks):
    svd_image = []
    for ch in range(3):                     # 注意,有RGB三个维度,每个维度对应一个矩阵做SVD分解
        im_ch = im[:, :, ch]
        U, D, VT = np.linalg.svd(im_ch)
        imx = np.matmul(np.matmul(U[:, :k], np.diag(D[:k])), VT[:k, :])
        # 将像素值约束到合理范围
        imx = np.where(imx<0, 0, imx)
        imx = np.where(imx>255, 255, imx)
        svd_image.append(imx.astype('uint8'))
    img = np.stack((svd_image[0], svd_image[1], svd_image[2]), 2)
    plt.subplot(1, len(ks), idx+1)
    plt.imshow(img)
    plt.axis('off')
    plt.title("k="+str(k))
矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)

小结文章来源地址https://www.toymoban.com/news/detail-472436.html

  1. 任意一个 m × n m \times n m×n 矩阵,都可以表示为三个矩阵的乘积(因子分解)形式,分别是 m m m正交矩阵,由降序排列的非负的对角线元素组成的 m m m x n n n 矩形对角矩阵,和 n n n正交矩阵,称为该矩阵的奇异值分解。矩阵的奇异值分解一定存在,但不唯一。
  2. 奇异值分解可以看作是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。
  3. 奇异值分解有明确的几何解释。奇异值分解对应三个连续的线性变换:一个旋转变换,一个缩放变换和另一个旋转变换第一个和第三个旋转变换分别基于空间的标准正交基进行。
  4. 奇异值分解包括紧奇异值分解和截断奇异值分解。紧奇异值分解是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解。

参考

  • 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用:https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
  • 奇异值分解(SVD)的定义、证明、求法(矩阵分解——3. 奇异值分解(SVD)):https://zhuanlan.zhihu.com/p/399547902
  • 奇异值分解的揭秘(一):矩阵的奇异值分解过程:https://zhuanlan.zhihu.com/p/26306568
  • 奇异值分解(SVD)原理与在降维中的应用:https://www.cnblogs.com/pinard/p/6251584.html

到了这里,关于矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矩阵的谱分解 (详细推导步骤~~~特征值分解特征向量

           所谓矩阵的分解,就是将一个矩阵写成结构比较简单的或性质比较熟悉的另一些矩阵的乘积。矩阵的分解方法有很多种,包括三角分解、QR(正交三角)分解、最大秩分解、奇异值分解和谱分解,所有这些分解在数值代数和最优化问题的解法中都扮演着十分重要的角

    2024年02月05日
    浏览(20)
  • 线性代数高级--二次型--特征值与特征向量--特征值分解--多元函数的泰勒展开

    目录 二次型 概念 示例   性质和特点 特征值与特征向量 概念 示例  注意  性质和特点  特征值分解 注意 多元函数的泰勒展开  回顾一元函数泰勒展开  多元函数的泰勒展开 概念 二次型是一个关于向量的二次多项式,通常用矩阵表示。 考虑一个n维向量x = [x₁, x₂, ...,

    2024年02月11日
    浏览(17)
  • 机器学习——奇异值分解二(特征分解+SVD纯理解,头疼系列)

    特征值和特征向量的定义 抄来的:奇异值分解 困惑1:特征值和特征向量,和原矩阵是怎样的关系,需要一个栗子进行更具象的认识 困惑2:为什么多个特征向量组合成的矩阵,可以构成矩阵A的特征分解?需要推导 困惑3:为什么要特征向量标准化? 困惑4:标准正交基是什么

    2024年02月07日
    浏览(23)
  • Python实现矩阵奇异值分解(SVD)

    Python实现矩阵奇异值分解(SVD) 矩阵奇异值分解(Singular Value Decomposition, SVD)是一种重要的矩阵分解方法,可以将一个矩阵分解成三个矩阵的乘积,即 A = U Σ V T A=USigma V^{T} A = U Σ

    2024年02月10日
    浏览(15)
  • 特征值和特征向量的解析解法--带有重复特征值的矩阵

    当一个矩阵具有重复的特征值时,意味着存在多个线性无关的特征向量对应于相同的特征值。这种情况下,我们称矩阵具有重复特征值。 考虑一个n×n的矩阵A,假设它有一个重复的特征值λ,即λ是特征值方程det(A-λI) = 0的多重根。我们需要找到与特征值λ相关的特征向量。 首

    2024年02月05日
    浏览(15)
  • 线性代数|证明:矩阵特征值的倒数是其逆矩阵的特征值

    性质 1 若 λ lambda λ 是 A boldsymbol{A} A 的特征值,当 A boldsymbol{A} A 可逆时, 1 λ frac{1}{lambda} λ 1 ​ 是 A − 1 boldsymbol{A}^{-1} A − 1 的特征值。 证明 因为 λ lambda λ 是 A boldsymbol{A} A 的特征值,所以有 p ≠ 0 boldsymbol{p} ne 0 p  = 0 使 A p = λ p boldsymbol{A} boldsymbol{p} = lambda

    2024年02月08日
    浏览(19)
  • 机器学习实战:Python基于SVD奇异值分解进行矩阵分解(八)

    1.1 奇异值分解 奇异值分解( Singular Value Decomposition,SVD )是一种重要的矩阵分解技术,它可以将一个矩阵分解为三个矩阵的乘积,分别为左奇异矩阵、奇异值矩阵和右奇异矩阵。SVD 的原理可以描述如下: 对于任意 m × n m times n m × n 的矩阵 A A A ,它的 SVD 分解为: A = U $

    2024年02月02日
    浏览(25)
  • 【线性代数/机器学习】矩阵的奇异值与奇异值分解(SVD)

    我们知道,对于一个 n × n ntimes n n × n 的矩阵 A A A ,如果 A A A 有 n n n 个线性无关的特征向量,则 A A A 可以相似对角化,即存在可逆矩阵 P P P 使得 A = P Λ P − 1 A=PLambda P^{-1} A = P Λ P − 1 ,其中 Λ Lambda Λ 是 A A A 的特征值组成的对角阵。 P P P 的列实际上就是 A A A 的特征向

    2024年02月10日
    浏览(15)
  • 【问题证明】矩阵方程化为特征值方程求得的特征值为什么是全部特征值?不会丢解吗?

    这个问题困扰了我好久,一直感觉如果有其他的特征值没法证伪,不过一直存在思想的层面,没有实际解决,今天突然想到动笔来解决,遂得解,证明如下。 这个证明看似证明过后很直观,但实际上思维走向了牛角尖的时候光靠思考是无法得出令人信服的结论的,唯有实际动

    2024年02月05日
    浏览(22)
  • 《数值分析》-3-特征值与特征矩阵

    搜索技术的很多方面的知识发现都依赖于特征值或奇异值问题,涉及到特征值计算问题。 计算特征值没有直接的方法。 定位特征值的计算方法基于幂迭代的思想,这是求解特征值的一类迭代方法。该思想的一个复杂版本被称为QR算法,是确定典型矩阵所有特征值的一般方法。

    2024年02月08日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包