矩阵的奇异值分解

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


注:本博文为本人阅读论文、文章后的原创笔记,未经授权不允许任何转载或商用行为,否则一经发现本人保留追责权利。有问题可留言联系,欢迎指摘批评,共同进步!!!

1. 前言

假设矩阵 A \mathbf{A} A是一个 M × N M \times N M×N大小的矩阵。对其进行奇异值分解后可以得到:
A ( m × n ) = U ( m × m ) Σ ( m × n ) V ( n × n ) T \mathbf{A_{(m \times n)} = U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}} A(m×n)=U(m×m)Σ(m×n)V(n×n)T
其中矩阵 Σ \mathbf{\Sigma} Σ是准对角矩阵,其对角元素就是奇异值。矩阵 U \mathbf{U} U V \mathbf{V} V都是酉矩阵,一条重要的性质就是,其列向量都是两两正交的单位向量(模为1,对应相乘等于0).

2. 数值计算

在计算时,首先我们考虑计算矩阵 V \mathbf{V} V和准对角阵 Σ : \mathbf{\Sigma}: Σ:

  1. 首先计算 A T A \mathbf{A^TA} ATA,因为已知矩阵 A \mathbf{A} A大小为 M × N M \times N M×N,因此 A T A \mathbf{A^TA} ATA是大小为 N × N N \times N N×N方阵,可以进行特征分解,求得 N N N个特征值 λ i ( i = 1 , . . . , N ) \lambda_i(i = 1, ..., N) λi(i=1,...,N)单位化的特征向量 α i ( i = 1 , . . . , N ) \bm{\alpha_i}(i = 1, ..., N) αi(i=1,...,N).
  2. 因此,矩阵 V \mathbf{V} V和准对角阵 Σ \mathbf{\Sigma} Σ可以得到为:
    V = ( α 1   α 2   ⋯   α N ) Σ = ( λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ N ) \begin{aligned} \mathbf{V} &= (\bm{\alpha_1\ \alpha_2\ \cdots\ \alpha_N}) \\ \mathbf{\Sigma} &= \begin{pmatrix} \sqrt{\lambda_1} & 0 & \cdots & 0\\ 0 & \sqrt{\lambda_2} & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & \sqrt{\lambda_N} \end{pmatrix} \end{aligned} VΣ=(α1 α2  αN)= λ1 000λ2 000λN

注意:矩阵 Σ \mathbf{\Sigma} Σ不一定是方阵,但是也是只有主对角线上有值,其余填0即可;
另外,矩阵 Σ \mathbf{\Sigma} Σ和矩阵 V \mathbf{V} V中的元素一定要以特征值-特征向量对应书写,顺序不可错乱。

计算矩阵 U \mathbf{U} U

  1. 计算 A A T \mathbf{AA^T} AAT,因为已知矩阵 A \mathbf{A} A大小为 M × N M \times N M×N,因此 A A T \mathbf{AA^T} AAT是大小为 M × M M \times M M×M方阵,可以进行特征分解,求得 M M M个特征值 γ i ( i = 1 , . . . , M ) \gamma_i(i = 1, ..., M) γi(i=1,...,M)单位化的特征向量 θ i ( i = 1 , . . . , M ) \bm{\theta_i}(i = 1, ..., M) θi(i=1,...,M). 由此,我们可以确定,矩阵 U \mathbf{U} U是由 M M M个单位特征向量组成的,但是向量的排列顺序还不确定,接下来就是要确定这件事;

∵ V 是正交矩阵 ∴ V T = V − 1 ⇒ A = U Σ V − 1 ⇒ A V = U Σ \begin{aligned} \because \mathbf{V}是正交矩阵 \\ \therefore \mathbf{V^T} = \mathbf{V^{-1}} \\ \Rightarrow \mathbf{A} = \mathbf{U \Sigma V^{-1}}\\ \Rightarrow \mathbf{AV} = \mathbf{U \Sigma} \end{aligned} V是正交矩阵VT=V1A=V1AV=

  1. 计算出矩阵 A V \mathbf{AV} AV,再由于矩阵 Σ \mathbf{\Sigma} Σ只有主对角线上有元素,可以根据简单的除法,对应计算出矩阵 U \mathbf{U} U中前几列对应的元素。由此可以确定特征向量在矩阵 U \mathbf{U} U中的对应位置关系,然后写出矩阵 U \mathbf{U} U.
  2. A = U Σ V T \mathbf{A = U \Sigma V^{T}} A=VT(一定要记得矩阵 V \mathbf{V} V最后还有个转置运算)

3. 奇异值分解的原理

在上述数值计算过程中有一个问题,就是为什么矩阵 A T A \mathbf{A^TA} ATA的特征向量就组成矩阵 V \mathbf{V} V,特征值组成矩阵 Σ \mathbf{\Sigma} Σ,而矩阵 A A T \mathbf{AA^T} AAT的特征向量组成矩阵 U \mathbf{U} U呢?接下来就解释这个问题:

  1. 为什么矩阵 A T A \mathbf{A^TA} ATA的特征向量就组成矩阵 V \mathbf{V} V,特征值开根号组成矩阵 Σ \mathbf{\Sigma} Σ
    A = U Σ V T A T = V Σ T U T = V Σ T U − 1 ( 因为 U 是正交阵 ) ⇒ A T A = V Σ T U − 1 U Σ V T = V Σ 2 V − 1 ⇒ ( A T A ) V = V Σ 2 \mathbf{A = U \Sigma V^T}\\ \mathbf{A^T = V \Sigma^T U^T}=\mathbf{V \Sigma^T U^{-1}}(因为\mathbf{U}是正交阵)\\ \Rightarrow \mathbf{A^TA} = \mathbf{V \Sigma^T U^{-1} U \Sigma V^T} = \mathbf{V \Sigma^2 V^{-1}}\\ \Rightarrow (\mathbf{A^TA})\mathbf{V} = \mathbf{V \Sigma^2} A=VTAT=VΣTUT=VΣTU1(因为U是正交阵)ATA=VΣTU1VT=VΣ2V1(ATA)V=VΣ2
    由此可以看到,矩阵 V \mathbf{V} V中包含的列向量实际上就是矩阵 ( A T A ) (\mathbf{A^TA}) (ATA)的特征向量,而矩阵 Σ \mathbf{\Sigma} Σ中的对角值,就是矩阵 ( A T A ) (\mathbf{A^TA}) (ATA) 特征值 \sqrt{特征值} 特征值 .

  2. 为什么矩阵 A A T \mathbf{AA^T} AAT的特征向量组成矩阵 U \mathbf{U} U呢?
    显然,这个问题和上面同理。

4. 例题

矩阵的奇异值计算例题,数理基础,矩阵,算法,线性代数
矩阵的奇异值计算例题,数理基础,矩阵,算法,线性代数

5. 奇异值分解的几何含义

5.1 数据的线性变换——拉伸

例如,有一组数据 D \mathbf{D} D D \mathbf{D} D表示为如下的矩阵:
D = [ x 1 x 2 x 3 x 4 y 1 y 2 y 3 y 4 ] \mathbf{D} = \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix} D=[x1y1x2y2x3y3x4y4]
有一矩阵 S = [ 2 0 0 1 ] \mathbf{S}=\begin{bmatrix} 2 & 0\\ 0 & 1 \end{bmatrix} S=[2001]作用在该数据矩阵 D \mathbf{D} D上,可以得到:
S D = [ 2 0 0 1 ] [ x 1 x 2 x 3 x 4 y 1 y 2 y 3 y 4 ] = [ 2 x 1 2 x 2 2 x 3 2 x 4 y 1 y 2 y 3 y 4 ] \mathbf{SD} = \begin{bmatrix} 2 & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix}= \begin{bmatrix} 2x_1 & 2x_2 & 2x_3 & 2x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix} SD=[2001][x1y1x2y2x3y3x4y4]=[2x1y12x2y22x3y32x4y4]

这是矩阵运算中一条重要的性质:矩阵 S \mathbf{S} S是由 2 × 2 2 \times 2 2×2大小单位矩阵经由初等变化而来的,当数据矩阵 D \mathbf{D} D左乘上一个单位矩阵的初等变换等于对 D \mathbf{D} D进行对应的行变换

  • 矩阵 D \mathbf{D} D左乘一个 S \mathbf{S} S相当于将基底由默认的 [ 1 0 ] \begin{bmatrix} 1\\ 0 \end{bmatrix} [10] [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01]换为了 [ 2 0 ] \begin{bmatrix} 2\\ 0 \end{bmatrix} [20] [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01](即矩阵 S \mathbf{S} S的列向量),所以数据进行了拉伸

5.2 数据的线性变换——旋转

换作一矩阵 R = [ c o s ( θ ) − s i n ( θ ) s i n ( θ ) c o s ( θ ) ] \mathbf{R} = \begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix} R=[cos(θ)sin(θ)sin(θ)cos(θ)] 作用与数据矩阵 D \mathbf{D} D上( D \mathbf{D} D左乘 R \mathbf{R} R),可得:
R D = [ c o s ( θ ) − s i n ( θ ) s i n ( θ ) c o s ( θ ) ] [ x 1 x 2 x 3 x 4 y 1 y 2 y 3 y 4 ] \mathbf{RD} = \begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix} \begin{bmatrix} x_1 & x_2 & x_3 & x_4\\ y_1 & y_2 & y_3 & y_4 \end{bmatrix} RD=[cos(θ)sin(θ)sin(θ)cos(θ)][x1y1x2y2x3y3x4y4]

  • 同理,矩阵 D \mathbf{D} D左乘一个 R \mathbf{R} R相当于将基底由默认的 [ 1 0 ] \begin{bmatrix} 1\\ 0 \end{bmatrix} [10] [ 0 1 ] \begin{bmatrix} 0\\ 1 \end{bmatrix} [01]换为了 [ c o s ( θ ) s i n ( θ ) ] \begin{bmatrix} cos(\theta)\\ sin(\theta) \end{bmatrix} [cos(θ)sin(θ)] [ − s i n ( θ ) c o s ( θ ) ] \begin{bmatrix} -sin(\theta)\\ cos(\theta) \end{bmatrix} [sin(θ)cos(θ)](即矩阵 R \mathbf{R} R的列向量),显然与原基底相比,作用后的基底逆时针旋转了 θ \theta θ角度。相应地,数据点也是逆时针旋转 θ \theta θ角度。

5.3 奇异值分解的几何意义

观察矩阵奇异值分解的形式:
A ( m × n ) = U ( m × m ) Σ ( m × n ) V ( n × n ) T \mathbf{A_{(m \times n)} = U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}} A(m×n)=U(m×m)Σ(m×n)V(n×n)T
由前面的介绍可以知道,矩阵 U \mathbf{U} U和矩阵 V \mathbf{V} V都是酉矩阵。而酉矩阵有如下性质:

若矩阵 A \mathbf{A} A为酉矩阵,则

  • 性质1: A H A = E \mathbf{A^HA=E} AHA=E A A H = E \mathbf{AA^H=E} AAH=E,即表明酉矩阵行与行、列与列之间都是正交的,且各行、各列都是单位向量
  • 性质2: A H = A − 1 \mathbf{A^H=A^{-1}} AH=A1且共轭转置矩阵和逆矩阵也都是酉矩阵

因此矩阵 U \mathbf{U} U和矩阵 V T \mathbf{V^T} VT的每一列都是单位向量,且列与列之间相互正交,可以代表旋转变换的基底;矩阵 Σ \mathbf{\Sigma} Σ只有主对角线上有 元素,可以代表拉伸(或收缩变换的基底。

实际上,单位正交矩阵就可以看做是一组旋转变换的基底;对角矩阵可以看做是拉伸变换的基底。

因此,但任意的矩阵 A \mathbf{A} A作用于数据矩阵时,相当于将数据坐标点先进行旋转变换,再进行拉伸变换,最后再进行一次旋转变换。对于任意一个给定的变换 A \mathbf{A} A,都可以拆解成一个旋转、伸缩、再旋转的变换。奇异值本身的数值,代表了单位超球体经变换后成为的超椭球体的每条半轴的长度。

6. 奇异值分解的应用价值

假设矩阵 A \mathbf{A} A的奇异值分解为:
A ( m × n ) = U ( m × m ) Σ ( m × n ) V ( n × n ) T = [ u 1 u 2 ⋯ u m ] [ λ 1 1 2 λ 2 1 2 ⋯ ] [ v 1 T v 2 T ⋮ v n T ] \begin{aligned} \mathbf{A_{(m \times n)}} &= \mathbf{U_{(m \times m)} \Sigma_{(m \times n)} V^T_{(n \times n)}}\\ &= \begin{bmatrix} \mathbf{u_1} & \mathbf{u_2} & \cdots & \mathbf{u_m} \end{bmatrix} \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & \\ & \lambda_2^{\frac{1}{2}} & \\ & & \cdots \end{bmatrix} \begin{bmatrix} \mathbf{v^T_1}\\ \mathbf{v^T_2}\\ \vdots \\ \mathbf{v^T_n} \end{bmatrix} \end{aligned} A(m×n)=U(m×m)Σ(m×n)V(n×n)T=[u1u2um] λ121λ221 v1Tv2TvnT
此处 u i \mathbf{u_i} ui v i \mathbf{v_i} vi均为列向量(秩一矩阵), Σ \mathbf{\Sigma} Σ矩阵中存储的奇异值 λ i 1 2 \lambda^{\frac{1}{2}}_i λi21按照由大到小的顺序对角排列: λ 1 > λ 2 > ⋯ > λ m i n ( m × n ) \lambda_1 > \lambda_2 > \cdots > \lambda_{min(m \times n)} λ1>λ2>>λmin(m×n)
如下图运算步骤所示,我们实际上可以将矩阵 A \mathbf{A} A的奇异值分解再写为众多的秩一矩阵积的和的形式:
矩阵的奇异值计算例题,数理基础,矩阵,算法,线性代数
即,矩阵 A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ r u r v r T \mathbf{A}=\sigma_1\mathbf{u_1}\mathbf{v^T_1}+\sigma_2\mathbf{u_2}\mathbf{v^T_2}+\cdots+\sigma_r\mathbf{u_r}\mathbf{v^T_r} A=σ1u1v1T+σ2u2v2T++σrurvrT(r表示矩阵 Σ \mathbf{\Sigma} Σ的秩)。奇异值往往代表着矩阵中隐含信息的重要程度,奇异值越大,信息越重要。因此,可以根据奇异值分解来进行数据压缩例如,矩阵 A \mathbf{A} A代表一张高清图片,但是碍于存储大小的限制,需要对图片进行压缩,那么我们就可以对图像矩阵 A \mathbf{A} A进行奇异值分解,然后仅保留分解后奇异值大的 k k k k < < r k << r k<<r)个部分,构成一个新的图片矩阵 A ′ \mathbf{A'} A即: A ′ = σ 1 u 1 v 1 T + ⋯ + σ k u k v k T \mathbf{A'}=\sigma_1\mathbf{u_1}\mathbf{v^T_1}+\cdots+\sigma_k\mathbf{u_k}\mathbf{v^T_k} A=σ1u1v1T++σkukvkT。此时即完成了对图片的压缩。

有趣的性质:
由于矩阵 U \mathbf{U} U V \mathbf{V} V都是满秩的,所以原矩阵 A \mathbf{A} A和对角阵 Σ \mathbf{\Sigma} Σ的秩相同,因此,想要求原矩阵 A \mathbf{A} A的秩,那么只要对A进行奇异值分解,然后数一数奇异值的个数就可以了。文章来源地址https://www.toymoban.com/news/detail-784050.html

7. 相关资料

  1. 相关讲解视频:
    1. 矩阵的【奇异值分解】(SVD),图像压缩
    2. 【学长小课堂】什么是奇异值分解SVD–SVD如何分解时空矩阵
  2. 相关讲解内容专栏:
    知乎回答

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

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

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

相关文章

  • 一分钟读懂:矩阵的特征值分解、奇异值分解和伪逆矩阵

    通过把矩阵运算分解成多个矩阵的乘法,可以简化矩阵运算,也可发现对应线性变换的一些内在规律和特性。根据不同的目的,有不同的分解策略。本文我们讨论最常用的特征值分解和奇异值分解。 定义了矩阵的加、减、乘、除(逆)运算后,数学家们自然希望探索矩阵更多

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

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

    2024年02月10日
    浏览(42)
  • 矩阵篇(五)-- 特征值分解(EVD)和奇异值分解(SVD)

            设 A n × n A_{n times n} A n × n ​ 有 n n n 个线性无关的特征向量 x 1 , … , x n boldsymbol{x}_{1}, ldots, boldsymbol{x}_{n} x 1 ​ , … , x n ​ ,对应特征值分别为 λ 1 , … , λ n lambda_{1}, ldots, lambda_{n} λ 1 ​ , … , λ n ​ A [ x 1 ⋯ x n ] = [ λ 1 x 1 ⋯ λ n x n ] Aleft[begin{array}{lll

    2024年02月08日
    浏览(49)
  • 机器学习实战: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日
    浏览(56)
  • 奇异值分解与矩阵逆:数值实现与优化

    奇异值分解(Singular Value Decomposition, SVD)和矩阵逆(Matrix Inverse)是线性代数和数值分析领域中非常重要的概念和方法。这两者在现实生活中的应用非常广泛,例如图像处理、信号处理、数据挖掘、机器学习等领域。在这篇文章中,我们将从以下几个方面进行深入的讨论: 背景介绍

    2024年04月12日
    浏览(31)
  • 【Python】scipy稀疏矩阵的奇异值分解svds

    当 A A A 是方阵时,可以很容易地进行特征分解: A = W Σ W − 1 A=WSigma W^{-1} A = W Σ W − 1 ,其中 Σ Sigma Σ 是 A A A 的特征值组成的对角矩阵。如果 W W W 由标准正交基组成,则 W − 1 = W T W^{-1}=W^T W − 1 = W T ,特征分解可进一步写成 W T Σ W W^TSigma W W T Σ W 。 然而,当 A A A 不是方

    2024年02月12日
    浏览(39)
  • 矩阵分解是计算机科学中的一个重要研究领域,涉及到向量空间理论、线性代数、密码学等领域。以下是100篇热门博客文

    作者:禅与计算机程序设计艺术 矩阵分解是计算机科学中的一个重要研究领域,涉及到向量空间理论、线性代数、密码学等领域。在机器学习和深度学习等领域中,矩阵分解被广泛应用。本文将介绍矩阵分解的相关原理、实现步骤以及应用示例。 2.1 基本概念解释 矩阵分解是

    2024年02月15日
    浏览(54)
  • 矩阵:采用奇异值分解(SVD)对n个点进行平面拟合

    奇异值分解(Singular Value Decomposition, SVD),是线性代数中一种重要的矩阵分解,在信号处理、统计学等领域有重要应用。奇异值分解在某些方面与对称矩阵或厄米矩阵基于特征向量的对角化类似。对称矩阵特征向量分解的基础是谱分析,而奇异值分解则是谱分析理论在任意矩

    2023年04月08日
    浏览(36)
  • 特征值与特征向量: 矩阵的奇异值分解与主成分分析

    随着数据量的增加,数据处理和分析变得越来越复杂。在大数据领域,我们需要一种有效的方法来处理高维数据,以便更好地理解数据之间的关系和模式。这就是奇异值分解(Singular Value Decomposition, SVD)和主成分分析(Principal Component Analysis, PCA)发挥作用的地方。在本文中,我们将

    2024年02月19日
    浏览(42)
  • SVD,奇异值分解的计算步骤以及实例讲解

           奇异值分解 (singular value decomposition,SVD),已经成为矩阵计算中最有用和最有效的工具之一,并且在最小二乘问题、最优化、统计分析、信号与图像处理、系统理论与控制等领域得到广泛应用。         首先我们都知道方阵是可以特征值分解的,那么问题来了,如果矩

    2024年02月04日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包