SVD分解详解

一、先验知识

1.1 特征值与特征向量

  首先,不要把这两个东西搞的太高深。本质上来说,特征值和特征向量是矩阵的两个固有属性。 接下来进行详细理解,我们知道,矩阵乘法是对应了一个变换,就是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。总结就是,特征向量指代了矩阵变换的方向,特征值指代了矩阵变换沿特征向量方向上的的伸缩倍数(权重)。

  接下来看其物理含义,也就是运动的图景:特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定,伸缩方向由特征向量确定。特征值大于1,所有属于此特征值的特征向量伸长;特征值大于0小于1,特征向量缩短;特征值小于0,特征向量反向伸缩。

  • 举例:现在我们有这样一个矩阵
    M = ( 4 0 0 1 ) \mathrm{M}=\left(\begin{array}{cc}4&0\\0&1\end{array}\right) M=(4001)
  • 实际上 M 经过如下的线性变换:
    ( 4 0 0 1 ) ( x y ) = ( 4 x y ) \left(\begin{array}{cc}4&0\\0&1\end{array}\right)\left(\begin{array}{c}\mathrm{x}\\\mathrm{y}\end{array}\right)=\left(\begin{array}{c}4\mathrm{x}\\\mathrm{y}\end{array}\right) (4001)(xy)=(4xy)
  • 图示如下:因为M是对称矩阵,所以它的变换是沿x,y轴方向进行伸缩。(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时拉长, 当值<1时缩短)
    在这里插入图片描述
  • 当矩阵不是对称的时候, 假如说矩阵是下面的样子:
    M = ( 1 1 0 1 ) \mathrm M=\left(\begin{array}{cc}1&1\\0&1\end{array}\right) M=(1011)
  • 图示如下:变换主要沿着红色AC进行,因为它的线性变换为:
    ( 1 1 0 1 ) ( x y ) = ( x + y y ) \left(\begin{array}{cc}1&1\\0&1\end{array}\right)\left(\begin{array}{c}\mathrm{x}\\\mathrm{y}\end{array}\right)=\left(\begin{array}{c}\mathrm{x+y}\\\mathrm{y}\end{array}\right) (1011)(xy)=(x+yy)
    在这里插入图片描述
  • 细心的同学就会发现,这些变换方向就是由特征向量表示的。我们通过以上图示可以发现,变换其实是将原图形中每一个点的坐标都进行变换。从线性变换的表达式中我们可以看出来它们的变换主要沿着一些方向进行。(比如从x --> x+y,y --> y)

1.2 特征值分解

  特征值分解(Eigenvalue Decomposition)是线性代数中的一种矩阵分解技术。它将一个方阵分解为其特征向量和特征值的组合形式。这种分解在各种应用中非常有用,包括数据分析、机器学习和物理学等领域。

1.2.1 特征值分解的定义

  对于一个 nxn \text{nxn} nxn 的方阵 A \text{A} A,如果 A \text{A} A可以分解为 A = P D P − 1 A=PDP^{-1} A=PDP1,其中 P \text{P} P是由 A \text{A} A 的特征向量构成的矩阵, D \text{D} D 是对角矩阵,对角线上是 A \text{A} A 的特征值,那么 A \text{A} A 的特征值分解就存在。

  • A \text{A} A nxn \text{nxn} nxn的方阵。
  • P \text{P} P 是一个 nxn \text{nxn} nxn的矩阵,每一列都是 A \text{A} A 的一个特征向量。
  • D \text{D} D 是一个 nxn \text{nxn} nxn 的对角矩阵,对角线上的元素是 A \text{A} A 的特征值。

1.2.2 特征值分解的步骤

  假设 A \text{A} A 是一个 nxn \text{nxn} nxn 的方阵,特征值分解的步骤如下:

  1. 求特征值:计算 A \text{A} A 的特征值。
  2. 求特征向量:对于每个特征值,计算对应的特征向量。
  3. 构造矩阵 P \text{P} P:将特征向量按列排列构成矩阵 P \text{P} P
  4. 构造矩阵 D \text{D} D:将特征值放在对角线上构成对角矩阵 D \text{D} D
  5. 验证分解:验证 A = P D P − 1 A=PDP^{-1} A=PDP1是否成立。
  • 总结一下, 特征值分解可以得到特征值与特征向量,特征值表示的是这个特征的重要程度, 而特征向量表示这个特征是什么。不过, 特征值分解也有很多的局限, 比如说变换的矩阵必须是方阵。如果A不是方阵,即行和列不相同时,就不能用这种方法对矩阵进行分解,由此引入奇异值分解(SVD)的概念。

二、奇异值(SVD)分解

  奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解技术,广泛应用于信号处理、统计学、机器学习等领域。SVD 分解能够将一个任意的矩阵分解为三个特定的矩阵的乘积,从而揭示原始矩阵的许多重要性质。

2.1 定义

  对于任意一个 mxn \text{mxn} mxn 的矩阵 A \text{A} A,SVD 分解表示为:

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

  • U \text{U} U 是一个 mxn \text{mxn} mxn 的正交矩阵。
  • Σ \Sigma Σ 是一个 mxn \text{mxn} mxn 的对角矩阵,对角线上是 A \text{A} A 的奇异值,其他元素为零。
  • V \text{V} V 是一个 mxn \text{mxn} mxn 的正交矩阵, V T V^T VT V V V 的转置。

2.2 步骤

  1. 计算 A T A A^TA ATA A A T AA^{T} AAT

    • 计算 A T A A^TA ATA A A T AA^{T} AAT这两个矩阵,它们分别是 nxm \text{nxm} nxm mxn \text{mxn} mxn 的对称矩阵。
  2. 计算特征值和特征向量

    • 计算 A T A A^TA ATA 的特征值和特征向量,特征向量构成矩阵 V V V,特征值的平方根构成奇异值。
    • 计算 A A T AA^{T} AAT 的特征值和特征向量,特征向量构成矩阵 U U U
  3. 构造奇异值矩阵 Σ \Sigma Σ

    • 将特征值的平方根按降序排列构成对角矩阵 Σ \Sigma Σ,如果 m > n m > n m>n,则 Σ \Sigma Σ 是一个 mxn \text{mxn} mxn 的矩阵。

2.3 示例

假设我们有一个 2 x 2 的矩阵:

A = ( 1 0 0 1 ) A = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} A=(1001)

  • 第一步:计算 A T A A^TA ATA A A T AA^{T} AAT

A T A = ( 1 0 0 1 ) ( 1 0 0 1 ) = ( 1 0 0 1 ) A^TA = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} ATA=(1001)(1001)=(1001)

A A T = ( 1 0 0 1 ) ( 1 0 0 1 ) = ( 1 0 0 1 ) AA^T = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} AAT=(1001)(1001)=(1001)

  • 第二步:计算特征值和特征向量

   A T A A^TA ATA 的特征值是 ( 1, 1 ),特征向量是标准正交基 e 1 = ( 1 0 ) , e 2 = ( 0 1 ) e_1=\begin{pmatrix}1\\0\end{pmatrix},e_2=\begin{pmatrix}0\\1\end{pmatrix} e1=(10),e2=(01).
   A A T AA^{T} AAT 的特征值是 ( 1, 1 ),特征向量是标准正交基 e 1 = ( 1 0 ) , e 2 = ( 0 1 ) e_1=\begin{pmatrix}1\\0\end{pmatrix},e_2=\begin{pmatrix}0\\1\end{pmatrix} e1=(10),e2=(01).

  因此,矩阵 V V V U U U 都是单位矩阵:

V = ( 1 0 0 1 ) , U = ( 1 0 0 1 ) V = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} ,U = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} V=(1001)U=(1001)

  • 第三步:构造奇异值矩阵 Σ \Sigma Σ

  奇异值是特征值的平方根,因此奇异值矩阵 Σ \Sigma Σ为:

Σ = ( 1 0 0 1 ) \Sigma = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} Σ=(1001)

  • 验证 SVD 分解

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

A = ( 1 0 0 1 ) = ( 1 0 0 1 ) ( 1 0 0 1 ) ( 1 0 0 1 ) A = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} A=(1001)=(1001)(1001)(1001)

  通过这种方式,SVD 分解成功。这个例子比较简单,但它展示了 SVD 分解的基本过程。在实际应用中,矩阵 A \text{A} A 可能更复杂,但步骤是类似的。


三、MATLAB仿真

  在MATLAB中实现奇异值分解(SVD)非常简单,因为MATLAB内置了用于计算SVD的函数。下面是一个基本的MATLAB示例,演示如何对一个矩阵进行SVD分解:

% 定义一个示例矩阵
A = [4 11 14; 8 7 -2];

% 对矩阵A进行奇异值分解
[U, S, V] = svd(A);

% U 是左奇异向量矩阵,S 是奇异值对角矩阵,V 是右奇异向量矩阵
disp('左奇异向量 U:');
disp(U);

disp('奇异值对角矩阵 S:');
disp(S);

disp('右奇异向量 V:');
disp(V);

% 验证分解
disp('验证 A = U * S * V'');
disp(U * S * V');

四、应用及优势

  奇异值分解(SVD)是一种非常强大和广泛应用的矩阵分解技术.

  1. 降维和特征提取

    • SVD 可以用于降低数据的维度,通过保留最重要的奇异值和对应的奇异向量,来实现数据的压缩和特征提取。这在数据挖掘、图像处理和模式识别等领域特别有用。
  2. 推荐系统

    • 在推荐系统中,可以使用 SVD 对用户-物品评分矩阵进行分解,以发现潜在的用户偏好和物品特征,从而进行个性化推荐。
  3. 图像压缩

    • 在图像处理中,SVD 可以用于压缩图像数据,同时保留主要的图像特征。这种应用常见于JPEG等图像压缩算法中。
  4. 信号处理

    • SVD 可以应用于信号处理领域,例如噪声滤波、信号恢复和分解。
  5. 矩阵逆和伪逆

    • SVD 可以用来计算矩阵的逆和伪逆,尤其在矩阵不可逆或接近奇异的情况下特别有用。
  6. 主成分分析(PCA)

    • PCA 可以通过 SVD 实现,用于探索数据中的主要变化模式,有助于理解和可视化高维数据。
  7. 数值稳定性

    • SVD 在数值计算中通常比其他矩阵分解方法(如特征值分解)更稳定和可靠,尤其是在处理病态(ill-conditioned)矩阵时。
  8. 全局最优

    • SVD 提供了一种全局最优的分解方式,能够精确地表示原始矩阵,不受初始条件或算法参数的影响。
  9. 多功能性

    • SVD 不仅适用于方阵,还可以处理任意大小和形状的矩阵,因此适用范围非常广泛。
  10. 信息保留

    • SVD 分解保留了原始矩阵的重要信息,通过选择适当数量的奇异值,可以实现数据的有效压缩和降维,同时保留关键特征。

  总体来说,奇异值分解(SVD)因其稳定性、全局最优性和多功能性,在多个领域的数据分析、模型建立和优化等方面都具有重要的应用和优势。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值